Skip to main content
Version: Next 🚧

Migrate from react-native-otp-entry

- import { OtpInput } from 'react-native-otp-entry';
+ import { OtpField } from '@elik56a/react-native-pickers';

- <OtpInput
- numberOfDigits={6}
- focusColor="#007AFF"
- onTextChange={setCode}
- onFilled={verify}
- theme={{ pinCodeContainerStyle: styles.cell, focusedPinCodeContainerStyle: styles.focused }}
- />
+ <OtpField
+ autoFocus
+ onChange={setCode}
+ onComplete={verify}
+ theme={{ colors: { primary: '#007AFF' } }}
+ styles={{ cell: styles.cell, focusedCell: styles.focused }}
+ />
otp-entryReact Native Pickers
numberOfDigitslength (default 6)
onTextChangeonChange
onFilledonComplete
autoFocus (default true)autoFocus (default false)
focusColortheme={{ colors: { primary } }}
type="numeric" / "alphanumeric"inputMode="numeric" / "text"
secureTextEntry / disabledsecureTextEntry / disabled
blurOnFilledonComplete={(code) => { Keyboard.dismiss(); verify(code); }}
hideStickstyles={{ caret: { opacity: 0 } }}
theme.containerStylestyles.container
theme.pinCodeContainerStylestyles.cell
theme.focusedPinCodeContainerStylestyles.focusedCell
theme.filledPinCodeContainerStylestyles.filledCell
theme.pinCodeTextStylestyles.cellText
theme.focusStickStylestyles.caret
ref.clear() / ref.setValue(code)a controlled value
textInputProps.accessibilityLabelaccessibilityLabel (default Verification code)

Without a styles override, OtpField's cells look like the design's text fields: iOS on iPhone, Material on Android and outlined boxes with a focus ring on the web.

See all migration guides for other libraries, and Comparison for when another library is the better choice.