App Branching

Fork an app's files into a named branch to try a risky or experimental change — a redesign, a new pricing page, a big rewrite — without touching what's live. Each branch gets its own live preview, separate from the app's real URL and from every other branch.

How It Works

1

Create a Branch

2

Fork the app's current files into a new named branch. This is cheap — just a database row, no server is started yet.

3

Activate It

4

Spin up the branch's own live preview so you can view and chat-edit it independently. Activating is reversible and idempotent — reopening an idle branch just wakes it back up.

5

Edit It

6

Chat with the AI to modify the branch — changes save to the branch only, never to the live app. If the branch has an active preview, edits sync there in real time.

7

Review, Then Decide

8

Compare the branch's preview against the live app. Keep working, or discard it — the live app is never affected either way.

What's Isolated vs Shared

Isolated per branchShared with the app
Files✅ Each branch has its own file snapshot
Live preview URL✅ Separate from the app's real URL
Database / backend✅ Branches share the app's existing data

Branching is files-only today — a branch can't make schema-changing backend edits that diverge from the live app's database. For frontend changes, copy tweaks, and most feature work, this isn't a limitation you'll notice.

Idle Branches

An inactive branch's preview automatically scales down after a short idle period to save resources — reopening it brings it back. Branches you're not actively using don't cost anything extra.

Using It

Branching is available from the app builder UI, and as tools in the MCP integration (list_branches, create_branch, activate_branch, delete_branch) — so you can create and manage branches directly from ChatGPT, Claude, or Gemini.

What's Next

Merging a branch back onto the live app is on the roadmap; today, review a branch's preview and re-apply the changes you want to keep via chat on the main app.