Draft & Publish
Nothing goes live until you say so. Localess keeps every change in Draft until you explicitly promote it to Published — giving your team a safe staging buffer built into the CMS.
Localess separates saving from publishing. When an editor saves content, it is stored as a Draft — visible only to people previewing with ?version=draft. Nothing changes on the live site. Only when an editor explicitly clicks Publish does that content become the Published version and reach production consumers.
This workflow protects your team from accidental publishes, gives editors a safe space to work in progress, and lets reviewers check content before it goes live.
The Two States
| State | Who can see it | How to access via API |
|---|---|---|
| Draft | Editors in preview mode | ?version=draft query parameter |
| Published | Production visitors | No version parameter (default) |
A document always has exactly one Draft state and one Published state. Saving updates the Draft. Publishing copies the current Draft into the Published slot.
How It Works for Editors
Writing and saving
Open a document in the Content editor, make your changes, and click Save (or press ⌘S / Ctrl+S). A dot indicator in the toolbar appears whenever there are unsaved changes. Saving is safe — nothing goes live until you publish.
You can save as many times as you need. Reviewers can preview your saved changes using draft mode in a connected frontend or the Localess Visual Editor.
Reviewing in draft mode
Pass version=draft when fetching content via the SDK to see your saved-but-unpublished changes:
const draft = await client.getContentBySlug<Page>('home', {
locale: 'en',
version: 'draft',
});The Visual Editor connected to your frontend automatically reflects the current Draft state in real time as you type — no explicit save required for the live preview.
Publishing
When the content is ready to go live, click Publish in the document editor toolbar. Localess promotes the current Draft to the Published state. The change becomes available to production consumers typically within 30 seconds via CDN — no build step, no deploy, no code change required.
If you are not ready to publish everything at once, that is fine: only click Publish when the content is truly ready. Your draft stays in the Draft state indefinitely.
Translations Follow the Same Model
The Translations module works identically. Saved translation strings are available in draft mode. Click Publish in the Translations toolbar to make the entire current set of translations available to production.
The toolbar shows an indicator when there are unpublished changes pending so editors always know the current state before walking away.
Draft & Publish by Workflow Stage
Here is how a typical editorial team moves content through the workflow:
| Stage | Action | State after |
|---|---|---|
| Writer starts a draft | Opens doc, adds content, saves | Draft — not live |
| Writer shares for review | Sends a draft preview link | Draft — reviewer sees it with ?version=draft |
| Editor requests changes | Writer edits and saves again | Draft — updated |
| Editor approves | Clicks Publish | Published — live on the site |
No one needs to file a ticket, open a PR, or wait for a deploy. The writer and editor own the entire workflow end-to-end.
Frequently Asked Questions
Can I unpublish content after publishing it? Yes. Replace the published document with an empty state or a redirect page, or delete the document entirely. Deleting a document removes it from both the Draft and Published states.
Does publishing one document affect others? No. Each document is published independently. You can publish a single article without touching any other content.
Can I see what changed between my current draft and what is live?
Not as a visual diff in the current UI — compare by fetching both version=draft and the default (published) response via the API and comparing the JSON.
Does Publish push changes immediately? Yes. Publishing triggers Localess to convert the Firestore document into static JSON in Cloud Storage. CDN propagation typically completes within 30 seconds.
What if I want to batch publish many changes at once? Save each document individually as you work, then publish each one when you are ready. There is no scheduled or batched publish across multiple documents in the current version.
Translations
Manage all your application's translation strings in one place — across every locale, with team collaboration and auto-translation support.
Webhooks
Receive real-time HTTP notifications when content, translations, or assets change in Localess — and trigger downstream systems automatically.