Readiness: Experimental
Targets
Targets
One build, served by uf start, written out for Node.js, Bun, Deno, a
container, Cloudflare Workers, AWS Lambda or a static host, or compiled into a
single executable — and the two targets that are not a browser: a phone, and a
terminal. Each page says what is established and what is not yet.
Most read
- Start hereDeploy a web buildChoose how to serve a uf web build: preview, start, adapters, static files, or one executable.
- React Native targetNative route files, Metro, navigator events and the test-tree surface.
- Terminal UIReact with a terminal for a host: flexbox, cells, and only the ones that changed.
What you need first
An application that builds — Build an app. React Native and the terminal each say on their own page what else they need.
The web, deployed
uf build writes the client bundle, the prerendered documents and a server
bundle. Deploy a web build is the guide for choosing what to
run next. The options differ in what the machine that answers a request has to
have — not in the answer, which is the same from all four:
| Command | What you get | The host needs |
|---|---|---|
uf preview | Vite's preview server over the build, to check it before you deploy | the project, its dependencies and Vite |
uf start | uf's own server, with no bundler in the process | a JavaScript host, node_modules and the build |
uf build --adapter | a directory for one platform: node, bun, deno, container, edge for Cloudflare Workers, serverless for AWS Lambda, or static | whatever that platform is |
uf build --compile | one executable file with the runtime inside it | nothing |
Which of them a project may use is decided by its routes. A route handler, a
middleware, a server action the browser can call, and a redirect, rewrite or
response header in app.router
each need a server, and a static host has none:
Choosing a deployment shape is
the table, and uf build --adapter static refuses a project that has any of
them, by name.
What is established is written down beside the commands. The deployment guide keeps the decision in one place, and the command reference keeps the complete adapter detail, including the current limit: no server adapter's output has been deployed to a real platform by uf's own pipeline yet.
A phone, and a terminal
- Deploy a web buildChoose how to serve a uf web build: preview, start, adapters, static files, or one executable.
- React Native targetNative route files, Metro, navigator events and the test-tree surface.
- Terminal UIReact with a terminal for a host: flexbox, cells, and only the ones that changed.
React Native target is a target rather than a flag: native route files, Metro, a navigator contract, and test-tree queries that do not pretend there is a DOM. It is the least finished part of this section — uf cannot mount into a real native host yet — and the page opens with what works today. Terminal UI is React with a terminal for a host: the same components and hooks, laid out with flexbox and drawn as cells.
When you are done
Reference is next: every command, flag, config key and export. The toolchain is the commands you run against all of this: the tests, the environments they run on, and the pipeline that runs them.
Edit this pagedocs/app/guide/targets/$page.mdx