Unified toolchain for Flow
Build the strongest React
experience with Modern Flow.
uf gives Flow-first React apps one native command for dev, builds, tests, formatting and linting. The official Flow parser, React Compiler and oxc stay in the same toolchain, with one config file for the whole path.

0.0.0-alpha. Interfaces move without warning, and every @uniflowed/* release on npm is a prerelease under the alpha tag. The guide says what works today and where it loses to the tools it means to replace.Install it
One binary. It reads the checksum from the release manifest before it writes anything, and it is short enough to read first.
curl -fsSL https://setup.uniflowed.dev | shThen a project, and a dev server, with nothing to configure in between:
uf new my-sitecd my-site && uf devThat is the whole setup. No npm install of a toolchain, no config to copy from somewhere. If you would rather build from source, or pin the project to Bun or Deno, the install page covers both.
What a build looks like
uf builduf build docs
──────────────
config ························ 105.2µs
routes ························ 402.2µs
router types ························ 300.7µs
rsc analysis ························ 4.7ms
vite ························ 2.11s
manifest ························ 134.7µs
total ························ 6.44s
engine vite
host node
prerendered pages 14
modules 12
There is no vite.config.ts next to that, no babel.config.js, and no @babel/preset-flow in the dependency tree. Flow reaches JavaScript through Meta's own Rust parser and React's own compiler, both linked into the binary.
What it claims
- Flow without Babel
- The official Flow parser, the official React Compiler and oxc, in one Rust pipeline.
component,hook,matchand enums are lowered where they are parsed. How it works - Vite, not a fork of it
- The dev server and the production build are Vite 8. uf decides what Vite is handed and drives it over a JSON protocol, so Vite's plugin ecosystem keeps working. Dev and build
- Tests that actually run
- Rust owns discovery, ordering, the worker pool and the report; the host runs the bodies. About nine times faster than Vitest on 1,000 tests — and about three times slower than Bun, which the guide explains rather than hides. Testing
- One config file
uf.config.jsconfigures the runtime, the router, the build, the test runner and the formatter. It is Flow, so it is type-checked like the rest of your code. Every option- Any JavaScript host
- Node.js, Bun and Deno are capabilities, not targets: uf asks the host what it can do and picks one. The same project builds and tests on all three. Install