Choose a platform¶
Herald works the same on every platform: the same events, factories, vendors and guides. What differs is the language, how you install it, and the helpers around it.
| Android | iOS | Flutter | React Native | Kotlin Multiplatform | |
|---|---|---|---|---|---|
| Language | Kotlin | Swift | Dart | TypeScript | Kotlin, shared |
| Installed from | Maven Central | Swift Package Manager | pub.dev | npm | Maven Central |
| Needs | Android 6 (API 23) | iOS 15 | Flutter 3.47 | React Native 0.78, React 19 | the Android and iOS SDKs |
| Firebase, Adjust, Mixpanel, AppsFlyer, Amplitude, Meta | yes | yes | yes | yes | through the native SDKs |
| Log, for debug builds | yes | yes | yes | yes | through the native SDKs |
| Fake for tests | herald-testing |
HeraldTesting |
herald_testing |
@herald-analytics/testing |
— |
| Screen views and impressions from the UI | Compose | SwiftUI | Widgets | React | the native helpers |
| API reference | Dokka | Swift Package Index | pub.dev | TypeDoc | — |
Which one?¶
- A native app uses its own platform's SDK.
- A Flutter or React Native app uses that SDK. Each one works over the vendors' Flutter or React Native packages, so it adds no native code of its own.
- An app that shares Kotlin between Android and iOS uses Kotlin Multiplatform for its shared code: events and view models are written once, and each app sets Herald up with its native SDK.
Then follow the quick start for your platform.