Skip to content
CAI
Software that uses CAICheck a score

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

CAI band scale
CAI trend line
CAI lens gauges

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.