clundra
Documentation

Snapshots

A snapshot is the whole app frozen at one moment — every service, its configuration, and its data. Going back returns all of it together.

There is one kind of snapshot

You do not choose what a snapshot covers. It is the entire app, and that is the only option, because the useful question is never “which parts of last Tuesday do I want” — it is “put it back the way it was”.

Concretely, a snapshot holds every service's code and configuration, and the contents of the app's database if it has one. Going back moves all of that at once, so there is nothing to reconnect afterwards and no chance of returning code to one point and data to another.

Going back

Pick a snapshot and go back to it. The app returns to that moment and carries on from there — the app keeps its URL, its custom domains and its access settings, because those describe the app rather than the state you captured.

Going back is itself recorded, so the history stays honest: you can see that the app was moved and when.

A snapshot is not durable the instant you take it. It starts out pending and becomes durable shortly after. Take one before the change you are worried about, not during it, and check that it has settled before relying on it.

Snapshots move the app; versions move one service

These are two different tools and the words are kept apart on purpose:

  • Go back is this page. It moves the whole app, data included, to an earlier moment.
  • Versions put the service's build back, and touch nothing else — the data stays where it is. That is on Versions.

If a bad revision shipped, versions are usually what you want — they are narrower and they leave your data alone. Reach for a snapshot when the data moved too, or when you no longer know what changed.

Fork

Forking branches a brand-new app from a snapshot. The new app is a separate thing with its own URL and its own history; the app you forked from is untouched and keeps running.

It is the safe way to answer “what if” against real state — try the risky migration, reproduce a bug from last week, hand a colleague a copy to break — without doing any of it to the app that matters.

An app with a database cannot be forked. This is structural rather than a limitation waiting to be lifted: the storage holding the data cannot be branched while the app is holding it open. Such an app can still take snapshots and still go back — it is only forking that is refused. See Database.