Deploy Safety

What persists in Vango, how schema IDs work, and why generated artifacts are part of the contract.

Updated 2026-05-09Edit this page

Deploy Safety

Vango treats state compatibility as a framework-level concern. That means persistence, schema IDs, and generated artifacts are part of normal app authoring, not optional cleanup work.

What Persists

Vango supports deliberate persistence through:

  • SessionKey

  • SharedSignal

  • GlobalSignal

Everything else should remain local unless you explicitly want durable behavior.

Not persisted:

  • setup.Signal

  • setup.Memo

  • setup.Resource

  • setup.Action

  • props, lifecycle state, and runtime scratch data

Schema IDs

Persisted state carries schema identity. Refactors that affect persisted shape can change compatibility, which is why Vango tracks state artifacts and computes deploy impact.

If a persisted type should survive renames or package moves, give it a stable schema ID:

go
1func (UserPrefs) VangoSchemaID() string {
2    return "myapp:UserPrefs:v1"
3}

Warm vs Cold Deploy

Run:

shell
1vango state plan

This tells you whether the current change remains warm-deploy safe or whether it requires cold-deploy acknowledgement.

Generated Artifacts Matter

Commit these outputs when they change:

  • app/routes/routes_gen.go

  • vango_state_manifest.json

  • vango_state_schema.json

  • generated bindings files when stateful components require them

Healthy workflow

Treat generated routes and state artifacts as normal source files. If they change, review them and commit them in the same change as the app code that caused the update.

shell
1vango gen routes
2vango state plan
3vango state apply
4vango gen bindings
5go test ./...

Cold deploys require explicit acknowledgement:

shell
1vango state apply --ack-cold

Do not hand-edit generated route, manifest, schema, or binding artifacts. Review them like source and commit them with the code change that caused them.