// the find
akveo/react-native-ui-kitten
React Native UI library built on the Eva Design System: 30+ themeable, accessible components for iOS, Android and web. TypeScript, React 19 / RN 0.81, Eva and Material themes with runtime light/dark switching, on-demand style compilation.
A React Native component library (30+ components) built on the Eva Design System, which separates visual theming into a JSON mapping layer so you swap themes at runtime instead of hardcoding styles. V6 is a from-scratch rewrite for React 19, RN 0.81 and the New Architecture — good fit for anyone starting a new app who wants a themeable kit without building their own design system, less good fit if you need something minimal and unopinionated.
The mapping/component split is a real architectural choice, not marketing: themes are data, and runtime theme switching with no reload actually works because of it. They shipped working Fabric support for RN 0.81 + React 19 already, while a lot of RN UI libraries are still stuck limping along on the old architecture. The v5-to-v6 migration (class components to hooks, a real breaking change) comes with an actual codemod in src/codemod with test fixtures and a VERIFIED.md, not just a markdown doc telling you to do it by hand. Packaging is done properly — dual CJS/ESM, tested against Metro, Vite and Jest, which avoids the usual 'works in Expo, breaks in bare RN' class of bugs.
Still pulls in react-native-svg as a native dependency for icons, so bare RN installs get a pod-install step and the usual native-linking friction that Expo users don't see. The mapping/style-compilation layer is an abstraction on top of RN styles — nice until a theme renders wrong, at which point you're debugging generated styles from a JSON mapping instead of reading plain inline styles. v6 is a very recent rewrite (last push 2026-10-06, so this is fresh), which means third-party extensions and Stack Overflow answers written for v5 are mostly dead weight for a while. Test coverage leans on jest snapshot specs per component (e.g. button.spec.tsx, calendar.spec.tsx) with no visual regression tooling mentioned, so subtle spacing/padding breaks from a mapping change could slip through CI.