philiprehberger/swift-analytics-kit
Unified analytics abstraction with plug-in adapters, schema validation, and debug dashboard
Requirements
- Swift >= 6.0
- macOS 13+ / iOS 16+ / tvOS 16+ / watchOS 9+
Installation
Add to your Package.swift:
dependencies: [
.package(url: "https://github.com/philiprehberger/swift-analytics-kit.git", from: "0.1.0")
]Then add "AnalyticsKit" to your target dependencies:
.target(name: "YourTarget", dependencies: [
.product(name: "AnalyticsKit", package: "swift-analytics-kit")
])Usage
import AnalyticsKit
// Set up analytics with adapters
let analytics = Analytics()
analytics.register([ConsoleAdapter()])
// Track events
analytics.track("button_tapped", properties: ["screen": "home"])
analytics.track(AnalyticsEvent(name: "purchase", properties: ["item": "pro_plan"]))Multiple Adapters
analytics.register([
ConsoleAdapter(), // logs to console
myFirebaseAdapter, // sends to Firebase
myMixpanelAdapter // sends to Mixpanel
])
// All adapters receive every eventUser Properties
analytics.setUser(UserProperties(userId: "user-123", properties: ["plan": "pro"]))
analytics.resetUser() // on logoutEvent Schema Validation
analytics.registerSchema(EventSchema(
eventName: "purchase",
required: ["item", "amount"],
optional: ["currency"]
))
// Events missing required properties will log a warningScreen Tracking (SwiftUI)
struct HomeView: View {
var body: some View {
Text("Home")
.trackScreen("home_screen")
}
}Debug Dashboard (SwiftUI)
AnalyticsDebugDashboard() // Shows recent events in a listDisable Tracking
analytics.setEnabled(false) // e.g. user opted outAPI
Analytics
| Method | Description | |--------|-------------| | register(:) | Register analytics adapters | | track(:) | Track an event | | track(:properties:) | Track a named event with properties | | setUser(:) | Set user identity and properties | | resetUser() | Clear user data | | setEnabled(:) | Enable or disable tracking | | registerSchema(:) | Register an event schema for validation | | recentEvents(limit:) | Get recent tracked events |
AnalyticsAdapter
| Method | Description | |--------|-------------| | track(:) | Track an event | | setUser(:) | Set user properties | | resetUser() | Clear user data | | flush() | Flush queued events |
Development
swift build
swift testSupport
💬 Bluesky · 🐦 X · 💼 LinkedIn · 🌐 Website · 📦 GitHub · ☕ Buy Me a Coffee · ❤️ GitHub Sponsors
License
Package Metadata
Repository: philiprehberger/swift-analytics-kit
Default branch: main
README: README.md