A simple, customizable, and powerful OTP (One-Time Password) input component for React Native. Designed to provide a smooth OTP entry experience on both iOS and Android.
Whether you’re implementing mobile number verification, secure logins, or any OTP-based flow, this component gives you full control over the UI and behavior of OTP fields.
Install the package using npm or yarn:
yarn add react-native-otp-box-input
OR
npm install react-native-otp-box-input
- 🔢 Dynamic OTP input fields (any length)
- ⚡ Auto-focus & intelligent navigation
- 🎨 Custom styling for inputs and container
- 🧩 Plug-and-play usage with advanced customization
- 📱 Works perfectly on both Android and iOS
- 🛠️ Support for placeholder, render customization, and focus callbacks
A basic example of how to use the component:
import React from 'react'; import { View } from 'react-native'; import OtpInputBox from 'react-native-otp-box-input'; const MyComponent = () => ( <View> <OtpInputBox length={6} onChangeOtp={(otp) => console.log('Entered OTP:', otp)} autoFocus={true} /> </View> );
Prop | Type | Default | Description |
---|---|---|---|
length | number | Required | Number of OTP input boxes to display |
onChangeOtp | (otp: string) => void | Required | Callback that receives the full OTP string as the user types |
autoFocus | boolean | false | Automatically focuses the first input when the component mounts |
keyboardType | 'default' , 'numeric' , 'number-pad' , etc. | 'numeric' | Keyboard type for each input box |
placeholder | string | undefined | Placeholder text for all input boxes |
placeholders | string[] | undefined | Individual placeholders for each input field |
style | ViewStyle | undefined | Custom style for the input container |
inputStyle | StyleProp<ViewStyle> | undefined | Style for each individual input field |
activeInputStyle | StyleProp<ViewStyle> | undefined | Additional style for the currently focused input |
renderInput | ({ ...props }) => React.ReactNode | undefined | Custom render function to fully override the input UI |
inputProps | TextInputProps | {} | Additional props to pass to each TextInput |
onInputFocus | (index: number) => void | undefined | Callback when an input field gains focus |
onInputBlur | (index: number) => void | undefined | Callback when an input field loses focus |
Made with ❤️ by Naveed Khan
This project is licensed under the MIT License.
Contributions, issues, and feature requests are welcome!
Feel free to open an issue or submit a pull request.
react-native-otp
otp-input
otp
sms-verification
authentication
react-native-component
typescript