How layout versioning works
A Forest project has two independently versioned parts:- Back-end code, your back-end customizations (datasources, actions, computed fields, hooks). Versioned with Git.
- Layout, your UI configuration (field visibility, columns, segments, forms, dashboards). Versioned with Forest branches.
Environments and layouts
Each environment has its own layout:| Environment | Typical use |
|---|---|
| Development | Your personal branch, safe to experiment |
| Remote (staging) | Test layout changes with your team before production |
| Production | Live layout seen by all operators |
Creating a branch
A branch is created from an existing environment’s layout. Use the Forest CLI:my-feature-layout that starts from the production layout. Switch to it:
Making layout changes
With your branch active, open the Forest UI in your browser. Enter Layout Editor mode and make your changes, reorder columns, create segments, configure forms. All changes are saved automatically to your branch.Comparing layouts
Before deploying, review what changed:Deploying changes
To push your branch to a remote (staging) environment:Rolling back
If a layout change causes issues in production, roll back by deploying a previous branch or resetting the environment:Layout rollbacks only affect the UI configuration, your back-end code and database are not touched.
Team collaboration
When multiple people work on the same project:- Each developer works on their own named branch
- Branches are isolated, one developer’s changes don’t affect another’s view
- Changes are only visible to others after a push or deploy
- The CLI
forest branchcommand lists all active branches
Avoiding conflicts
Layout branches don’t support merging, deploying one branch’s changes overwrites the target. To collaborate safely:- Communicate which collections or features each person is working on
- Work on distinct parts of the layout to avoid overlap
- Use short-lived branches and deploy frequently
Best practices
Name branches descriptively
Name branches descriptively
feature/add-order-segments is clearer than dev-branch-1. Use kebab-case.Keep branches short-lived
Keep branches short-lived
The longer a branch lives, the more it diverges from production and the harder it is to deploy cleanly.
Always test in a remote environment first
Always test in a remote environment first
Before deploying to production, push to staging and verify the layout renders as expected for at least one operator role.
Use schema:diff before each deploy
Use schema:diff before each deploy
Read every change before pushing. The diff is the last review gate before operators see the change.