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

# Preview vs production

> Review a hosted version privately before you publish the public site.

Preview gives site members a hosted version to review. Production is the public site. A Preview deploy never publishes your site.

## Create a hosted Preview

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

`fimo deploy` commits pending changes, pushes the current Branch, updates that Branch's Preview, and returns its Fimo Studio URL.

Before it returns the Studio link, Fimo waits for the sandbox to answer. Use `--no-wait` only when you deliberately want to return after sync without that readiness check.

If the current changes are already deployed, retrieve the link without deploying again:

```bash theme={null}
fimo preview url
```

> [!NOTE]
>
> The Preview is a review artifact, not your stable public website URL.

When content changes while you are viewing a hosted Preview in Studio, the existing page stays visible until the live preview is ready to display. Opening Edit mode can still show a loading screen while editing starts.

When you create a Branch from another Branch, its Preview reads its own content. You can edit that content in Studio and see the changes without deploying the new Branch first. The parent Branch keeps its original content.

New hosted preview builds adapt framing rules in your Fimo hosting configuration so Studio can embed the site. With updated Fimo packages, this also covers Next.js `headers()` configuration, Astro middleware, and SvelteKit hooks and native CSP. Astro and SvelteKit integrations apply the adjustment to both hosted and live previews. Published sites retain their original policy, and unrelated security rules stay unchanged. Rebuild older previews to apply the change. Headers added by an external proxy or another framework's middleware may still require a preview-specific adjustment.

When you open Preview, Studio checks that the hosted page is available and allows embedding. Otherwise, it switches to the live preview automatically. You may see a loading screen while it starts. If application middleware also blocks embedding in the live preview, that policy still needs a preview-specific adjustment.

## Upgrade an older site

If Preview says your site uses an older version of Fimo, select **Upgrade site**. Fimo opens your existing site chat and sends the upgrade request there.

Follow the progress in chat. Preview becomes available after the upgrade succeeds. If the upgrade fails, continue in the same chat to resolve the problem and retry.

Your published site stays online while the site is upgraded. Review the upgraded Preview before publishing any changes.

Publishing is paused until the upgrade succeeds. **Publish** is disabled and explains why, and `fimo publish` and `fimo deploy --publish` are refused. Everything about your live site keeps working: its URLs stay online, custom domains stay connected, publication history stays available, and you can still unpublish.

Fimo checks the site's configured Production source Branch, not the Branch you are viewing. Upgrading the Branch you preview from does not lift the gate until that Production source is upgraded too.

A static Vite site can remain visible in Preview without visual editing. Installing the `fimo` CLI alone does not connect the page to Studio. When Fimo detects that the integration is missing, it leaves the page visible without editing controls instead of repeatedly reloading it. Connect the [framework integration](/docs/cli/frameworks.md) to enable editing.

## Publish production

Publish only after you have reviewed the Preview and merged the change into the site's Production source Branch. Existing sites use `main`:

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

`fimo deploy --publish` pushes the configured Production source Branch and publishes it. `fimo publish` publishes the revision already on the Fimo remote without pushing. Fimo refuses either command from another Branch.

Site managers can choose another source from **Site Settings → Environments**, on the Production card.

A failed publication never replaces the live version. Fimo reports it by email and on **Publish** in Studio; see [Publish in Studio](/docs/studio/publish.md#if-a-publication-fails).

| Destination | Command | Who can open it |
| - | - | - |
| Local development | Your site's dev command | You on your computer |
| Hosted Preview | `fimo deploy` | Signed-in site members |
| Production | `fimo deploy --publish` | Public visitors |

> [!WARNING]
>
> `fimo deploy --publish` makes the current Production source revision public. Use plain `fimo deploy` until you intend
> to go live.

## What's next

> [card] [Launch checklist](/docs/environments/launch-checklist.md)
>
> Check the site, URL, and recovery path before launch.

> [card] [Deploy & publish](/docs/deploy/overview.md)
>
> Choose the right CLI command.

> [card] [Publish in Studio](/docs/studio/publish.md)
>
> Publish without the command line.

Fimo no longer restores or synchronizes the old template runtime into legacy sites. Upgrading replaces that runtime with the current packages. Modern `.fimo` configuration, site links, and agent files remain part of your site.

Migration eligibility and migration sponsorship depend on the site version, regardless of where the site was created. Old `source` configuration values do not exempt a legacy version from upgrading.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.