A performant, animated, and auto-sizing number input for React Native and Expo. Supports both Expo Managed and Bare workflows.
- Animated digit transitions
- Auto font-size adjustment based on container width
- Supports decimal and thousand separators
- Prefix and suffix support
- Custom animation duration and styles
- Works in both Expo and Bare React Native
- Written in TypeScript
npm install react-native-animated-number-input
# or
yarn add react-native-animated-number-inputPeer dependencies:
react-native-reanimated(v3+)react-nativereact
import { AnimatedNumberInput } from 'react-native-animated-number-input';
export default function MyScreen() {
const [value, setValue] = React.useState('1234.56');
return (
<AnimatedNumberInput
value={value}
onChangeText={setValue}
precision={2}
maxFontSize={48}
containerStyle={{ width: 200 }}
prefix="$"
suffix=" USD"
decimalSeparator=","
thousandSeparator="."
animationDuration={200}
placeholder="Enter a number"
textStyle={{ color: '#222', fontWeight: 'bold' }}
/>
);
}A fully controlled, animated, auto-sizing number input component.
| Prop | Type | Default | Description |
|---|---|---|---|
value |
string |
Required | The current value of the input (controlled). |
onChangeText |
(value: string) => void |
Required | Callback when the value changes. |
textStyle |
TextStyle |
{} |
Style for the input text. |
containerStyle |
ViewStyle |
{} |
Style for the container. |
decimalSeparator |
string |
'.' |
Character to use as the decimal separator. |
thousandSeparator |
string |
',' |
Character to use as the thousand separator. |
prefix |
string |
undefined |
String to display before the number (e.g., currency symbol). |
suffix |
string |
undefined |
String to display after the number (e.g., unit). |
precision |
number |
2 |
Number of decimal places to allow. |
animationDuration |
number |
100 |
Duration of digit transition animations in milliseconds. |
maxFontSize |
number |
64 |
Maximum font size for the digits. |
exiting |
EntryOrExitLayoutType (Reanimated animation) |
FadeOutDown.duration(animationDuration) |
Animation for exiting digits. |
entering |
EntryOrExitLayoutType (Reanimated animation) |
FadeInDown.duration(animationDuration) |
Animation for entering digits. |
placeholder |
string |
undefined |
Placeholder text when the value is empty. |
| ...TextInputProps | All other TextInput props except value/onChangeText |
You can pass any other valid TextInput prop (e.g., autoFocus, keyboardType, etc.). |
<AnimatedNumberInput
value={value}
onChangeText={setValue}
precision={2}
maxFontSize={48}
containerStyle={{ width: 200 }}
prefix="$"
suffix=" USD"
decimalSeparator=","
thousandSeparator="."
animationDuration={200}
placeholder="Enter a number"
textStyle={{ color: '#222', fontWeight: 'bold' }}
autoFocus
/>See the example/ folder for a working Expo + Bare React Native demo. The example demonstrates:
- Animated transitions
- Auto font sizing
- Prefix/suffix
- Custom separators
- Placeholder
- Custom styles
PRs and issues welcome! Please open an issue or submit a pull request.
See CONTRIBUTING.md for guidelines.
See CHANGELOG.md for release notes.
This project follows a Code of Conduct to foster an open and welcoming community.
MIT © Sivantha Paranavithana

