A headless CMS wants to own your content: schemas to model, a data layer to wire, every string migrated out of your components. You rewrite a working site so a client can change two words in it.
Use case
Your App Router site — hand-written TSX, no data layer — becomes client-editable in minutes. Unfreez anchors every string in your components and gives your client a safe visual editor. No Contentful, no Sanity, no rewrite.
You built a Next.js site by hand because you wanted control over every component. When the client needs to change a line, there's a much smaller move than bolting on a CMS.
A headless CMS wants to own your content: schemas to model, a data layer to wire, every string migrated out of your components. You rewrite a working site so a client can change two words in it.
Unfreez finds the human-facing values in your TSX — headlines, alt text, the items in a const array — and pins each to a deterministic spot in the syntax tree. At publish it rewrites exactly there, byte-exact, and refuses when anything is ambiguous. No language model goes near the write.
You curate what's editable and lock the rest. Your client edits on a live preview and clicks Publish — one signed commit, reversible in a tap — while you keep pushing code without ever being overwritten.
No schema, no data layer, no content migration. Point Unfreez at the repo and it finds the strings, images and list items already in your TSX — App Router or Pages Router, server or client components.
Edits are spliced at a deterministic spot in the syntax tree, byte-exact. At the slightest ambiguity Unfreez refuses to write rather than risk a production file — and every publish undoes in one tap.
Push whenever you want. Unfreez notices the code moved, re-anchors, and holds any conflicting client edit for your review — your work is never overwritten.
Next.js today, plus React (Vite/CRA), Astro, Vue single-file components and plain HTML. The same editor everywhere; more stacks as we go.
Install the GitHub App on the repos you choose — nothing else. Unfreez scans your components and lists every editable value.
Check what the client may change, label it in their words, lock everything structural. Nothing is editable without your say-so.
They sign in with Google, edit on a live preview, and hit Publish. Each publish is one atomic commit on your branch, signed by Unfreez.
| Headless CMS | Unfreez | |
|---|---|---|
| Setup | Model schemas, wire a data layer, migrate the content | Connect the repo, curate fields — minutes |
| Your components | Rewritten to read from the CMS | Untouched — the code stays the source of truth |
| Where content lives | A third-party database | Your repo, as commits you own |
| Client edits | Through an admin, deployed via webhook | On a live preview, as one signed commit |
| If you stop paying | Content locked in their platform | Site, repo and history stay exactly as they are |
Yes — App Router and Pages Router, server and client components. Unfreez reads the JSX/TSX itself, so where a string is rendered doesn't matter.
No. There's no schema and no data layer. The editable values stay in your components; Unfreez writes to them in place.
No. It only edits the human-facing values you curated — text, image sources, list items. Everything else is locked, and ambiguous targets are refused rather than guessed.
No. They sign in with Google and never see git, branches or commits. Every publish is a commit on your branch behind the scenes.
A publish is a commit. If Vercel or your host auto-deploys, changes go live in minutes; otherwise they ship with your next deploy. No extra CI required.