Radial app

Publishing

Publishing is git: commit, push, and your host deploys. Radial keeps your edits isolated on a staging branch so main is never dirtied directly, and ⌘⇧Return ships when you're ready.

The branch model

Edits you make in Radial live on the staging branch. That gives you a working buffer between "I changed something" and "it's live." Nothing lands on your production branch until you publish there. Commit messages are written for you, summarizing what actually changed.

Staging

Publish to staging pushes the staging branch. On a repo connected to Vercel, that produces a preview deploy: a real URL you (or a client) can check before anything touches production.

Production

Publish to production follows the project's policy: either push straight to main, or open a pull request for review.

No GitHub? Still publishes

A project without a git remote can still ship: connect Vercel and Radial deploys directly, with a stable staging URL and a production deploy, no repository setup required. You can add GitHub later and the flow upgrades to the branch model above.

For sharing work with clients specifically, Present to client… in the publish menu wraps the deploy in a branded review page; see Client review.

Per-project configuration

Publish policy lives in a committed .radial.json at the repo root, so it travels with the repo and every collaborator (or client) inherits the same behavior:

{
  "productionPublish": "direct" | "pr",
  "productionBranch": "main",
  "stagingBranch": "staging"
}

Set "productionPublish": "pr" for client repos where production changes should be reviewed, and "direct" where you own the site and want one-click ship.

Where your site lives (Vercel)

Publish settings show a Hosting row with the truth about your deployment: which Vercel project and team this folder is linked to, and the site's real domain, detected from Vercel rather than guessed. That matters because the default domain is not always <project>.vercel.app: when a name is taken, Vercel silently assigns a suffixed one (say acme-five.vercel.app), and a custom domain replaces the default entirely. Radial shows whichever is actually serving.