---
"@type": Article
"@id": "https://helloloam.dev/principles/draft-and-live-lifecycle"
"@source": "https://helloloam.dev/data/article/draft-and-live-lifecycle.json"
"@stamp": "2026-10-22T21:53:55+00:00"
about:
  "@type": DefinedTerm
  "@id": "https://helloloam.dev/data/definedterm/draft-and-live-lifecycle.json"
  name: Draft and live lifecycle
  identifier: draft-and-live-lifecycle
  inDefinedTermSet:
    "@type": DefinedTermSet
    "@id": "https://helloloam.dev/data/definedtermset/mechanics.json"
    name: Mechanics
    identifier: mechanics
author: {"@id":"https://helloloam.dev/#organization"}
datePublished: "2026-10-03"
description: Every change lands as a draft first. Going live is a separate, deliberate step — guarded by a check on the site as it would become.
headline: Draft and live lifecycle
identifier: draft-and-live-lifecycle
inLanguage: en
publisher: {"@id":"https://helloloam.dev/#organization"}
url: "https://helloloam.dev/principles/draft-and-live-lifecycle"
---

# Draft and live lifecycle

## One lifecycle, two layers

Content systems grow overlapping kinds of visibility: a draft flag, a scheduled state, a preview mode, a staging server for templates. Each is a mechanism of its own, and they interact badly. Loam has one lifecycle: two layers, **live** — what visitors see — and **draft**, staged beside it. Every change lands in draft first: a new page, a corrected price, a replaced image, an edited template. There is no third state.

## Preview is the whole site

Ask your agent what is staged and you get the list with a preview link. The preview shows the entire site as it would be: the new page in the real menu, in its place in the overviews and the search, with the real images, in every language. A small bar on every page says *Draft preview* and offers the link to pass on. The link is a secret: renew it and the old one stops working; when the last draft is published or dropped, it dies with the round.

## Publishing, with a check

Publishing moves a draft to live: one thing, a chosen set, or everything staged. A set goes live as a whole or not at all, so a new page and the menu item pointing to it never arrive separately.

Before anything goes live, the site judges itself as it would be: every link resolves, every required field is filled, every template parses and the site's own settings still start. A draft that would break the site does not go live, and you are told why. The check is the same for everyone and cannot be skipped.

## Drop, take back, remove

| Action | What happens |
| --- | --- |
| **Drop a draft** | It disappears from the draft layer; the live site was never affected. |
| **Take back** | Something live returns to draft, to be fixed and republished, or dropped. |
| **Remove for good** | Take back, then drop. Reversible until the last step — and even then the file is in history. |

Taking back is refused if it would break what remains — a page another page still links to, or the home page — so the references are fixed first.

## Templates included

A new template is a draft like any other change, previewed on the real site and refused if it does not parse. The draft layer is the staging environment. And because nothing staged reaches a visitor, [a key that may write but not publish](/principles/fine-grained-permissions) can be handed out without fear.

## What it costs

The draft layer is shared, not private: a colleague who may publish can publish your draft. Loam chose collaboration over exclusion on purpose, and the check on publishing makes that safe. If you want a private sandbox, [history is the fallback](/principles/backups-as-a-snapshot) — not a personal workspace.
