It's production ready for web and as an API server, Native still needs more love but has been in development for over a year and now works with a majority of React Native dependencies.
The Tamagui website and theme builder SPA run One in production, and we've tested porting a variety of apps to Native successfully, including the entire Uniswap UI package, which involved fixing a large number of dependencies.
There's a few things that we need to improve:
See the Status documentation for more on the general stability of the high level API surfaces.
There's a ton you could cover here. We'll compare in part to vxrn, the underlying Vite plugin One uses to power React Native support.
Pros:
exports
field and other modern module features.require
calls that are unused, whereas Metro always attempts to import require calls, even if the are behind falsy process.env
checks.Cons:
One shares many similarities on the routing level with Expo Router, though we've added modes, loaders, and other features. The routing portion of One began as a slimmed-down fork of Expo Router, though we've since re-written a chunk of the internals.
The vast majority of One was written by our team, but we've kept much of the file-system routing the same as we think the Expo team did a great job with the API. Plus, the React Native ecosystem benefits.
We appreciate the work the Expo team has done and look forward to collaborating with them. We recommend you use Expo Go and EAS with One to run and build your apps.
A big thanks to Dan Maier, who donated it after being unused for 7 years with under 20 downloads a week
We plan to support a limited subset, but not in the immediate future.
We think Zero makes for such a dramatic simplification of data - loading, mutating, and realtime sync - that we want to avoid much of the complexity of Server Components while retaining some of the upsides.
What we do like about RSC is that ability to avoid sending some parts of your React tree to the client to save bundle size, and potentially Server Functions. We're exploring bringing these to One carefully.
What we don't like is that by allowing mixing client and server trees so dynamically, they tend to have a "function coloring" like effect, where once you use them in one place, your whole apps routing at a fundamental level becomes "server-first." This is not good for UX - avoiding server round trips, and having to split mental models between server and client, are a big part of the reason we love Zero. We think there's ways to avoid this contaminating effect with a subset of RSC.
Edit this page on GitHub.