# Limits and performance

> Plan device support and measure frame rate, memory, battery, temperature, and binary size with the effects your app will ship.

> For AI agents: the complete documentation index is at https://nosmai.com/llms/effects.txt

Product: Nosmai Effects
Group: reference
Source: https://nosmai.com/docs/effects/limits-and-performance/

## 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:

1. Color or LUT filter
2. Skin retouching
3. Face-tracked makeup or mask
4. Background segmentation
5. Recording or dual output
6. 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.

## Next steps

- [Compare platform requirements](/docs/effects/platform-support/#system-requirements)
- [Understand off-screen output](/docs/effects/concepts/off-screen-rendering/)
- [Troubleshoot runtime problems](/docs/effects/troubleshooting/)

## References

- [Android releases](https://github.com/nosmai/nosmai_effects_sdk_android/releases/latest)
- [iOS releases](https://github.com/nosmai/nosmai_effects_sdk_ios/releases/latest)
- [Flutter package](https://pub.dev/packages/nosmai_effects_sdk)
- [React Native package](https://www.npmjs.com/package/@nosmai/react-native-effects-sdk)
