Overview
Canvas apps have built-in version control. Every time you publish config changes or deploy a new code bundle, an immutable version record is created with:- A content hash (SHA-256) — like a git commit SHA
- A commit message (required) — describes what changed
- A full config snapshot — serialized as diffable JSON files
- Who published and when
How versioning works
There are two ways a new version is created:
Both paths create a
VersionRecord in the app’s versions array. The version number auto-increments.
Content hashing
When you publish, Mixpeek generates a deterministic SHA-256 hash of your entire config snapshot. This hash changes only when the config actually changes — identical publishes produce the same hash.Config as diffable files
Your app config is serialized into individual JSON files for each top-level key. This makes version diffs meaningful:Listing versions
Viewing version details
Get full metadata for a specific version, including the source files snapshot and which environments it’s active in:Diffing versions
Compare any two versions to see what changed — likegit diff v1..v2:
summary counts file-level changes (based on content hashes). The source_diff provides unified diffs of the actual content — the same format as git diff.
Rollback
Quick rollback (one level)
Restore the previous published config instantly:Restore any version
For deploy-based versions (code bundles), restore any specific version to any environment:Download a version’s bundle
Download the original zip bundle for any deployed version and work locally:1
Download the bundle
2
Download and extract
3
Edit files locally
Make your changes to the extracted source.
4
Re-zip and deploy

