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

# Preview in the portal

> Render one contribution against fixture data in the developer portal, with no install.

The Preview page in the developer portal renders one contribution at a time against an in-memory
bridge. Nothing is installed, no token is minted, and your server is not called — it is the
shortest loop for looking at a component.

```bash theme={null}
tappify extension dev
```

The second line it prints is the preview URL, with your local remote entry already in it. Open it
and pick a contribution. **Reload** is for after you change the **Remote entry** field yourself.

## What answers the bridge

The frame is sandboxed: it runs in an opaque origin with no access to the portal's session,
cookies or storage. `tap` is the same in-memory mock your own tests build, with every scope
granted, `tap.ui.size` fixed at `slot`, and the sandbox fixtures behind `tap.data` — so a
component that renders here renders the same way under
[`renderWithTap`](/extensions/test/testing-with-the-sdk). Navigation, toasts,
confirmations and action runs are recorded and go nowhere; storage writes live in memory for as
long as the frame does.

A procedure is the one call with no answer here. The frame registers no server handler, so
`tap.server.<name>` raises `TAP_UNKNOWN_PROCEDURE` and a widget that reads through
`useTapServer` renders its error state. Procedures are answered by a live session started with
`--server <tunnel url>`, and nowhere else while you are developing.

What the preview does not do: mint an install token, read the owner's data, write hosted
storage, or reach your server. For those, use
[live preview](/extensions/test/live-preview).

## Previewing a deployed build

Any `https` remote entry works — paste it into **Remote entry**, or point the CLI at it:

```bash theme={null}
tappify extension dev --remote https://previews.example.com/pr-42/remoteEntry.js
```

That covers branch previews. If your team deploys previews through Zephyr Cloud or a similar
service, the preview URL for a branch is already an `https` remote entry, so it previews here
with no configuration on either side and nothing in Tappify depends on how you built it.

`http` is accepted only for `localhost` and `127.0.0.1`. Anything else comes back as "That
remote entry was refused. The preview loads https URLs, and http only from localhost."
