teslamotors/react-native-camera-kit
53.1
Adequate · 30 September 2026
4.8k
lines of production code
Swift
with Kotlin, Objective-C, TypeScript
2
measurements over time
What this system is
This system is a React Native library providing native camera functionality for both iOS and Android platforms. It enables photo capture, barcode scanning, and real-time face detection while supporting the React Native New Architecture. The codebase includes platform-specific native implementations and a TypeScript-based API for integration.
How it got here
2016 — v18.0.1 release and new architecture support
6 changes.
This period focused on the initial release of React Native Camera Kit v18.0.1, featuring a complete rewrite of the iOS native module in Swift and the introduction of a full Android camera implementation. The work also established a modern development environment by scaffolding the example project with React Native 0.81, TypeScript, and support for the New Architecture.
2020 — React Native 0.81 and TypeScript migration
5 changes.
The project upgraded the iOS example app to support React Native 0.81 and the New Architecture, including a Swift-based AppDelegate and updated build configurations. The core library and example app were rewritten in TypeScript, introducing an imperative API for the Camera component and adding new features like real-time face detection and barcode scanning.
2023–2024 — iOS Swift rewrite and New Architecture support
5 changes.
The iOS camera module was completely rewritten in Swift to support the React Native New Architecture, introducing features like face detection and multi-lens zoom. This period also involved establishing standardized development practices through SwiftLint integration, Xcode workspace configuration, and comprehensive TypeScript type definitions for native components.
Features
Add iOS linting script with SwiftLint integration
A new shell script, \scripts/check-ios.sh\, has been added to the project to automate iOS code quality checks. When executed, the script attempts to run SwiftLint in autocorrect mode followed by a linting pass if the tool is installed; if SwiftLint is not found, it outputs a warning suggesting installation via Homebrew. This provides a standardized way to enforce coding standards on iOS codebases during development or CI processes.
scripts · high confidence
Initial Android camera implementation with barcode, face detection, and new architecture support
This change introduces the complete Android native implementation for the camera component, including the \CKCamera\ view, \CKCameraManager\, and \RNCameraKitPackage\. It enables core camera features such as photo capture, barcode scanning (via MLKit), and face detection (via MLKit), along with UI controls like zoom, torch, and a customizable barcode frame overlay. The implementation supports both the old and new React Native architectures (via \oldarch\ and \newarch\ source sets) and includes event handling for camera errors, orientation changes, and capture button presses.
android · high confidence
iOS camera module rewritten in Swift with React Native New Architecture support
The iOS implementation of the camera module has been completely rewritten in Swift, replacing the previous Objective-C codebase. This change introduces full support for the React Native New Architecture (Fabric and Codegen), allowing the library to function as a native component view alongside the legacy bridge. The rewrite also adds new capabilities including face detection, hardware capture button support (iOS 17.2+), and multi-lens zoom handling, while maintaining backward compatibility with older React Native versions through conditional compilation.
ios/ReactNativeCameraKit · high confidence
Behavioural changes
Added Xcode workspace configuration files
The iOS project now includes standard Xcode workspace configuration files (contents.xcworkspacedata and IDEWorkspaceChecks.plist) for both the main project and the lib subproject. This ensures that Xcode correctly recognizes the workspace structure and suppresses the 32-bit warning, providing a cleaner development environment for iOS builds.
ios/ReactNativeCameraKit.xcodeproj/project.xcworkspace, ios/lib · high confidence
Android example project infrastructure and build configuration
The Android example application has been restructured with new core configuration files. The build system now uses Gradle 8.14.3, and the main application entry point (MainActivity) has been updated to utilize the React Native New Architecture (Fabric) via DefaultReactActivityDelegate. The app manifest declares INTERNET and VIBRATE permissions, and the UI theme has been updated to use the rn\_edit\_text\_material drawable for consistent text input styling. Additionally, a debug manifest enables cleartext traffic for development purposes, and a ProGuard rules file has been added to support code obfuscation.
example/android · high confidence
Camera component refactored to use imperative API and platform-specific implementations
The Camera component has been refactored to use a forwardRef-based imperative API, requiring users to access methods like \capture\ via \useRef\<CameraApi\>()\ instead of the previous \useRef\<Camera\>()\ pattern. The implementation is now split into platform-specific files (\Camera.android.tsx\ and \Camera.ios.tsx\) that handle native prop mappings (such as using \-1\ for undefined optional props) and expose platform-specific features like \iOsDeferredStart\ and \maxPhotoQualityPrioritization\. Additionally, the component now supports real-time face detection with \onFaceDetected\ callbacks and allows configuring allowed barcode types via the \allowedBarcodeTypes\ prop.
src · high confidence
Configured Bundler to use vendor directory and force Ruby platform
A new configuration file for Bundler has been added to the project. This change sets the installation path for gems to the local 'vendor/bundle' directory and enables the BUNDLE\_FORCE\_RUBY\_PLATFORM setting, ensuring that gem compilation respects the current Ruby platform rather than relying on pre-compiled binaries.
.bundle · high confidence
Example app rewritten in TypeScript with new stress test and face detection demos
The example application source code has been completely rewritten in TypeScript, replacing the previous JavaScript implementation. This update introduces a new main menu (App.tsx) that includes a dedicated Mount Stress Test feature, allowing users to simulate rapid component mounting to verify stability. The CameraExample component now demonstrates advanced capabilities such as real-time face detection with bounding box overlays and status statistics, while the BarcodeScreenExample showcases configurable barcode scanning with torch and flash controls. A dummy SafeAreaView component has also been added to handle platform-specific safe area insets without external dependencies.
example/src · high confidence
Example project scaffolded with React Native 0.81 configuration
The example application has been restructured to align with React Native 0.81 standards, introducing a modern development environment. This includes a new TypeScript configuration extending @react-native/typescript-config, a Metro bundler setup that properly resolves peer dependencies, and a Babel preset for module transformation. The project now uses a standard entry point that detects and logs the UI manager (Fabric vs. Paper) and includes standard tooling configurations for ESLint, Prettier, Jest, and Yarn v3, ensuring the example runs consistently with the latest React Native architecture.
example · high confidence
Updated iOS example app to support React Native 0.81 and the New Architecture
The iOS example application has been upgraded to support React Native 0.81 and the New Architecture (Fabric). This update introduces a new Swift-based AppDelegate to leverage the modern React Native runtime, adds a PrivacyInfo manifest to comply with iOS privacy requirements, and configures the Xcode workspace to properly resolve dependencies. These changes ensure the example app builds and runs correctly with the latest React Native versions and architecture.
example/ios/CameraKitExample · high confidence
iOS example project regenerated for React Native 0.81
The iOS example application project files have been regenerated to support the upgrade to React Native 0.81. This update includes a new \project.pbxproj\ and Xcode scheme that configure the build environment for the latest React Native version, incorporating necessary build phases such as the React Native bundle script and CocoaPods integration, along with updated project attributes like Swift migration settings.
example/ios/CameraKitExample.xcodeproj · high confidence
iOS native module rewritten in Swift with new camera and scanning components
The iOS native module for React Native CameraKit has been migrated from Objective-C to Swift, introducing a new set of source files including CameraManager, CameraView, RealCamera, and SimulatorCamera. This rewrite adds support for code format detection via CodeFormat.swift and introduces new UI components such as ScannerFrameView, ScannerInterfaceView, and FocusInterfaceView, while maintaining compatibility through a bridging header.
ios/ReactNativeCameraKit.xcodeproj · high confidence
Test coverage
Added TypeScript type definitions for CameraKit native components and module; Added placeholder test file.
Dependencies
Initial release of React Native Camera Kit v18.0.1
This entry introduces the initial version (18.0.1) of the React Native Camera Kit library. The package.json defines the library's metadata, including TypeScript compilation and codegen configuration for both iOS and Android. The native build configurations establish the core dependencies: Android uses CameraX 1.4.2, Google ML Kit for barcode and face detection, and metadata-extractor 2.18.0, while iOS targets platform version 15.0. The example project is also initialized with React Native 0.81.0, Ruby dependencies for CocoaPods, and Gradle 8.6 to support the new architecture.
(dependencies) · high confidence
Housekeeping
Project infrastructure and linting configuration
The repository now includes standardized configuration files for development workflows, including ESLint and Prettier rules, a TypeScript configuration, and a SwiftLint configuration for iOS. It also adds a Brewfile to manage the SwiftLint dependency via Homebrew, along with updated .gitignore and .npmignore files to ensure clean builds and proper package publishing.
(repo-wide) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 56 → 53 (-3.1)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 93 → 93 (-0.3)
- Architecture 94 → 96 (+1.2)
- Maturity 53 → 53 (-0.0)
- Readiness 55 → 39 (-16.8)
- Security 49 → 59 (+10.4)
- Performance 100 (new)
Resolved (4)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Medium CVE: [GHSA redacted] (yarn.lock)
- Off-boarding risk: anonymized user #1
New (10)
- Duplicated block (12 lines × 2) (android/src/newarch/java/com/rncamerakit/CKCameraManager.kt)
- Duplicated block (18 lines × 2) (android/src/newarch/java/com/rncamerakit/CKCameraManager.kt)
- Duplicated block (23 lines × 2) (android/src/newarch/java/com/rncamerakit/RNCameraKitModule.kt)
- Duplicated block (8 lines × 2) (android/src/main/java/com/rncamerakit/FaceAnalyzer.kt)
- Duplicated block (8 lines × 2) (android/src/newarch/java/com/rncamerakit/CKCameraManager.kt)
- End-of-life runtime: Node.js 20
- High CVE: [GHSA redacted] (yarn.lock)
- Off-boarding risk: anonymized user #1
- Test script runs jest, which the package does not depend on (package.json)
- Test script runs jest, which the package does not depend on (package.json)
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed
Added bounded contexts (1)
- app
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
teslamotors/react-native-camera-kit was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a2a81cee8995c831aca472836e2be446994ba070 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.