> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fimo.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Preview vs production

> The difference between an on-demand hosted preview and going live in production.

Fimo separates a hosted **preview** from **production**. Your everyday iteration loop is local (`pnpm dev`); previews and production are what you reach for when you want a hosted link or to go live.

## Local vs hosted

The local dev server is localhost only. The Fimo dashboard preview and the shareable preview URL are served by the deployed sandbox — so seeing the site in Studio or sending someone a link requires a `fimo deploy`.

## Preview — `fimo deploy`

```bash theme={null}
fimo deploy -m "feat: homepage"
```

Plain `fimo deploy` is on-demand and reversible. It commits pending changes, pushes to the current environment's branch, syncs that environment's preview sandbox, and prints a shareable preview URL. Run it at logical breakpoints when you want a hosted preview or a link — not after every edit.

<Tip>
  Just need the current preview URL again (to open, screenshot, or hand off)? Run `fimo preview url` — sub-second, no
  commit or push. Never redeploy just to refresh a link.
</Tip>

<Note>
  For a headless or content-only project, a project manager can turn on **Disable Preview** in Project Settings. Preview
  navigation disappears, `fimo deploy` syncs changes without warming Preview, and `fimo preview url` explains that
  Preview is disabled. You can enable Preview again later.
</Note>

## Production — `fimo deploy --publish`

```bash theme={null}
fimo deploy --publish
```

`--publish` pushes what's on `main` and flips the project live in one shot — the simple "ship it" path. It runs from `main` only. Use it when the user signals "go live" or "publish"; plain preview is the default the rest of the time.

For a **versioned, tagged** release instead, use `fimo publish --version <ver>`, which tags `main@HEAD` as `release/<ver>` and triggers the prod swap. Reach for it when release semantics matter; otherwise `fimo deploy --publish` is the lighter default.

## At a glance

| Command                 | Serves                         | Runs from   | When                             |
| ----------------------- | ------------------------------ | ----------- | -------------------------------- |
| `pnpm dev`              | localhost (you only)           | any branch  | Your iteration loop.             |
| `fimo deploy`           | hosted preview / shareable URL | any env     | Show a hosted version or a link. |
| `fimo deploy --publish` | production (live)              | `main` only | Ship what's on `main`.           |
| `fimo publish`          | production (versioned release) | `main` only | A tagged `release/<ver>`.        |

<Note>
  A renamed default URL or custom domain only resolves after the site is published — before that it returns "Project Not
  Found".
</Note>

## What's next

<Columns cols={3}>
  <Card title="Deploy & publish" icon="cloud-arrow-up" href="/docs/deploy/overview">
    The full deploy pipeline.
  </Card>

  <Card title="Environments" icon="code-branch" href="/docs/environments/overview">
    Per-environment previews.
  </Card>

  <Card title="Custom domains" icon="globe" href="/docs/deploy/custom-domains">
    Put your site on your own URL.
  </Card>
</Columns>
