Status definitions
| Status | Meaning |
|---|---|
| Supported | Public integration surface is available for production use on the stated targets |
| Beta | API exists, but release qualification or the wider physical-device matrix is still in progress |
| Preview | Developer-preview implementation with intentional capability gaps |
| Partial | Only the explicitly documented subset is exposed by the current package |
| Authored packages only | A compatible .nosmai package can provide the result, but no matching direct control method is exposed |
| Host application | The application supplies this operation outside the Nosmai public API |
| Provider bridge | A maintained provider-specific bridge supplies the handoff |
| Analysis sampling only | Low-rate processed-frame inspection is available, but it is not a high-rate streaming handoff |
| Browser-managed | The browser owns the control and Nosmai does not expose a separate method |
| Package compatibility varies | Support depends on the exact authored package and must be checked at runtime |
| Not verified | No production-qualified integration path is currently documented |
| Preview state only | The preview exposes limited state rather than native-level parity |
| Canvas only | Processed output remains on the Web canvas and no native texture bridge is provided |
| NSError domain / Java exceptions and callbacks | The native platform reports errors through its standard public error surface |
| Not available | The current platform package does not expose the capability |
An authored effect can combine several primitives. A supported package type does not imply that every package authored for another platform has full parity. Inspect compatibility output where the platform provides it and test the exact assets used by the application.
Capability matrix
| Capability | iOS | Android | Flutter | React Native | Web |
|---|---|---|---|---|---|
| GPU camera preview | Supported | Supported | Supported | Supported | Preview |
| Front and back camera | Supported | Supported | Supported | Supported | Preview |
| Camera switching | Supported | Supported | Supported | Supported | Preview |
| Preview mirroring and orientation | Supported | Supported | Supported | Supported | Preview |
| Flash and torch | Supported | Supported | Supported | Supported | Not available |
| Focus, exposure, and zoom controls | Supported | Supported | Not available | Not available | Browser-managed |
| Pause, resume, stop, and cleanup | Supported | Supported | Supported | Supported | Preview |
| Skin smoothing | Supported | Supported | Supported | Supported | Not available |
| Skin whitening | Supported | Supported | Supported | Supported | Not available |
| Teeth whitening | Supported | Supported | Supported | Supported | Not available |
| Sharpening | Supported | Supported | Supported | Supported | Authored packages only |
| Face reshape controls | Supported | Supported | Partial | Supported | Not available |
| Eye-colour adjustment | Supported | Supported | Supported | Supported | Not available |
| Lipstick | Supported | Supported | Supported | Supported | Authored packages only |
| Eyeshadow | Supported | Supported | Supported | Supported | Authored packages only |
| Blusher | Supported | Supported | Supported | Supported | Authored packages only |
| Eyelashes | Supported | Supported | Supported | Supported | Authored packages only |
| Eyebrows | Supported | Supported | Supported | Supported | Authored packages only |
| Brightness and contrast | Supported | Supported | Supported | Supported | Authored packages only |
| Hue, RGB, white balance, and grayscale | Supported | Supported | Supported | Supported | Authored packages only |
| HSB adjustment | Supported | Supported | Not available | Supported | Authored packages only |
| LUT colour filters | Supported | Supported | Supported | Supported | Package compatibility varies |
filter packages | Supported | Supported | Supported | Supported | Preview |
effect AR packages | Supported | Supported | Supported | Supported | Preview |
beauty_effect packages | Supported | Supported | Supported | Supported | Package compatibility varies |
background packages | Supported | Supported | Supported | Supported | Preview |
game packages | Supported | Supported | Supported | Supported | Not available |
| Face-tracked masks and props | Supported | Supported | Supported | Supported | Preview |
| 3D GLB or glTF content | Supported | Supported | Supported | Supported | Preview |
| Face-depth occlusion for 3D | Supported | Supported | Supported | Supported | Preview |
| Face and pass triggers | Supported | Supported | Supported | Supported | Preview |
| Runtime package parameters | Supported | Supported | Supported | Supported | Preview |
| Active package and effect state | Supported | Supported | Supported | Supported | Preview state only |
| App-bundled Asset Store packages | Supported | Supported | Supported | Supported | Preview |
| Cloud catalog and pagination | Supported | Supported | Supported | Supported | Not available |
| Cloud download, cache, and removal | Supported | Supported | Supported | Supported | Not available |
| Interactive tap handling | Supported | Supported | Supported | Supported | Not available |
| Named game input and game events | Supported | Supported | Supported | Supported | Not available |
| Background blur | Supported | Supported | Supported | Supported | Authored packages only |
| Background colour | Supported | Supported | Supported | Supported | Authored packages only |
| Background image | Supported | Supported | Supported | Supported | Authored packages only |
| Background video | Supported | Supported | Supported | Supported | Not available |
| Host-supplied overlay API | Not available | Not available | Not available | Not available | Not available |
| Processed photo capture | Supported | Host application | Supported | Supported | Not available |
| Processed video recording | Supported | Supported | Supported | Supported | Not available |
| Gallery-save helper | Host application | Host application | Supported | Supported | Not available |
| Processed frame or texture access | Supported | Supported | Supported | Supported | Canvas only |
| Off-screen streaming handoff | Supported | Supported | Provider bridge | Analysis sampling only | Not available |
| Agora integration path | Supported | Supported | Supported | Not available | Not verified |
| LiveKit integration path | Supported | Supported | Supported | Not available | Not verified |
| Raw WebRTC integration path | Supported | Supported | Not available | Not available | Not verified |
| License verification and status | Supported | Supported | Supported | Supported | Preview |
| Stable application error codes | NSError domain | Java exceptions and callbacks | Supported | Supported | Preview |
| Runtime compatibility report | Not available | Not available | Not available | Not available | Preview |
Partial for Flutter face reshape means the current Dart surface exposes face slimming, eye size, and nose slimming directly. Additional reshape controls are available in the native SDKs and React Native 1.0.0, but are not yet all exposed through Flutter.
Authored packages only means the Web preview can render a compatible package that implements the visual result. It does not expose the matching native-style parametric method.
The current public SDKs do not expose a separate host-image overlay API. Build stickers, watermarks, animated props, and face-attached images into an authored .nosmai package so they are included in preview and processed output.
System requirements
| Requirement | iOS | Android | Flutter | React Native | Web |
|---|---|---|---|---|---|
| Package | NosmaiCameraSDK | nosmai-sdk-3.0.4.aar | nosmai_effects_sdk | @nosmai/react-native-effects-sdk | @nosmai/web-sdk |
| Current version | 3.0.4 pod compatibility release | 3.0.4 | 1.0.2 | 1.0.0 | 0.2.0 preview |
| Minimum target | iOS 15 | Android API 21 | iOS 15 or Android API 21 | iOS 15 or Android API 24 | Secure browser context |
| Architecture | Physical arm64 | Physical arm64-v8a | Physical arm64 target | Physical arm64 target | Hardware-accelerated WebGL2 recommended |
| Primary toolchain | CocoaPods, Swift 5 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 requirement | AVFoundation camera access | Camera2-capable device | Native camera permission | Native camera permission | navigator.mediaDevices.getUserMedia |
| Simulator or emulator | iOS Simulator unsupported | Emulator not qualified | Use physical iOS and Android devices | Use physical devices; Expo Go unsupported | Localhost or HTTPS browser testing supported |
| Distribution | CocoaPods or verified framework ZIP | Verified GitHub release AAR | pub.dev plus native dependencies | Public stable npm package plus native dependencies | Authorized preview package |
The NosmaiCameraSDK 3.0.4 pod currently resolves the verified framework archive published with the iOS v3.0.4 GitHub release. Flutter 1.0.2 declares NosmaiCameraSDK ~> 3.0.4 and Android native 3.0.4.
Browser requirements
The Web preview checks capabilities at runtime instead of promising a frozen browser-version matrix. The browser must provide:
- a secure context, using HTTPS or
localhost navigator.mediaDevices.getUserMedia- WebGL2
- WebAssembly and Web Crypto APIs
- camera access allowed by browser permissions and any iframe policy
- Content Security Policy access to camera, package, WASM, and model hosts
Hardware acceleration is recommended. Software WebGL or CPU inference can make the preview substantially slower. Read the SDK diagnostics object to confirm the renderer and inference delegates selected on the test device.
Native artifact size
| Artifact | Published size | What the number means |
|---|---|---|
Android 3.0.4 AAR | 53,876,984 bytes, about 51.4 MiB | Downloaded development artifact before app-bundle optimization |
iOS v3.0.4 framework ZIP | 23,962,678 bytes, about 22.9 MiB | Compressed framework archive used by the 3.0.4 pod compatibility release |
Flutter 1.0.2 Dart package | Small wrapper package | Native Android AAR and iOS framework are resolved separately |
React Native 1.0.0 | About 226.1 kB packed and 1.1 MB unpacked | Proprietary native binaries are resolved separately |
Web 0.2.0 preview | Build-dependent | Face and segmentation models can be self-hosted and loaded only when needed |
These are source artifact sizes, not guaranteed store-download increases. Build mode, compression, store thinning, existing dependencies, symbols, selected assets, and ABI splits determine the final application size. Measure the signed release artifact for the application that will ship.
Device and performance notes
- The rendering target is 30 FPS under supported conditions.
- Face and segmentation inference are enabled only when the active feature needs them.
- Mobile performance-aware behaviour can skip selected inference work or reduce recording resolution on measured lower-tier Android devices.
- Effect complexity, camera resolution, device load, session length, and thermal state can change frame rate, memory use, and battery consumption.
- No single certified tracking-accuracy, battery, thermal, or memory figure is published for every device. Use a representative physical-device matrix for release qualification.
- A 32-bit-only Android device cannot install an app whose only native ABI is
arm64-v8a. A 64-bit device that listsarm64-v8acan install it even if the device also lists 32-bit fallback ABIs.
Verify platform eligibility
Before integration, confirm all of the following:
- The target meets the minimum OS and architecture requirement.
- The required capability is marked Supported or accepted as Beta or Preview.
- A physical device is available for native camera verification.
- The application identifier or web origin is registered in Nosmai Console.
- The release artifact can include the proprietary native dependency.
- The exact authored
.nosmaipackages have been tested on every target.
Common errors
| Error or symptom | Cause | Fix |
|---|---|---|
INSTALL_FAILED_NO_MATCHING_ABIS | Android device or build does not provide arm64-v8a | Use a physical ARM64 device and keep arm64-v8a in the app ABI filters |
building for iOS Simulator, but linking in object file built for iOS | The current iOS framework contains a device slice only | Select a physical iPhone or a generic iOS device target |
WEBGL_UNAVAILABLE | WebGL2 could not be created | Enable hardware acceleration, use a compatible browser, and avoid a blocked or software-only context |
E_NO_PREVIEW | React Native processing started before a Fabric preview owned the session | Mount NosmaiCameraView, wait for its layout boundary, then call startProcessing() |
| Camera preview never starts on a 32-bit Android device | The native library is ARM64-only | Exclude the unsupported device or provide a separately supported architecture in a future SDK release |
Next steps
- Install Nosmai Effects for iOS
- Install Nosmai Effects for Android
- Install Nosmai Effects for Flutter
- Install Nosmai Effects for React Native
- Understand camera games
- Install the Web developer preview