Gathering detailed insights and metrics for react-native-bouncy-checkbox
Gathering detailed insights and metrics for react-native-bouncy-checkbox
Gathering detailed insights and metrics for react-native-bouncy-checkbox
Gathering detailed insights and metrics for react-native-bouncy-checkbox
react-native-bouncy-checkbox-group
Fully customizable bouncy checkbox group for React Native
pascal-react-native-bouncy-checkbox
Fully customizable animated bouncy checkbox for React Native
react-native-bouncy-checkbox-group-srbrahma
Fully customizable bouncy checkbox group for React Native
react-native-bouncy-controlled-checkbox
checkbox for React Native
Fully customizable animated bouncy checkbox for React Native
npm install react-native-bouncy-checkbox
Typescript
Module System
Node Version
NPM Version
TypeScript (29.94%)
Java (24.91%)
C++ (11.62%)
Objective-C++ (8.35%)
Objective-C (7.45%)
JavaScript (7.16%)
Ruby (4.92%)
Kotlin (3.99%)
Starlark (0.96%)
CMake (0.44%)
Shell (0.25%)
Total Downloads
0
Last Day
0
Last Week
0
Last Month
0
Last Year
0
MIT License
852 Stars
1,073 Commits
59 Forks
6 Watchers
8 Branches
8 Contributors
Updated on Jul 14, 2025
Latest Version
4.1.2
Package Id
react-native-bouncy-checkbox@4.1.2
Unpacked Size
310.92 kB
Size
173.36 kB
File Count
119
NPM Version
9.5.1
Node Version
18.16.0
Published on
Aug 21, 2024
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
24
![]() |
![]() |
Add the dependency:
Zero Dependency 🥳
1npm i react-native-bouncy-checkbox
isChecked
proponLongPress
supporttestID
supportdisableBuiltInState
propuseBuiltInState
to disable1import BouncyCheckbox from "react-native-bouncy-checkbox";
1<BouncyCheckbox onPress={(isChecked: boolean) => {}} />
1<BouncyCheckbox 2 size={25} 3 fillColor="red" 4 unFillColor="#FFFFFF" 5 text="Custom Checkbox" 6 iconStyle={{ borderColor: "red" }} 7 innerIconStyle={{ borderWidth: 2 }} 8 textStyle={{ fontFamily: "JosefinSans-Regular" }} 9 onPress={(isChecked: boolean) => {console.log(isChecked)}} 10/>
To fully control checkbox state outside with your own state, just set useBuiltInState
to false
and send your state value to isChecked
prop
1 2const [localChecked, setLocalChecked] = React.useState(false); 3 4 <BouncyCheckbox 5 isChecked={localChecked} 6 disableText 7 fillColor="green" 8 size={50} 9 useBuiltInState={false} 10 iconImageStyle={styles.iconImageStyle} 11 iconStyle={{borderColor: 'green'}} 12 onPress={(checked: boolean) => { 13 // These two should be same value 14 console.log('::Checked::', checked); 15 console.log('::LocalChecked::', localChecked); 16 setLocalChecked(!localChecked); 17 }} 18/>
Property | Type | Default | Description |
---|---|---|---|
isChecked | boolean | undefined | if you want to control check state yourself, you can use isChecked prop now! |
onPress | function | null | set your own onPress functionality after the bounce effect, callback receives the next isChecked boolean if disableBuiltInState is false |
onLongPress | function | null | set your own onLongPress functionality after the bounce effect, callback receives the next isChecked boolean if disableBuiltInState is false |
text | string | undefined | set the checkbox's text |
textComponent | component | undefined | set the checkbox's text by a React Component |
disableText | boolean | false | if you want to use checkbox without text, you can enable it |
useBuiltInState | boolean | false | to fully control the checkbox itself outside with your own state, just set to false and send your state value to isChecked prop |
size | number | 25 | size of width and height of the checkbox |
style | style | default | set/override the container style |
textStyle | style | default | set/override the text style |
iconStyle | style | default | set/override the outer icon container style |
innerIconStyle | style | default | set/override the inner icon container style |
fillColor | color | #f09f48 | change the checkbox's filled color |
unfillColor | color | transparent | change the checkbox's un-filled color when it's not checked |
iconComponent | component | Icon | set your own icon component |
checkIconImageSource | image | default | set your own check icon image |
textContainerStyle | ViewStyle | default | set/override the text container style |
ImageComponent | component | Image | set your own Image component instead of RN's default Image |
TouchableComponent | Component | Pressable | set/override the main TouchableOpacity component with any Touchable Component like Pressable |
Property | Type | Default | Description |
---|---|---|---|
bounceEffectIn | number | 0.9 | change the bounce effect when press in |
bounceEffectOut | number | 1 | change the bounce effect when press out |
bounceVelocityIn | number | 0.1 | change the bounce velocity when press in |
bounceVelocityOut | number | 0.4 | change the bounce velocity when press out |
bouncinessIn | number | 20 | change the bounciness when press in |
bouncinessOut | number | 20 | change the bounciness when press out |
Please check the example
runnable project to how to make it work on a real project.
onPress
callback WILL RECEIVE the next isChecked
when using ref
is used.isChecked
prop to use your own check state manually.Here is the basic implementation:
1import React from "react"; 2import { 3 SafeAreaView, 4 StyleSheet, 5 Text, 6 TouchableOpacity, 7 View, 8} from "react-native"; 9import BouncyCheckbox from "./lib/BouncyCheckbox"; 10import RNBounceable from "@freakycoder/react-native-bounceable"; 11 12const App = () => { 13 let bouncyCheckboxRef: BouncyCheckbox | null = null; 14 const [checkboxState, setCheckboxState] = React.useState(false); 15 16 return ( 17 <SafeAreaView 18 style={{ 19 flex: 1, 20 alignItems: "center", 21 justifyContent: "center", 22 }} 23 > 24 <View style={styles.checkboxesContainer}> 25 <Text style={styles.titleSynthetic}>Synthetic Checkbox</Text> 26 <Text style={styles.checkboxSyntheticSubtitle}> 27 Control Checkbox with Another Button 28 </Text> 29 <View style={styles.checkboxSyntheticContainer}> 30 <BouncyCheckbox 31 ref={bouncyCheckboxRef} 32 disableText 33 fillColor="#9342f5" 34 size={50} 35 iconImageStyle={styles.iconImageStyle} 36 iconStyle={{borderColor: '#9342f5'}} 37 onPress={isChecked => { 38 Alert.alert(`Checked:: ${isChecked}`); 39 }} 40 /> 41 <RNBounceable 42 style={styles.syntheticButton} 43 onPress={() => { 44 if (bouncyCheckboxRef.current) { 45 bouncyCheckboxRef.current.onCheckboxPress(); 46 } 47 }}> 48 <Text style={{color: '#fff', fontWeight: '600'}}> 49 Change Checkbox 50 </Text> 51 </RNBounceable> 52 </View> 53 </View> 54 </SafeAreaView> 55 ); 56}; 57 58const styles = StyleSheet.create({}); 59 60export default App;
Another example with isChecked
prop:
1import React, {useRef} from 'react'; 2import {ImageBackground, StyleSheet, Text, View} from 'react-native'; 3import RNBounceable from '@freakycoder/react-native-bounceable'; 4import BouncyCheckbox, {BouncyCheckboxHandle} from './build/dist'; 5 6const App = () => { 7 const bouncyCheckboxRef = useRef<BouncyCheckboxHandle>(null); 8 9 const [checkboxState, setCheckboxState] = React.useState(false); 10 11 return ( 12 <ImageBackground 13 style={styles.container} 14 source={require('./assets/bg.jpg')}> 15 <View 16 style={[ 17 styles.stateContainer, 18 { 19 backgroundColor: checkboxState ? '#34eb83' : '#eb4034', 20 }, 21 ]}> 22 <Text 23 style={ 24 styles.stateTextStyle 25 }>{`Check Status: ${checkboxState.toString()}`}</Text> 26 </View> 27 <BouncyCheckbox 28 size={50} 29 textStyle={styles.textStyle} 30 style={{marginTop: 16}} 31 iconImageStyle={styles.iconImageStyle} 32 fillColor={'#00C0EE'} 33 unFillColor={'transparent'} 34 ref={bouncyCheckboxRef} 35 isChecked={checkboxState} 36 text="Synthetic Checkbox" 37 onPress={() => setCheckboxState(!checkboxState)} 38 /> 39 <RNBounceable 40 style={styles.syntheticButton} 41 onPress={() => { 42 bouncyCheckboxRef.current?.onCheckboxPress(); 43 }}> 44 <Text style={{color: '#fff'}}>Synthetic Checkbox Press</Text> 45 </RNBounceable> 46 </ImageBackground> 47 ); 48}; 49 50const styles = StyleSheet.create({ 51 container: { 52 flex: 1, 53 alignItems: 'center', 54 justifyContent: 'center', 55 }, 56 stateContainer: { 57 height: 45, 58 width: 175, 59 alignItems: 'center', 60 justifyContent: 'center', 61 borderRadius: 12, 62 marginBottom: 12, 63 }, 64 stateTextStyle: { 65 color: '#fff', 66 fontWeight: 'bold', 67 }, 68 syntheticButton: { 69 height: 50, 70 marginTop: 64, 71 borderRadius: 12, 72 width: '60%', 73 alignItems: 'center', 74 justifyContent: 'center', 75 backgroundColor: '#00C0EE', 76 }, 77 iconImageStyle: { 78 width: 20, 79 height: 20, 80 }, 81 textStyle: { 82 color: '#010101', 83 fontWeight: '600', 84 }, 85}); 86 87export default App;
We have also this library's checkbox group library as well 🍻 Please take a look 😍
How to disable strikethrough?
textStyle
prop and set the textDecorationLine
to none
1textStyle={{ 2 textDecorationLine: "none", 3}}
How to make square checkbox?
iconStyle
prop and set the borderRadius
to 0
1innerIconStyle={{ 2 borderRadius: 0, // to make it a little round increase the value accordingly 3}}
How to use multiple checkbox and control all of them with one checkbox?
isChecked
prop to control all of them one by one and with simple handling function to make them all checked or not1 const data = [ 2 { 3 id: 0, 4 isChecked: false, 5 }, 6 { 7 id: 1, 8 isChecked: false, 9 }, 10 { 11 id: 2, 12 isChecked: false, 13 }, 14 ] 15 16 const [checkBoxes, setCheckBoxes] = useState(data); 17 18 19 const handleCheckboxPress = (checked: boolean, id: number) => { 20 if (id === 0) { 21 setCheckBoxes( 22 checkBoxes.map(item => ({ 23 ...item, 24 isChecked: checked, 25 })), 26 ); 27 return; 28 } 29 30 setCheckBoxes( 31 checkBoxes.map(item => 32 item.id === id ? {...item, isChecked: checked} : item, 33 ), 34 ); 35 };
Please check out the example for this: https://github.com/WrathChaos/react-native-bouncy-checkbox-check-all-with-one-checkbox
disableBuiltInState
propPhoto by Milad Fakurian on Unsplash
FreakyCoder, kurayogun@gmail.com
React Native Bouncy Checkbox is available under the MIT license. See the LICENSE file for more info.
No vulnerabilities found.
Reason
30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Reason
license file detected
Details
Reason
binaries present in source code
Details
Reason
Found 0/1 approved changesets -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
branch protection not enabled on development/release branches
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Reason
23 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