Migrate from Umbraco to Astro or Next.js
Umbraco 13 reaches end of life on 14 December 2026, and the next version brings a rebuilt backoffice your packages and extensions must be reworked for. If you are rebuilding anyway, rebuild in Astro or Next.js, with your content in Sanity or Payload and every URL kept.
Yegparian PLLC (opens in a new tab)Signs it is time to leave Umbraco
Umbraco has served .NET teams well for years. These are the moments IT and marketing teams tell us it stopped fitting.
Your site runs on Umbraco 13
Its security phase ends on 14 December 2026. After that, fixes come only through paid extended support, or not at all.
You are still on Umbraco 8 or older
Umbraco 8 reached end of life in February 2025. The jump to a supported version runs on modern .NET and a new backoffice, which is a rebuild in all but name.
The new backoffice breaks your extensions
From Umbraco 14 the AngularJS backoffice is gone. Custom property editors, dashboards and packages have to be rewritten as web components, or replaced.
Marketing waits on the .NET team
Razor views, document types and deployments all live with developers. A new landing page or section queues up behind sprint work.
Hosting and upkeep cost more than the site
Servers or app services, SQL Server, patching and Umbraco upgrades. The infrastructure needs attention even when the content does not change.
What happens to your Umbraco features
Pick what your site relies on today. Each feature becomes part of the site itself, or turns out not to be needed.
- Document types and compositionsSanity schemas or Payload collectionsEvery document type, composition and property moves into a schema in code, with content read from Umbraco and moved by script.
- Block List / Block GridPage-builder blocksEach block type becomes a block editors compose pages from, built once in code so every page stays on brand.
- Nested Content / Grid LayoutPage-builder blocksLegacy editors removed in Umbraco 14 are converted straight to blocks, with no intermediate upgrade step.
- Media sectionAssets in the CMSImages and files are re-uploaded with their folders, alt text and focal points, served resized from a CDN.
- Umbraco FormsA form built into the siteValidated on the server, filtered for spam and sent to your inbox, CRM or Slack. Complex workflows are scoped per project.
- MembersAccounts, scoped separatelyLogins and gated content run with the auth provider you choose, such as Entra ID or Auth0. The audit says what moves where.
- Culture variantsBuilt-in localisationTranslations live per field or per document in Sanity or Payload, with their own URLs and hreflang.
- uSync / Umbraco DeploySchema and deploys in GitThe content model lives in code, every change goes through a pull request, and each branch gets its own preview URL.
- URL redirectsRedirects in the configEvery node URL and existing redirect is mapped to its new home in the hosting config, versioned with the code.
- Umbraco HeartcoreSanity or PayloadAlready headless? Content moves through the Heartcore APIs, and the front end you have can often stay.
What changes when you leave Umbraco
Astro and Next.js decide how pages are built. Sanity and Payload are where your team edits. We recommend a pair after the audit.
| Feature | Astro + Sanity | Next.js + Payload | Umbraco |
|---|---|---|---|
| Security | |||
| No .NET server or IIS to patch | Node.js app for /admin | ||
| Editor login off your public site | Separate /admin route | ||
| Security updates for your version | Ends Dec 2026 on v13 | ||
| Content | |||
| Structured, reusable content | |||
| Live preview while editing | Separate preview window | ||
| Multilingual content | |||
| Fine-grained roles and permissions | Plan-based | ||
| Runs inside your .NET and Azure estate | Via APIs | Via APIs | |
| Performance and upkeep | |||
| Pages served pre-built from a CDN | With output caching or a CDN | ||
| Ships only the JavaScript a page needs | Per route | Depends on your views | |
| Major upgrades without a rebuild | Backoffice rewritten in 14 | ||
| Self-hosted, open-source CMS | Hosted by Sanity | ||
Sites we've already moved
Different stacks for different jobs: a law firm on Next.js and Payload, a residential launch and our own studio on Astro and Sanity.
Yegparian PLLC
WordPressNext.js + Payload
An Austin trial litigation firm. Practice areas, matters and insights are Payload collections, and every page is pre-rendered and served from the edge.
yegparianpllc.com (opens in a new tab)25 Cuba
WordPressAstro + Sanity
A new residential address in Canary Wharf. Apartments, amenities and galleries are edited in Sanity, and the site ships as static Astro pages.
25cuba.com (opens in a new tab)Celerart
WebflowAstro + Sanity
Our own studio site. Every one of the 164 old URLs was carried over or redirected, and all content is now edited in Sanity.
celerart.com (opens in a new tab)
How we move an Umbraco site
Your Umbraco site stays live until the new one is ready. The switch is a DNS change, not a weekend of downtime.
Audit
Audit
We crawl every URL, list every document type, block, package, form, member area and integration, and export your rankings, so nothing is lost by accident.
Content model
Content model
Document types, compositions and blocks become a clean schema in Sanity or Payload, shaped around how your editors actually work.
Content import
Content import
Content, media and their relations move by script from Umbraco. Rich text and blocks are converted, images re-uploaded and internal links rewritten.
Front end
Front end
We rebuild the design in Astro or Next.js: the same look, or a refresh if one is due. Every template is checked against the old one.
Redirects and launch
Redirects and launch
Every old URL gets a permanent redirect to its new address. Metadata, sitemaps and structured data are compared before the DNS switch.
Handover
Handover
Your IT and marketing teams get a walkthrough of the new editor and hosting. Then the Umbraco servers are switched off for good.
Questions about leaving Umbraco
It is a fair option, and the audit will compare both. From 13 to 17 you take on the new backoffice: custom property editors, dashboards and packages are rewritten or replaced, and legacy editors become blocks. Moving to Astro or Next.js costs a similar effort and ends the cycle of major-version upgrades.
WordPress swaps one server you patch for another, plus a plugin stack to keep updated. A headless setup keeps the structured content your Umbraco document types already have, serves pages pre-built from a CDN and gives editors live preview, without a public admin login on your domain.
Not if the move is planned. Every URL keeps its address or gets a permanent 301 redirect, built from your node URLs and existing redirects. Titles, descriptions, structured data and sitemaps are carried over and checked before launch, and we watch Search Console for the weeks after the switch.
By script, through the Umbraco APIs or straight from the database: content nodes, Block List and Block Grid items, Nested Content, media and culture variants. Everything becomes structured content in Sanity or Payload, and internal links are rewritten to the new URLs.
We scope them one by one. Forms are rebuilt into the site, member logins move to an auth provider such as Entra ID, and integrations with your CRM, ERP or internal .NET services are called through their APIs. The audit tells you what moves where.
It depends on the number of document types, blocks, integrations and languages. After the audit you get a fixed scope and timeline, and the Umbraco site stays live until launch day.
Keep it patched to the latest 13.x release until 14 December 2026. If launch falls after that, Umbraco sells extended support (XLTS), or you can put a web application firewall in front of the site and restrict access to the backoffice. The migration removes the risk; it does not cover the months before launch.


