Gathering detailed insights and metrics for react-native-camera-kit-custom
Gathering detailed insights and metrics for react-native-camera-kit-custom
Gathering detailed insights and metrics for react-native-camera-kit-custom
Gathering detailed insights and metrics for react-native-camera-kit-custom
A high performance, easy to use, rock solid camera library for React Native apps.
npm install react-native-camera-kit-custom
Typescript
Module System
Node Version
NPM Version
Swift (43.3%)
Kotlin (25.32%)
TypeScript (14.68%)
Objective-C++ (6.85%)
Java (3.37%)
Objective-C (3.07%)
JavaScript (2.01%)
Ruby (1.23%)
Shell (0.09%)
C (0.07%)
Total Downloads
0
Last Day
0
Last Week
0
Last Month
0
Last Year
0
MIT License
2,593 Stars
1,093 Commits
613 Forks
206 Watchers
12 Branches
86 Contributors
Updated on Jul 14, 2025
Latest Version
0.1.6
Package Id
react-native-camera-kit-custom@0.1.6
Unpacked Size
236.85 kB
Size
94.09 kB
File Count
62
NPM Version
8.19.2
Node Version
18.12.1
Published on
Feb 20, 2023
Cumulative downloads
Total Downloads
Last Day
0%
NaN
Compared to previous day
Last Week
0%
NaN
Compared to previous week
Last Month
0%
NaN
Compared to previous month
Last Year
0%
NaN
Compared to previous year
1
2
A high performance, easy to use, rock solid
camera library for React Native apps.
![]() |
|
1yarn add react-native-camera-kit
1cd ios && pod install && cd ..
Android: Add Kotlin to your project
Add the following uses-permission to your AndroidManifest.xml
(usually found at: android/src/main/
)
1<uses-permission android:name="android.permission.CAMERA" /> 2<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Add the following usage descriptions to your Info.plist
(usually found at: ios/PROJECT_NAME/
)
1<key>NSCameraUsageDescription</key> 2<string>For taking photos</string> 3 4<key>NSPhotoLibraryUsageDescription</key> 5<string>For saving photos</string>
yarn bootstrap
yarn example ios
or yarn example android
Full screen camera component that holds camera state and provides camera controls
1import { CameraScreen } from 'react-native-camera-kit';
1<CameraScreen 2 actions={{ rightButtonText: 'Done', leftButtonText: 'Cancel' }} 3 onBottomButtonPressed={(event) => this.onBottomButtonPressed(event)} 4 flashImages={{ 5 // optional, images for flash state 6 on: require('path/to/image'), 7 off: require('path/to/image'), 8 auto: require('path/to/image'), 9 }} 10 cameraFlipImage={require('path/to/image')} // optional, image for flipping camera button 11 captureButtonImage={require('path/to/image')} // optional, image capture button 12 torchOnImage={require('path/to/image')} // optional, image for toggling on flash light 13 torchOffImage={require('path/to/image')} // optional, image for toggling off flash light 14 hideControls={false} // (default false) optional, hides camera controls 15 showCapturedImageCount={false} // (default false) optional, show count for photos taken during that capture session 16/>
Additionally, the camera screen can be used for barcode scanning
1<CameraScreen 2 ... 3 // Barcode props 4 scanBarcode={true} 5 onReadCode={(event) => Alert.alert('QR code found')} // optional 6 showFrame={true} // (default false) optional, show frame with transparent layer (qr code or barcode will be read on this area ONLY), start animation for scanner,that stoped when find any code. Frame always at center of the screen 7 laserColor='red' // (default red) optional, color of laser in scanner frame 8 frameColor='white' // (default white) optional, color of border of scanner frame 9/>
Barebones camera component
1import { Camera, CameraType } from 'react-native-camera-kit';
1<Camera 2 ref={(ref) => (this.camera = ref)} 3 cameraType={CameraType.Back} // front/back(default) 4/>
Props | Type | Description |
---|---|---|
flashMode | 'on' /'off' /'auto' | Camera flash mode. Default: auto |
focusMode | 'on' /'off' | Camera focus mode. Default: on |
zoomMode | 'on' /'off' | Enable pinch to zoom camera. Default: on |
torchMode | 'on' /'off' | Toggle flash light when camera is active. Default: off |
ratioOverlay | ['int':'int', ...] | Show a guiding overlay in the camera preview for the selected ratio. Does not crop image as of v9.0. Example: ['16:9', '1:1', '3:4'] |
ratioOverlayColor | Color | Any color with alpha. Default: '#ffffff77' |
resetFocusTimeout | Number | iOS only. Dismiss tap to focus after this many milliseconds. Default 0 (disabled). Example: 5000 is 5 seconds. |
resetFocusWhenMotionDetected | Boolean | iOS only. Dismiss tap to focus when focus area content changes. Native iOS feature, see documentation: https://developer.apple.com/documentation/avfoundation/avcapturedevice/1624644-subjectareachangemonitoringenabl?language=objc). Default true . |
onOrientationChange | Function | Callback when physical device orientation changes. Returned event contains orientation . Ex: onOrientationChange={(event) => console.log(event.nativeEvent.orientation)} . Use import { Orientation } from 'react-native-camera-kit'; if (event.nativeEvent.orientation === Orientation.PORTRAIT) { ... } to understand the new value |
Props | Type | Description |
---|---|---|
scanBarcode | Boolean | Enable barcode scanner. Default: false |
showFrame | Boolean | Show frame in barcode scanner. Default: false |
laserColor | Color | Color of barcode scanner laser visualization. Default: red |
frameColor | Color | Color of barcode scanner frame visualization. Default: yellow |
surfaceColor | Color | Color of barcode scanner surface visualization. Default: blue |
onReadCode | Function | Callback when scanner successfully reads barcode. Returned event contains codeStringValue . Default: null . Ex: onReadCode={(event) => console.log(event.nativeEvent.codeStringValue)} |
Note: Must be called on a valid camera ref
Capture image as JPEG.
A temporary file is created. You must move this file to a permanent location (e.g. the app's 'Documents' folder) if you need it beyond the current session of the app as it may be deleted when the user leaves the app. You can move files by using a file system library such as react-native-fs or expo-filesystem.
(On Android we currently have an unsupported outputPath
prop but it's subject to change at any time).
Note that the reason you're getting a URL despite it being a file is because Android 10+ encourages URIs. To keep things consistent regardless of settings or platform we always send back a URI.
1const { uri } = await this.camera.capture(); 2// uri = 'file:///data/user/0/com.myorg.myapp/cache/ckcap123123123123.jpg'
If you want to store it permanently, here's an example using react-native-fs:
1import RNFS from 'react-native-fs'; 2// [...] 3let { uri } = await this.camera.capture(); 4if (uri.startsWith('file://')) { 5 // Platform dependent, iOS & Android uses '/' 6 const pathSplitter = '/'; 7 // file:///foo/bar.jpg => /foo/bar.jpg 8 const filePath = uri.replace('file://', ''); 9 // /foo/bar.jpg => [foo, bar.jpg] 10 const pathSegments = filePath.split(pathSplitter); 11 // [foo, bar.jpg] => bar.jpg 12 const fileName = pathSegments[pathSegments.length - 1]; 13 14 await RNFS.moveFile(filePath, `${RNFS.DocumentDirectoryPath}/${fileName}`); 15 uri = `file://${destFilePath}`; 16}
1const isCameraAuthorized = await Camera.checkDeviceCameraAuthorizationStatus();
return values:
AVAuthorizationStatusAuthorized
returns true
AVAuthorizationStatusNotDetermined
returns -1
otherwise, returns false
1const isUserAuthorizedCamera = await Camera.requestDeviceCameraAuthorization();
AVAuthorizationStatusAuthorized
returns true
otherwise, returns false
The MIT License.
See LICENSE
No vulnerabilities found.
Reason
11 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
Reason
binaries present in source code
Details
Reason
Found 9/18 approved changesets -- score normalized to 5
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Reason
17 existing vulnerabilities detected
Details
Score
Last Scanned on 2025-07-07
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More