by poberwong

a universal switch for android and iOS

214 Stars 77 Forks Last release: 3 months ago (1.0.5) MIT License 89 Commits 30 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

react-native-switch-pro (2.0 is coming)

version downloads downloads
A universal switch for android and iOS, it could be the best switch for react-native on Github.




  • Almost perfect switch on react-native
  • Have a good performance on both iOS and Android
  • Add gesture with
  • More animations to follow iOS native performance
  • Support async and sync event
  • Support bidirectional data binding
  • Clear code style


npm install react-native-switch-pro --save


  • Sync
import Switch from 'react-native-switch-pro'
  render() {
    return (
  • Async
  render() {
    return (
          You can call your async module and just invoke callback(true) when succeed,  
          callback(false) when fail.



Description Default Type
width width of switch 40 number
height height of switch 21 number
value state of switch which can be used to bidirectional binding undefined bool
disabled whether switch is clickable false bool
circleColorActive color for circle handler of switch when it is on white string
circleColorInactive color for circle handler of switch when it is off white string
style styles that will be applied for switch container undefined style
circleStyle styles that will be applied for the circle undefined style
backgroundActive color of switch when it is on green string
backgroundInactive color of switch when it is off '#ddd' string
onSyncPress callback when switch is clicked () => null func
onAsyncPress has a callback with result of async (value, callback) => {callback(true)} func


  • You'd better not use
    together or else, only
    will be invoked.
  • value
    is used with bidirectional binding which could be redux, state and so on.
    , you should write like following (with state):
        callback(false or true, value => this.setState({value}))

    value => this.setState({value})
    will only be invoked when result is true.



We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.