Contents

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 event

User Properties

analytics.setUser(UserProperties(userId: "user-123", properties: ["plan": "pro"]))
analytics.resetUser()  // on logout

Event Schema Validation

analytics.registerSchema(EventSchema(
    eventName: "purchase",
    required: ["item", "amount"],
    optional: ["currency"]
))
// Events missing required properties will log a warning

Screen Tracking (SwiftUI)

struct HomeView: View {
    var body: some View {
        Text("Home")
            .trackScreen("home_screen")
    }
}

Debug Dashboard (SwiftUI)

AnalyticsDebugDashboard()  // Shows recent events in a list

Disable Tracking

analytics.setEnabled(false)  // e.g. user opted out

API

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 test

Support

💬 Bluesky · 🐦 X · 💼 LinkedIn · 🌐 Website · 📦 GitHub · ☕ Buy Me a Coffee · ❤️ GitHub Sponsors

License

MIT

Package Metadata

Repository: philiprehberger/swift-analytics-kit

Default branch: main

README: README.md