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
Create a Branch
Fork the app's current files into a new named branch. This is cheap — just a database row, no server is started yet.
Activate It
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.
Edit It
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.
Review, Then Decide
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 branch | Shared 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.