β¨ One time passcode Input For React Native/Expo. Unstyled and fully customizable. β¨
- π± Built specifically for React Native/Expo
 - π¨ Fully customizable styling with render props ( supports nativewind )
 - π Four copy paste styles (Apple, Stripe, Revolt, Dashed)
 - π§ͺ 100% test coverage
 - π Easily animated with react-native-reanimated
 - π Web support with using 
otp-input 
## npm
npm install input-otp-native
## yarn
yarn add input-otp-native
#pnpm
pnpm add input-otp-native| Prop | Type | Default | Description | 
|---|---|---|---|
maxLength | 
number | Required | Number of OTP digits | 
render | 
(props: RenderProps) => ReactNode | Required | Render function for OTP slots | 
value | 
string | undefined | Controlled value of the input | 
onChange | 
(value: string) => void | undefined | Callback when value changes | 
onComplete | 
(value: string) => void | undefined | Callback when all digits are filled | 
containerStyle | 
ViewStyle | undefined | Style for the container | 
pattern | 
string | undefined | Regex pattern for input validation | 
textAlign | 
'left' | 'center' | 'right' | 'left' | Text alignment within input | 
pasteTransformer | 
(pasted: string) => string | undefined | Transform pasted text | 
| Prop | Type | Description | 
|---|---|---|
slots | 
SlotProps[] | Array of slot objects to render | 
isFocused | 
boolean | Whether the input is focused | 
| Prop | Type | Description | 
|---|---|---|
char | 
string | null | Character in the slot | 
isActive | 
boolean | Whether the slot is active | 
hasFakeCaret | 
boolean | Whether to show fake caret | 
placeholderChar | 
string | null | Placeholder character | 
The library is mainly inspired by otp-input and has a similar API, so we recommend using it on the web.
We can easily create the same component for web and create a new file for it (example/src/examples/apple.web.tsx)
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
- 
create-react-native-library for the library template.
 - 
otp-input for the original idea and some code.
 
