Cairn delivers different content depending on where the page is being viewed:
- Production — your custom domain gets the last published version of each script.
- Staging — your
*.webflow.io staging domain gets the latest saved draft, with caching disabled so changes show up on the next reload.
That means the normal workflow is: save, reload the webflow.io site to test, and only Publish when it works. Publishing is what moves the draft to your live domain — nothing reaches production from a save alone.
The publish panel in the editor shows both destinations for the current site: the staging domain and the production domain (with last-published timestamps).
How Cairn detects staging
The loader request carries the page’s domain, and Cairn treats it as staging when it matches any of:
- The site’s webflow.io staging domain (picked up automatically from Webflow).
- Any custom staging domains you add in the site’s settings (comma-separated; subdomains match too).
- Auto-detected staging hostnames, if auto-detection is enabled for the site —
localhost, *.webflow.io, *.vercel.app, *.netlify.app, and hostnames containing -staging., .staging., .preview., .test., or .dev..
When the domain can’t be determined, Cairn defaults to production — the safer direction.
If you serve a real production site on a domain that matches an auto-detect
pattern (say, a .dev TLD), add it as a Webflow custom domain or turn
auto-detection off for that site so visitors don’t receive drafts.
Development mode
Sites also have a development mode toggle. While it’s on, Cairn adds a cache-buster to every script URL so edits show up immediately on any domain — useful during a build-out, but leave it off in normal operation so production stays fully cacheable.