One is a unified cross-platform React web and React Native framework that lives entirely in a Vite plugin. One v1 is almost here - we've just released 1.0.0-rc.1, marking it ready for production use. With over 1,800 commits since the announcement of the alpha about a year ago, we're incredibly proud of the simple, robust framework it's become.
One makes building apps for both web and native a delight, bringing simplicity and sanity to what typically is an incredibly messy affair. Where before you'd need two frameworks, two bundlers, and a ton of glue code, with One it's now as simple as can be - Vite, a single plugin, and some file-system routes. Thanks to a lot of work spent on render modes, Vite setup, and profile-guided optimizations, One makes it possible for the first time to get 100 on your web Lighthouse performance score, even while sharing nearly all your code with native.
One is a great framework even if you are only targeting web. In a world haunted by the complexity of RSC, One has always taken a simple-is-better stance, while still giving you best-in-class features:
- Typed file system routes with
.platformfile-level forking. - Fully typed links, params, and more with auto-generation.
- Global and per-page render modes - SSR, SSG, SPA - for flexibility and performance.
- Typed loaders for easy and simple data loading.
- Lock-in-free: build to a
distfolder, built-in Hono production server. - new Metro-mode: use Metro for native, for maximum compatibility.
- new Middleware for request interception and shared context.
- new Sitemaps with per-route overrides.
- new Deploy to Vercel or Cloudflare workers with a single config option.
- new useLoaderState, setServerData and getServerData for advanced data loading.
- new Automatic NativeWind and Reanimated detection and support.
- new Advanced loading strategies that significantly improve Lighthouse scores.
For the full changelog, see the release notes.
Getting Started
The quickest way to start:
npx one
Pick a starter and you're up and running. From there, check out the introduction, routing guide, or deployment docs.
Thanks
One started as a fork of Expo Router, built on top of vxrn. Thank you to the Expo team for their incredible work.
A huge thank you to Pokai Chang, who did the vast majority of the work bringing One to v1. From countless bug fixes to major features, Pokai has been instrumental in making One what it is today.
Thanks also to Quan Nguyen for helping out along the way. And to those who helped get One off the ground: Fatih Aygün, Hiroshi Ogawa, Matias Capeletto, and Dan Maier (for the one package name).
One builds on excellent open source work:
- Vite
- React Navigation
- Expo
- Remix
- Software Mansion — react-native-screens, gesture-handler, reanimated
Community
We'd love to have you involved:
- Join our Discord to chat, ask questions, or share what you're building
- Open an issue if you hit a bug (repros help a lot!)
- Contributions welcome — docs, examples, bug fixes, or just helping others in Discord