Support matrix
Minimum platform versions and current releases for every Reflect SDK. Floors come from the SDK build files themselves and are verified in CI — the docs cannot drift from what the binaries support.
SDK releases and platform floors
| SDK | Current release | Host requirement | Android | iOS |
|---|---|---|---|---|
| Android (native) | 1.0.1 (JitPack) | Kotlin or Java · Java 8 bytecode | minSdk 21 (Android 5.0) | — |
| iOS (native) | tag 1.0.0 (CocoaPods, git source) | Swift 5.0+ or Objective-C · Xcode 15+ | — | iOS 13+ |
| Unity | v2.4.4 (UPM Git URL) | Unity 2021.3+ (LTS) | minSdk 21 (Android 5.0) | iOS 13+ |
| Unreal Engine | tag 1.0.1 (plugin source) | UE 5.8+ · C++ or Blueprint | Android 8.0 (API 26) | iOS 15 or newer |
| Flutter | v1.7.3 (git tag) | Flutter 3.10+ · Dart 3 | minSdk 21 (Android 5.0) | iOS 13+ |
| React Native | v2.0.4 (git tag) | React Native 0.71+ · React 18+ | minSdk 21 (Android 5.0) | iOS 13+ |
| Web | v1.3.0 (git tag / jsDelivr) | Evergreen browsers · ESM, CJS and UMD bundles | — | — |
The Unreal plugin deliberately sets its own mobile floors higher than the shared cores': its Android bridge targets API 26 and its vendored iOS core is compiled at a 15.0 deployment floor, matching what UE 5.8 itself supports. Every other mobile SDK inherits the shared-core floors — Android 5.0 and iOS 13.
Which core each release resolves
Every mobile SDK is a thin wrapper over the same two shared native cores. The wrapper tag pins the core version, so installing a wrapper release fully determines the native code you ship:
| Wrapper release | Android core (JitPack) | iOS core (ReflectCore pod) |
|---|---|---|
Android 1.0.1 | reflect-android:1.1.2 | — |
iOS tag 1.0.1 | — | ~> 1.1 → pin tag 1.1.4 in your Podfile |
Unity v2.4.4 | reflect-android:1.1.2 | tag 1.1.4 (auto-wired at build time) |
Unreal 1.0.1 | reflect-android:1.1.2 | 1.1.2 (vendored source, hash-pinned) |
Flutter v1.7.3 | reflect-android:1.1.2 | ~> 1.1 → 1.1.4 on next pod update |
React Native v2.0.4 | reflect-android:1.1.2 | ~> 1.1 → 1.1.4 on next pod update |
Web v1.3.0 | standalone TypeScript implementation — no native core | |
1.1.0 is the privacy floor.1.0.0 shipped with no privacy engine at all, and iOS core1.1.0 branded every event flutter on the wire. If you pin a core yourself, never pin below Android 1.1.0 / iOS 1.1.1; current releases pin 1.1.2 on both, which adds the client-side batch-size and body-size clamps.OS feature gates (not floors)
These are OS capabilities the SDKs use when available — running on an older OS keeps everything else working:
- ATT consent prompt — available on iOS 14.5+; older iOS reports the pre-ATT status.
- Apple Search Ads attribution token (AdServices) — iOS 14.3+; weak-linked everywhere it is used.
- SKAdNetwork 4.0 coarse values & multiple postbacks — iOS 16.1+; earlier SKAN versions are used below that.
- Google Play Install Referrer / App Set ID — requires Google Play services on the device; the SDKs degrade gracefully without them.