finds.dev← search

// the find

onejs/one

★ 4,489 · TypeScript · NOASSERTION · updated Sep 2026

❶ One lets you target React web and React Native with a single Vite plugin. Everything you need to build great websites and apps with unified routing.

One is a Vite-based framework (from the Tamagui team) that lets you write a single React codebase and ship it to both web and React Native, with unified file-based routing, loaders, and API routes across both targets. It's aimed at teams already invested in cross-platform React (Tamagui-style) who are tired of maintaining a separate Next.js app and an Expo Router app side by side.

The CI setup actually builds and tests native iOS, not just web — there's a dedicated ios-simulator-skill toolkit (screenshot capture, accessibility audits, gesture/keyboard scripting) plus workflows for building an iOS test container, which is more real device coverage than most 'universal React' projects bother with. The docs site (onestack.dev) is genuinely deep: loaders, middlewares, ISR, OTA updates, skew protection, deep linking, MDX — this isn't marketing copy, it's an actual reference for non-trivial routing scenarios. Multiple integration paths are represented in examples/ (pure Vite, Vite+Metro hybrid, bare RN), which suggests they've actually hit and worked through the friction points of getting Vite to cooperate with RN's native module story rather than hand-waving it.

The root README is a literal placeholder ('We'll get this filled out properly soon') — anyone landing on the GitHub page gets nothing, and all real information lives off-repo on the docs site, which is a bad first impression for a framework this large. The existence of an expo-blank-with-vite-metro example alongside the pure-Vite examples hints that the Vite-only native path still needs a Metro fallback in some cases — worth checking before committing to it for a real RN app. Forks (128) are thin relative to stars (4489), which usually means a lot of lookers and not much production adoption yet, so expect rough edges and slower community troubleshooting than an Expo Router or Next.js issue search would give you. Adopting it means learning One's own loader/middleware/routing abstractions on top of Vite — none of your Next.js or Expo Router muscle memory transfers directly, and you're depending on continued maintenance from a small team for a fairly deep piece of your stack.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →