Unified analytics abstraction with plug-in adapters, schema validation, and debug dashboard
.package(url: "https://github.com/philiprehberger/swift-analytics-kit.git", from: "0.1.0")Unified analytics abstraction with plug-in adapters, schema validation, and debug dashboard
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")
])
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"]))
analytics.register([
ConsoleAdapter(), // logs to console
myFirebaseAdapter, // sends to Firebase
myMixpanelAdapter // sends to Mixpanel
])
// All adapters receive every event
analytics.setUser(UserProperties(userId: "user-123", properties: ["plan": "pro"]))
analytics.resetUser() // on logout
analytics.registerSchema(EventSchema(
eventName: "purchase",
required: ["item", "amount"],
optional: ["currency"]
))
// Events missing required properties will log a warning
struct HomeView: View {
var body: some View {
Text("Home")
.trackScreen("home_screen")
}
}
AnalyticsDebugDashboard() // Shows recent events in a list
analytics.setEnabled(false) // e.g. user opted out
| 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 |
| Method | Description |
|---|---|
track(_:) | Track an event |
setUser(_:) | Set user properties |
resetUser() | Clear user data |
flush() | Flush queued events |
swift build
swift test
💬 Bluesky · 🐦 X · 💼 LinkedIn · 🌐 Website · 📦 GitHub · ☕ Buy Me a Coffee · ❤️ GitHub Sponsors