Choose a platform
Nosmai Effects is available for iOS, Android, Flutter, React Native, and Web. Native iOS and Android provide the broadest control surface. Flutter and React Native expose the native SDKs through their supported packages. Web is a developer preview and has intentional capability gaps.
Here, native means the SDK built directly for iOS or Android. Flutter and React Native let teams share more app code, but they still connect to the native mobile SDK underneath. A developer preview is suitable for evaluation but does not yet promise the same feature coverage as a supported production release.
| Platform | Current release | Release status | Start here |
|---|---|---|---|
| iOS | NosmaiCameraSDK 3.0.5 | Supported | Install for iOS |
| Android | nosmai-sdk-3.0.5.aar | Supported | Install for Android |
| Flutter | nosmai_effects_sdk 1.0.3 | Supported | Install for Flutter |
| React Native | @nosmai/react-native-effects-sdk 1.0.0 | Supported | Install for React Native |
| Web | @nosmai/web-sdk 0.2.0 | Developer preview | Install for Web |
Supported means the documented public integration is available for production use on the stated targets. Preview means the API can be evaluated but does not yet promise native feature parity. Limited means only the behaviour described in the table is available.
Core capability matrix
| Capability | iOS | Android | Flutter | React Native | Web |
|---|---|---|---|---|---|
| Real-time camera preview | Supported | Supported | Supported | Supported | Preview |
| Front/back camera and switching | Supported | Supported | Supported | Supported | Preview |
| Camera lifecycle and rotation | Supported | Supported | Supported | Supported | Preview |
| Direct beauty and makeup controls | Supported | Supported | Supported | Supported | Limited to authored packages |
| Direct colour adjustments | Supported | Supported | Supported | Supported | Limited to authored packages |
| Effect packages | Supported | Supported | Supported | Supported | Preview, package-dependent |
| Face-tracked AR packages | Supported | Supported | Supported | Supported | Preview, package-dependent |
| 3D authored content | Supported | Supported | Supported | Supported | Preview, package-dependent |
| Authored triggers | Supported | Supported | Supported | Supported | Preview, package-dependent |
| Runtime package parameters | Supported | Supported | Supported | Supported | Preview |
| Background blur, colour, and image | Supported | Supported | Supported | Supported | Limited to authored packages |
| Background video | Supported | Supported | Supported | Supported | Not available |
| Cloud Filters catalog and download | Supported | Supported | Supported | Supported | Not available |
Capture and streaming matrix
| Capability | iOS | Android | Flutter | React Native | Web |
|---|---|---|---|---|---|
| Processed photo capture | Supported | Use app capture flow | Supported | Supported | Not available |
| Processed video recording | Supported | Supported | Supported | Supported | Not available |
| Processed frame or texture access | Supported | Supported | Supported | Supported | Canvas output |
| Agora integration | Supported | Supported | Supported | Not currently documented | Not currently documented |
| LiveKit integration | Supported | Supported | Supported | Not currently documented | Not currently documented |
| Raw WebRTC integration | Supported | Supported | Not currently documented | Not currently documented | Not currently documented |
“Use app capture flow” means the host application captures the documented processed output rather than calling a dedicated Nosmai photo helper. “Not currently documented” is not a promise of incompatibility; it means no verified public integration guide is available for that combination.
System requirements
| Requirement | iOS | Android | Flutter | React Native | Web |
|---|---|---|---|---|---|
| Minimum target | iOS 15 | Android API 24 | iOS 15 or Android API 24 | iOS 15 or Android API 24 | HTTPS or localhost |
| Architecture | Physical ARM64 device | Physical arm64-v8a or armeabi-v7a device | iOS arm64; Android arm64-v8a or armeabi-v7a | iOS arm64; Android arm64-v8a or armeabi-v7a | Hardware-accelerated WebGL2 recommended |
| Primary toolchain | CocoaPods, Swift or Objective-C | Java 11, compile SDK 35 | Flutter 3.22, Dart 3 | React Native 0.81.5, React 19.1, New Architecture | Node 20.19 or 22.12+, modern bundler |
| Camera access | iOS camera permission | Android camera permission | Native camera permissions | Native camera permissions | Browser camera permission |
| Simulator or emulator | Not supported | Not qualified | Use physical devices | Use physical devices; Expo Go unsupported | Browser testing supported |
The Web preview also requires WebAssembly and Web Crypto support. Its document and any embedding iframe must be allowed to access the camera.
Distribution and application size
| SDK | Distribution | Published artifact size |
|---|---|---|
iOS 3.0.5 | CocoaPods or verified framework ZIP | Framework bundle: 34,207,000 bytes (32.6 MiB); release ZIP: 22,661,254 bytes (21.6 MiB) |
Android 3.0.5 | Verified release AAR | 59,140,732 bytes (56.4 MiB), including both supported ARM ABIs |
Flutter 1.0.3 | pub.dev package plus native dependencies | Wrapper is small; native artifacts resolve separately |
React Native 1.0.0 | npm package plus native dependencies | About 226.1 kB packed; native artifacts resolve separately |
Web 0.2.0 | Authorized preview archive | Depends on build output, optional runtime assets, and included effects |
Published artifact size is not the final store-download increase. Store compression, app thinning, ABI splits, symbols, and existing dependencies all affect the shipped app. Measure the signed release build that users will download.
Verify platform eligibility
Before integration, confirm that:
- The target meets the minimum OS and architecture requirement.
- The required feature is Supported or its limitation is acceptable.
- A physical device is available for native camera testing.
- The final application identifier or Web origin is registered for licensing.
- The exact authored packages are tested on every target platform.
- Performance is measured with the intended camera resolution and effects.
Common errors
| Symptom | Likely cause | Resolution |
|---|---|---|
Android reports INSTALL_FAILED_NO_MATCHING_ABIS | The device or app build includes neither arm64-v8a nor armeabi-v7a | Use a supported physical ARM device and keep at least one supported ABI |
| iOS linker reports a Simulator architecture mismatch | The current framework is device-only | Build and run on a physical iPhone or iPad |
Web reports WEBGL_UNAVAILABLE | WebGL2 could not be created | Use a compatible browser and enable hardware acceleration |
| React Native preview does not start | The camera view is not mounted or the required architecture is disabled | Mount the documented view and use the supported New Architecture setup |
Next steps
- Follow an iOS quickstart
- Follow an Android quickstart
- Follow a Flutter quickstart
- Follow a React Native quickstart
- Follow the Web preview quickstart
- Review limits and performance