Mobile components you can touch before you install
Every phone below runs the real component, not a video: press Try it live. Drag the sheet, swipe the rows, hold the button. Haptics, gestures, dark mode and reduced motion are built in.
$ npx shadcn@latest add https://goodui.dev/native/r/button.jsonCtrl K
80 components
Actions 7
Inputs 15
Navigation 6
Overlays 9
Feedback 8
Data 11
Screens (Pro) 24
Localization
One provider translates every built-in string of goodui Native (accessibility labels, announcements, button text) and sets the language for dates and numbers. It uses the same packs and component ids as the web kit, in 18 languages plus English.
npx shadcn@latest add https://goodui.dev/native/r/locale-tr.jsonapp/_layout.tsx
import { Stack } from "expo-router"
import { GooduiLocaleProvider, ThemeProvider } from "@/components/goodui-native/foundation"
import { Toaster } from "@/components/goodui-native/toast/toast"
import tr from "@/components/goodui-native/locales/tr"
export default function RootLayout() {
return (
<GooduiLocaleProvider lang="tr" labels={tr}>
<ThemeProvider colorScheme="system">
<Stack />
<Toaster />
</ThemeProvider>
</GooduiLocaleProvider>
)
}Put it around ThemeProvider so sheets and toasts follow it too. A single component overrides one string with its labels prop. For Arabic and Hebrew, call I18nManager.forceRTL(true) at app start; on the web, set dir on the document.
How localization works in goodui →