Baseline
Nosmai Effects targets 30 FPS for normal real-time use. The SDK performs face tracking and effects with GPU acceleration. Actual performance depends on the device, input resolution, active package, recording or streaming load, and thermal state.
Nosmai does not publish one universal tracking-accuracy, battery, or thermal number because it would not represent every device and effect. Run a device matrix with the final application settings before release.
Platform limits
| Platform | Minimum | Important limit |
|---|---|---|
| iOS | iOS 15, physical arm64 device | Current framework has no Simulator slice |
| Android | API 21, physical arm64-v8a device, Java 11 | Current AAR does not include 32-bit native ABIs |
| Flutter | Flutter 3.22 and Dart 3 | Inherits native iOS and Android hardware limits |
| React Native | React Native 0.81.5, React 19.1, New Architecture | Android baseline is API 24 for the stable package |
| Web preview | Secure context, WebGL 2, WebAssembly, Web Crypto | Feature and browser parity is still limited |
Published artifact sizes
| Artifact | Published size | Meaning |
|---|---|---|
Android 3.0.4 AAR | 53,876,984 bytes, about 51.4 MiB | Development artifact before App Bundle optimization |
iOS v3.0.4 framework release ZIP | 23,962,678 bytes, about 22.9 MiB | Compressed distribution size, not final App Store increase |
Flutter 1.0.2 | Small Dart and native bridge package | Native AAR and CocoaPod are resolved separately |
React Native 1.0.0 | About 226.1 kB packed and 1.1 MB unpacked | Native AAR and CocoaPod are resolved separately |
The store download increase is not equal to an artifact's archive size. App Bundle ABI delivery, compression, shared dependencies, symbols, and bundled .nosmai assets all affect the final number. Measure a signed production build with App Store Connect or Play Console tools.
Workload cost
From lighter to heavier in typical use:
- Color or LUT filter
- Skin retouching
- Face-tracked makeup or mask
- Background segmentation
- Recording or dual output
- Live streaming with an active face effect
This is guidance, not a fixed benchmark. An authored package can contain multiple passes and may cost more than another package in the same category.
Performance-aware behaviour
The native runtime can use selective inference, frame skipping, and a reduced recording workload on measured lower-tier Android devices. When a consumer is slower than the producer, keep the newest frame rather than accumulating latency.
QA device matrix
For each target device record:
- model, OS, chipset, RAM, and ABI
- camera resolution and target FPS
- active effect or package identifier
- average and low frame rate
- memory before and during the session
- battery change over a fixed duration
- thermal status and visible throttling
- preview-only, recording, and streaming results
- foreground, background, lock, rotation, and repeated navigation
Test at least one lower-tier supported Android device, one current Android device, and an older supported iPhone. A short cold-device test is not enough to reveal thermal throttling.
Size and performance recommendations
- Bundle only essential packages and download the rest on demand.
- Start at 720p and 30 FPS, then increase only after measurement.
- Keep one camera preview and one effects session active.
- Avoid per-frame JPEG, PNG,
Bitmap,UIImage, or base64 conversion. - Prefer native GPU texture output for high-rate streaming.
- Test every authored package instead of assuming equal cost.