A Swift library that provides an abstraction layer for analytics services, enabling type-safe event logging across multiple providers.
Umbrella is an analytics abstraction layer for Swift that simplifies integrating multiple analytics services into iOS applications. It solves problems like messy code from using multiple SDKs and lack of compiler safety by leveraging Swift enums and associated values to define type-safe events. This approach ensures event definitions are compiler-checked, reducing human errors and improving maintainability.
iOS developers using Swift who need to integrate one or more analytics services (like Firebase, Mixpanel, or Flurry) into their apps and want to avoid stringly-typed event logging. It's particularly useful for teams prioritizing clean architecture and type safety in their codebase.
Developers choose Umbrella because it provides a single, type-safe API to log events to multiple analytics providers simultaneously, eliminating repetitive and error-prone code. Its unique selling point is compiler-enforced event definitions via Swift enums, inspired by Moya's approach to networking, which prevents runtime errors from incorrect event names or parameters.
☂️ Analytics abstraction layer for Swift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Swift enums and associated values to define events, ensuring compile-time checks and reducing human errors, as emphasized in the 'Why?' section to prevent runtime issues.
Logs events to multiple analytics services like Firebase and Mixpanel with a single API call, eliminating code duplication shown in the 'At a Glance' before/after example.
Includes built-in providers for popular services and allows creating custom providers for any analytics SDK, making it adaptable, as detailed in the 'Creating Custom Providers' section.
Inspired by Moya's abstraction pattern, it promotes maintainable and scalable architecture by centralizing event definitions in enums, improving refactoring ease.
Only supports CocoaPods for dependency management, with no mention of Swift Package Manager or Carthage, limiting flexibility for modern Swift projects.
Requires defining all events in an enum and implementing the EventType protocol for each, adding upfront complexity compared to direct SDK usage.
Designed exclusively for iOS with Swift, so it's not suitable for cross-platform development or other programming languages, restricting its use case.