OtpInput
Component to input OTP or PIN codes with multiple boxes.
Supports custom placeholder, cursor, modes, sizes, and fully customizable behavior.
Usage
function OtpInputUsage() {
return (
<View>
<OtpInput secureTextEntry onComplete={(otp) => alert(otp)} />
</View>
)
}
Modes
Use the mode prop to switch between default underline or box-style inputs.
function OtpInputModes() {
return (
<View>
<OtpInput mode="box" />
<OtpInput mode="dash" />
</View>
)
}
Placeholder
Use the placeholder prop to show hint characters in each input box.
function OtpInputPlaceholder() {
return (
<View>
<OtpInput placeholder="*" status="success" />
</View>
)
}
With Cursor
Enable withCursor prop to display a blinking cursor in the focused input box.
function OtpInputWithCursor() {
return (
<View>
<OtpInput withCursor />
</View>
)
}
As Pin Input
Use the secureTextEntry prop to style the OTP input as a PIN code.
function OtpInputAsPin() {
return (
<View>
<OtpInput withCursor secureTextEntry />
</View>
)
}
Sizes
function OtpInputSizes() {
return (
<View>
<OtpInput size="small" />
<OtpInput size="medium" />
<OtpInput size="large" />
</View>
)
}
Custom
function OtpInputCustom() {
const [isCompleted, setIsCompleted] = React.useState(false)
return (
<View>
<OtpInput
maxLength={6}
withAlphanumericKeyboard
label="Custom OTP Input"
labelStyle={{color: 'cyan'}}
caption="Enter your OTP"
captionStyle={{color: 'green'}}
error={isCompleted ? 'OTP is required' : ''}
boxStyle={(isFocused) => ({
borderRadius: 40,
backgroundColor: isFocused ? 'blue' : 'gold',
})}
inputTextStyle={{
color: 'black',
fontWeight: 'bold',
}}
onChangeText={(otp) => {
setIsCompleted(otp.length !== 6)
}}
/>
</View>
)
}
Props
| Prop | Data Type | Default Value | Description |
|---|---|---|---|
| Extends | TextInputProps | -- | Inherits properties from TextInputProps |
| maxLength | number | 4 | Set the otp input length |
| boxStyle | StyleProp<ViewStyle> | ((isFocused: boolean) => StyleProp<ViewStyle>) | -- | Set the style for each box with isFocused prop |
| mode | "box" | "dash" | box | different view based on the mode |
| withCursor | boolean | -- | Set it to true to enable otp cursor |
| withAlphanumericKeyboard | boolean | false | Set the alphanumeric keyboardBy default it will use numeric keyboard |
| onComplete | (otp: string) => void | -- | onComplete callback with otp input text |