@john_pels/rn-otp-input · ![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)
![stars](https://img.shields.io/github/stars/John-pels/RN-otp-input)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)
![GitHub issues](https://img.shields.io/github/issues/John-pels/RN-otp-input.svg)
![GitHub last commit](https://img.shields.io/github/last-commit/John-pels/RN-otp-input.svg)
A customizable and easy-to-use OTP (One-Time Password) input component for React Native applications.
Installation
npm install @john_pels/rn-otp-input
or
yarn add @john_pels/rn-otp-input
For Expo App,
npx expo install @john_pels/rn-otp-input
Basic Usage
import React from 'react';
const [otp, setOtp] = React.useState('');
const handleOTPComplete = (otp: string) => {
setOtp(otp);
};
<RNOTPInput length={5} onCompleteFn={handleOTPComplete} />;
Customization Examples
Custom styles
<RNOTPInput
length={6}
onCompleteFn={handleOTPComplete}
inputStyle={{
borderColor: 'blue',
borderRadius: 10,
fontSize: 24,
}}
containerStyle={{
marginTop: 20,
width: '80%',
}}
focusStyle={{
borderColor: 'red',
}}
/>
Props
Props | Type | Default | Required | Description |
---|
Length | Number | 4 | No | The number of OTP input fields, default is 4 |
onCompleteFn | Function | _ | Yes | Callback function called when all OTP fields are filled |
inputStyle | StyleProp | width, height, borderWidth, borderColor, textAlign, fontSize | No | Custom styles for individual input fields |
containerStyle | StyleProp | flexDirection, justifyContent | No | Custom styles for the container of input fields |
focusStyle | StyleProp | _ | No | The onFocus styles for the otp inputs |
Features
- Customizable Length: Set the number of OTP input fields as needed.
- Auto Focus: Automatically focuses on the next input field after entering a digit
- Backspace Support: Moves focus to the previous field when pressing backspace on an empty field.
- Customizable Styling: Apply custom styles to both individual input fields and the container.
- Completion Callback: Easily handle the completed OTP input with the onComplete callback.
Best Practices
- Error Handling: Implement proper error handling and validation for the OTP input.
- Accessibility: Ensure the component is accessible by testing with screen readers and adding appropriate labels.
- Security: Never store or log the full OTP on the client-side for security reasons.
- Timeout: Consider implementing a timeout feature for OTP validity.
- Resend Option: Provide an option to resend the OTP if the user doesn't receive it.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License.