DEV Community

Cover image for One by onestack.dev: The React Framework Nobody Asked For
Dishant Sharma
Dishant Sharma

Posted on

One by onestack.dev: The React Framework Nobody Asked For

The creator of One almost didn't post it. Nate Wienert, the guy behind Tamagui, opened his own Show HN with this line: "HN has really soured on frontend/frameworks. And I get it. We've collectively complicated the hell out of things."

He shipped it anyway on October 4, 2024. It hit 506 points and pulled 254 comments. And the weird part is what those comments were about. Barely anyone argued about whether One was good. They argued about being tired.

One is a React framework from onestack.dev. The pitch is that it unifies React web and React Native behind a single Vite plugin, so you stop running two frameworks, two bundlers, and a pile of glue code. The site leads with a benchmark: 3.6 seconds to cold-bundle a production iOS app, against 19.5 seconds for Metro. Same machine.

That number is the whole sales pitch. And I think it's the least interesting thing on the page.

What One actually is

If you build for web and mobile, you already know the setup tax. Next.js for the web. Expo for native. Two routers, two config systems, one long argument about shared components.

One replaces both with a npx one and a single plugin. Routing is typed and file-system based. You get nested layouts, groups, and .platform file forking, so a component can branch per platform without a mess.

The native side is where it gets cocky. One generates SwiftUI and Jetpack Compose bindings straight from the platform SDKs. So instead of hunting wrappers, you write this:

<One.iOS.Button label="Save" onPress={save} />
<One.Android.Switch isOn={on} onIsOnChange={setOn} />
<One.Haptics.impact('medium')>
Enter fullscreen mode Exit fullscreen mode

Haptics, storage, notifications, purchases, over-the-air updates with rollback. All in the box. No Expo required, though it still plays nice with Expo modules if you want them.

And there's zero lock-in, which is the part I did not expect. It builds to a plain dist folder. Your output targets are Vercel, Cloudflare, or a Hono server you run yourself.

The reaction was not about the framework

Here is what surprised me. I went in expecting a fight about Vite versus Metro. What I found was a support group.

The top threads were people telling their own stories. One dev at forty-something: "I'm definitely getting too old... I see this great work called 'one' and I get immediately turned off by so many 'new things.' It's me. Definitely me."

Another was blunter. "My immediate reaction to this wasn't excitement but, 'Oh fucking hell, not another one.'" He went on to call the churn "a waste of the limited time I have left in my life."

Nobody said One was bad. They said it was one more thing.

That's the whole reaction in one sentence. Not a review. A sigh.

And the stack people had retreated to tells you everything. Laravel and Vue3. Django with "larger doses of React where we need interactivity, but absolutely no SPA." PHP, htmx, Postgres, plain HTML. Rust and server-side rendering. One guy reduced his whole stack to C# middleware and full page reloads.

The tool isn't the problem. The workflow is.

That's the real story of the One launch. Not whether One works. Whether anyone has the appetite left to find out.

The honest critique nobody led with

The most useful comment in the whole thread came from a native iOS developer who actually downloaded the TestFlight demo. He didn't argue. He tested.

Here's what he found:

  • the notifications tab wouldn't scroll at all on his phone
  • dark mode didn't follow his system setting
  • tapping a feed item caused a jarring navigation title transition after the screen changed
  • hitting back from a notification dropped him on the Feed tab, not where he started

He also said the whole thing had "the normal uncanny valley feeling that React Native gives off." React Native trying to look native, but not quite making it.

Nate replied to that one directly, which I respect. He admitted the demo app "just has minimal investment" because a small team had a hundred things to pull off at launch.

A framework that promises to erase a hundred setup decisions is still built by a small team. And the demo shipped with bugs you'd notice in five minutes.

One year later, it actually shipped

Here's the part that changed my mind. One didn't quietly die the way a lot of Show HN darlings do.

On December 28, 2025, they posted v1 Release Candidate 1. "Over 1,800 commits since the announcement of the alpha about a year ago," Nate wrote. They thanked Pokai Chang for leading most of the work to maturity.

The RC added real things. A Metro mode, so you can ease off Vite for native if migration scares you. Middleware. Sitemaps. Parallel builds using worker threads, about 40% faster static generation.

4,544 stars. 129 forks. 32 open issues. Not React numbers, but alive. Shipping counts for more than a launch spike.

And I hadn't known this until I dug in: One started as a fork of Expo Router, which itself sits on React Navigation. So the framework positioned against Expo is partly built from Expo's own work. They say so on the blog. Small detail, but it says something about who actually built the roads.

The local-first claim that wobbled

One launched with a partnership with Zero to do local-first syncing. That claim got taken apart in the thread, and honestly it's a good read.

The objection: if the server disappears, does your app still work? Can you edit offline and merge later? Does it do end-to-end encryption?

The Zero founder, Aaron, showed up and gave one of the most candid vendor answers I've seen. "Zero won't support offline mutation at launch." And later: "we have recently tried to avoid claiming Zero and Replicache as local-first on our own sites to avoid this controversy."

So the marquee feature of the launch was walked back by the people building it, one week in. That's not a scandal. That's just what honesty looks like when the term got stretched past what the code does.


Right, a tangent. When I research frameworks now, I keep a tab open for the creator's personal blog, and it's almost always better than the launch post.

The pitch deck tells you what the tool does. The blog post six months later tells you what broke. You learn more from one honest "here's what we got wrong" than from ten benchmarks.

I don't know why we keep reading the deck first.


So should you use it

No. Most people should not use One.

If you're shipping a standard web app, use Next.js. If you're shipping a standard mobile app, use Expo. Both have thousands of people who've already hit your bug and posted the fix. The ecosystem is the feature.

One is for a narrow person. You're building genuinely cross-platform, you want web and native from one codebase, and you're willing to be early. The mobile share number is what makes it real. If you ship both, the plumbing you're replacing is actual months of work.

That person exists. There just aren't many of them, and the HN thread proved it. The room was full of people who used to be that person.

And One is not Expo's killer. Read the blog. It's a fork of Expo Router. It plays with Expo modules. This is not a war. It's a shinier path through the same forest.

Where this leaves me

I keep going back to that first line Nate wrote before he posted. He knew the room was tired. He posted anyway, and then spent days in the comments answering the fatigue, not just the code.

That's the thing I'll remember. The framework is clever. The benchmark is fine. But the moment that stuck was a tired room and a guy who showed up to it anyway, then actually shipped v1 a year later.

The churn is real. Most of these frameworks don't deserve your Sunday. But every so often, one of them treats you like an adult about it.

I'll still probably use Expo on my next project. But I'm glad One exists.

Top comments (0)