The toolchain
The toolchain
For a reader who runs uf rather than writes the application: the person who pins the runtimes, owns the pipeline, tunes the linter and decides what is cached. One guide per command, each saying what the command runs, what it reads and what it refuses.
What you need first
A project, or a repository you are adding uf to — Start makes one. uf in CI has a recipe for GitHub Actions, GitLab CI and CircleCI, and the rules under the recipes apply to any other system.
The pages, in order
- Dev and buildVite runs both; uf decides what it is handed.
- Formatting and lintingThe official Flow parser, a Rust printer, and Flow's own lints.
- TestingA Rust runner, host workers, and where it stands against Bun.
- EnvironmentsA pinned toolchain per repository, in a shared store, with a collector.
- uf in CIGitHub Actions, GitLab and CircleCI: one step each, why they all pin, and the install a check is worthless without.
The commands you run all day come first — the dev server and the build, the formatter and the linter, the tests — then what they run on: which Node.js, which Bun, which package manager, pinned. uf in CI is last because it is all of the above, run by a machine.
Which page covers which command
| Command | Guide |
|---|---|
uf dev, uf build | Dev and build |
uf preview, uf start, uf build --adapter, uf build --compile | Targets |
uf fmt, uf lint | Formatting and linting |
uf check | Formatting and linting |
uf test | Testing |
uf env, uf use | Environments |
uf install, uf add, uf remove, uf update, uf why, uf ls, uf audit, uf search | Dependencies, in the command reference |
uf run, ufx | uf run and tasks, in the reference |
uf lsp, uf mcp | none yet |
Type checking, packages, tasks, editors and agents have no guide of their own yet. They are being written under #943, and until they land the command reference is what documents those commands. Every command not in the table is there too.
When you are done
Reference is the whole surface of each command — every flag, every config key and its default — for when a guide has told you which one you need.