Version 2.0 needs React 19, React Native 0.84+ and Reanimated 4, and removes the APIs deprecated in 1.x. The renames below cover most apps. The guide lists every change with before and after code.
Switch light, dark or system instantly, or swap the whole look with a theme variant. Native-UI ships two: Aurora (the original) and Bloom (soft, rounded, violet). Each variant carries its own accent presets, customAccent overrides a single colour, and theme.components overrides the tokens of any component. You only pass what changes.
Every interactive component ships with accessibility defaults: roles, labels, hit slop, screen reader announcements and reduced-motion support. Text colours are checked against WCAG contrast on every surface (minTextContrast, 4.5 by default, 7 for AAA). You can override any default per instance.
<NativeUIProviderconfig={{ minTextContrast: 7 }}>
<Buttontitle="Save"accessibilityHint="Saves your changes and moves to the next step"onPress={save}
/>
</NativeUIProvider>
Platform behaviour
Components adapt to the host platform: haptics, safe areas, keyboard handling and dialogs follow iOS and Android conventions, InputPrompt uses the system prompt on iOS, and screen readers can close sheets with their escape gesture. You get platform correctness without writing platform code.
// The same sheet on iOS and Android: drag it down to dismiss it.<BottomSheetvisible={open} onClose={() => setOpen(false)}>
<BottomSheet.Header>
<Headinglevel={3}>Chooseaplan</Heading>
</BottomSheet.Header>
<BottomSheet.Body>
<PlanList />
</BottomSheet.Body>
</BottomSheet>
Localization New
Every string the library renders, from button hints to countdown units, comes from labels. Pass a locale and only the labels you translate. The rest stay in English. Icons and the back chevron mirror in right-to-left layouts.
Peer ranges now start at verified versions: React 19, React Native 0.84, Reanimated 4 (required), Safe Area Context 5, DateTimePicker 9.
usePressableScale always uses Reanimated; its result no longer has isReanimated and animatedStyle is a Reanimated animated style.
Color: new onPrimary, onSuccess, onWarning, onError, onInfo tokens computed with WCAG contrast (minTextContrast, default 4.5). Light-mode primary buttons now use dark text where white was unreadable (1.7:1 on the default green). textInverse is an alias of onPrimary. The default light error is now #DC2626 (white on the old #EF4444 was 3.8:1). getContrastText uses WCAG luminance. New helpers: contrastRatio, resolveOnColor, withAlpha.
+18 more…
v1.7.2
Stable
Fixed
Fix type checking against React Native 0.87 and newer. Box and Stack no longer assign to readonly style properties, and the ref of Input, TextArea and SearchBar is typed as the TextInput instance via ComponentRef<typeof TextInput>, which matches older React Native versions as well. Input, TextArea and PressableScale now declare their exported types explicitly, so the published declarations no longer depend on React Native internal type names.