Block theme migration
Twenty Twenty-Five to Next.js: Moving a Block Theme Site, Block by Block
Open any Twenty Twenty-Five post in the code editor and the migration plan is looking back at you: plain HTML, with a comment above each block saying what it is. The words are the easy part. The design, which the Site Editor quietly saved in your database, takes more care.
October 8, 2026 · 11 min read
The short answer
To move a Twenty Twenty-Five site to Next.js, export posts and pages as block markup, parse each block into a component, and rebuild the templates, styles, menus and fonts the Site Editor saved in the database. Keep every URL or redirect it, carry over titles and descriptions, and test on a preview address before switching DNS.
On this page
- Your posts are already in a format code can read
- The design lives in the database, not the theme folder
- Patterns, post formats and fonts: three places to slow down
- Eight steps from Site Editor to deployed build
- Blog URLs, feeds and archives that must keep answering
- What the owner gains, and what the owner hands back
- Editing life after the Site Editor
- What makes one Twenty Twenty-Five move bigger than another
Your posts are already in a format code can read
Twenty Twenty-Five is a block theme, built for the Site Editor, so every post and page it displays is stored as block markup. That means ordinary HTML with a comment above each piece naming the block (wp:paragraph, wp:image, wp:columns) and carrying its settings as a little bundle of JSON. Strip the comments and you have readable HTML. Parse them and you have a structured list of blocks, each with a type and its options, ready to be matched to a component in the new build.
WordPress publishes its own parser for this format as an npm package, so the conversion is code, not screen scraping. Core blocks map almost one to one: paragraphs, headings, lists, quotes, images, buttons, columns and groups. The real decisions hide in what the markup drags along with it: wide and full alignment, color classes tied to the palette in theme.json, and style classes left by the theme's section styles and block style variations. Each one gets a verdict: keep the look, simplify it, or let it go.
The design lives in the database, not the theme folder
This is the part that surprises owners. The files on disk describe Twenty Twenty-Five as it shipped: version 1.5 from May 2026, its theme.json, its templates and its 98 pattern files. The moment someone changed a color in Styles, rearranged the header or edited the blog template in the Site Editor, WordPress saved that change as a database record and stopped reading the file version. Copy the theme folder and you get the default site. Your site is in the database.
| Stored in WordPress as | Becomes in the Next.js build | |
|---|---|---|
| Edited templates | wp_template records that override the theme's files | Page layouts written as components |
| Header and footer | wp_template_part records | Shared layout components changed in one place |
| Colors, type and spacing from Styles | A global styles record layered over theme.json | Design tokens as CSS variables |
| Menus | wp_navigation records read by the Navigation block | Menu entries in the CMS, drawn by the header |
| Synced patterns | wp_block records, referenced from pages by ID | Reusable sections edited once, shown everywhere |
| Font Library installs | Font family and font face records, files in uploads/fonts | Self-hosted files loaded with next/font |
| Posts and pages | Block markup in the post content | Structured entries in Athena CMS |
We export every one of these through the REST API or a database copy before touching anything else, and we screenshot each template as visitors see it. Those screenshots become the reference the new build is checked against. If a header has already gone missing from a template on the live site, the header guide explains how that happens, and it is worth knowing before you copy the broken version.
Patterns, post formats and fonts: three places to slow down
Patterns pasted in, patterns linked
The documentation counts more than 70 patterns in Twenty Twenty-Five, including full landing pages and a Shop homepage layout. When an editor inserted an ordinary pattern, WordPress pasted its blocks into the page, and from then on it is just content that migrates like any other. Synced patterns work differently: the page holds only a pointer to a separate record. A conversion that ignores those pointers produces pages with holes where the newsletter box or call to action used to sit. Every pointer is resolved into a reusable component before the comparison starts.
Nine post formats and a blog with several outfits
The theme registers all nine post formats (aside, gallery, link, image, quote, status, video, audio, chat), ships patterns for them, and can show a post's format name through a block binding that WordPress fills in at render time, so the saved markup never holds the final word. If your blog uses formats, the format becomes a field in the new content model, with a layout only for the formats you publish. The same thinking applies to the alternate blog designs picked in the Template panel's Design section (Personal, Text-Only, Photo, News, vertical header): build the one you use, not all five.
Fonts from the box and from the Font Library
The default style pairs Manrope with Fira Code. The style variations add Beiruti, Fira Sans, Literata, Platypi, Roboto Slab, Vollkorn and Ysabeau Office, all bundled as local .woff2 files. Families added through the Font Library live in your uploads folder instead. Next.js self-hosts fonts with next/font, which also sets a size-matched fallback so headings do not jump when the real face arrives. If fonts already misbehave today, read why Twenty Twenty-Five fonts fail to load before the export.
Eight steps from Site Editor to deployed build
- 1
Freeze the design, not the blog
Pick a date after which nobody edits templates or Styles. Posts keep publishing; they are exported again at the end.
- 2
Export content and design records
Posts, pages, media, menus, templates, template parts, global styles, synced patterns and installed fonts, pulled through the REST API or from a database copy.
- 3
Crawl every live address
A full crawl plus the indexed pages in Search Console gives the list of URLs that must keep working, archives and feeds included.
- 4
Turn theme.json into design tokens
The palette, font sizes and spacing presets, merged with your saved Styles changes, become CSS variables so the look you chose survives.
- 5
Map each block type to a component
Every block in use, plus each section style and block style variation, gets a component. Odd one-off blocks are flagged for a human decision.
- 6
Import into Athena CMS
Posts and pages arrive as structured entries with slugs, dates, authors, categories, tags, excerpts and featured images intact.
- 7
Compare page by page on a preview address
Each template is checked against the screenshots on desktop and phone, with the menu tested at every width.
- 8
Switch DNS and keep watching
Redirects go live with the new site. Search Console and server logs are watched for 404s, and stragglers get redirected.
The old site keeps running until the final export, so readers never see a gap. Most of the calendar goes to steps four and five, which is why a site with heavy Styles customization takes longer than one that kept the defaults. How long a WordPress to Next.js move takes walks through the other factors that stretch or shrink the schedule.
The third option
Athena CMS, with AI agents on staff.
Not a theme and not a blank Next.js repo. The content system we put behind every custom site: plain fields, a real preview, every version kept, and AI agents that handle the chores a plugin only nags you about.
- PicassoImages
- ApolloSite analysis
- AresCompetitor watch
- PrometheusContent holes
- AtlasPage depth and structure
- DelphiAI search visibility
and 12 more agents. Two come with Athena; the rest are monthly add-ons.

Blog URLs, feeds and archives that must keep answering
A Twenty Twenty-Five site is usually a blog wearing a business site's jacket, and blogs collect addresses the owner forgets about. Beyond the posts there are category and tag archives, author pages, date archives, paginated lists ending in /page/2/, the RSS feed at /feed/ that readers and email tools poll, and, if they were ever switched on, attachment pages for uploaded images. Each one gets a route in the new build or a permanent redirect to its nearest equivalent.
- Keep the permalink pattern. If posts live at /2025/03/post-name/ or /blog/post-name/, the new routes copy that pattern instead of inventing a tidier one. See planning the URL structure.
- Settle the trailing slash once. WordPress ends addresses with a slash and Next.js does not by default. One setting in the build decides, and the other form redirects to it.
- Keep the feed where it is. The new site publishes RSS at the same address, so subscribers and newsletter tools never notice the move.
- Redirect the thin archives. Date and author archives with little traffic can point at the blog index rather than being rebuilt, using the method in WordPress to Next.js redirects.
- Carry over every title and description. Whatever the SEO plugin stored moves into the new metadata fields, so search listings do not change overnight.
Images get the same care. Files under uploads keep working or redirect, and next/image serves sized, modern versions to each screen, as covered in moving WordPress images to Next.js. The full ranking checklist is in migrating without losing SEO, and moving a WordPress blog handles comments, categories and authors in more depth.
What the owner gains, and what the owner hands back
Be clear-eyed here, because Twenty Twenty-Five is one of the better reasons to stay on WordPress. It is free, maintained by the WordPress team, installed on more than 1,000,000 sites, and light on its own: styles come mostly from theme.json, and its one small stylesheet can be inlined by WordPress. The Twenty Twenty-Five speed guide shows how far it goes with care. A migration has to buy you something real.
What you gain
- A front end with no plugins running on it, so the next form or SEO add-on cannot slow every page
- Pages prerendered and served from a CDN, with image sizes and font loading fixed in code
- No admin login on the public site to guess at, and nothing to patch late on a weeknight
- Plain editing fields instead of a Site Editor that scatters CSS, menus and templates across panels
- Features the theme never had, such as a store, member areas or a quote tool built to fit
What you give up
- Clicking a style variation and watching the whole site change color
- Dropping in a full-page pattern and rearranging blocks yourself
- A $0 theme: the build is custom work with a real up-front cost
- Layout changes without a developer; a new page type is a request, not a drag
- The enormous WordPress plugin directory, for better and for worse
If the left column leaves you cold, stay. Fix the mobile menu that always shows a hamburger or the CSS that refuses to update, and keep publishing. The full trade is argued row by row in Twenty Twenty-Five vs Next.js.
Editing life after the Site Editor
Owners of block theme sites tend to describe the same frustration: they wanted to change words, and the Site Editor kept offering to change templates. Athena CMS separates the two jobs. Posts, pages, menus and offers are plain fields with a real preview. Every version is kept, so a bad edit is one click from undone. Layout lives in code, where nobody can drag it out of shape by accident on a busy afternoon.
The chores a WordPress blog either installs a plugin for or quietly skips go to agents with one job each. Calliope drafts articles. Iris writes search titles, descriptions and social cards. Picasso makes sure every image is described and sized. Ariadne threads internal links between posts. Argus watches for broken links and slow pages. Most of them draft for your approval rather than publishing on their own. What the first weeks look like is set out at switching from WordPress to Athena.
What makes one Twenty Twenty-Five move bigger than another
No two quotes match, because no two sites drifted from the defaults by the same distance. These are the things we count during a free site audit before giving a fixed quote:
- How many templates and template parts were edited in the Site Editor, and how far they wandered from the shipped patterns
- The number of posts, and whether they use post formats, galleries, embeds or plugin shortcodes
- Synced patterns, and how many pages point at each one
- Plugins doing real work, such as forms, bookings, memberships or a shop, that must be rebuilt as features
- Languages, and whether a translation plugin stored a copy of every post
- How many URLs are indexed, linked from other sites or receiving traffic
The money side is explained in what a WordPress to Next.js migration costs, and website financing is available. The build itself is handled by our WordPress to Next.js development team. If your site still runs the previous default, the Twenty Twenty-Four migration deals with the plugin clean-up those older sites usually need, and the WordPress to Next.js hub collects every other guide in the section.
Questions people ask before they call
Yes. Whether you picked Evening, Sunrise, Midnight or kept Default, the palette, fonts and spacing are read from theme.json and your saved Styles, then turned into CSS variables in the new build, with the same font files self-hosted. Many owners use the move to tidy a few details, but a faithful copy is a reasonable request and easy to check side by side on the preview address.
Yes, as long as each family's license allows self-hosting, which open-licensed families generally do. Font Library installs sit as files in your uploads folder, with database records describing each weight and style. We copy the files, load them through next/font, and drop weights nobody uses. Fonts that were linked from an outside service are rehosted or replaced.
No. Once the content is in Athena CMS and the redirects are live, WordPress can be switched off and its hosting canceled. Some teams prefer to keep WordPress as an editing back end behind a Next.js front end, which is described in keeping WordPress as your CMS. For a Twenty Twenty-Five blog, that usually means keeping the upkeep without much benefit.
Often you should not. A lean Twenty Twenty-Five blog with a handful of plugins can do well and stays cheap to run. The case for moving is about what the site has to do next: generate leads, sell products, run member areas, publish hundreds of structured pages, or stop eating weekends with plugin updates. If none of that applies, tune it and keep it.
They can come along. WordPress comments export with their authors, dates and threading. We either import them as part of each post, so the conversation stays visible, or connect a comment service if you want discussion to continue. Spam and pending comments are filtered out first. Tell us which you prefer during the audit, because it shapes the content model.
Keep reading
- Default theme, phone menuTwenty Twenty-Five Mobile Menu Not Working: One Setting, Then Four SuspectsTwenty Twenty-Five mobile menu not working? Check the Navigation block's overlay setting, the menu it points to, script delays and overlay colors, in order.
- The default, defendedTwenty Twenty-Five Speed: What the Default Theme Gets Right, and How Plugins Undo ItTwenty Twenty-Five inlines its stylesheet and hosts its fonts locally. See how plugins quietly reverse both, and the steps that keep the theme quick.
- Theme reviewTwenty Twenty-Five Theme Review (2026): The Free Default, Judged Like a PurchaseTwenty Twenty-Five theme review: who maintains it, Site Editor setup, speed, SEO, WooCommerce limits, the mobile menu quirk, and who should skip it.
- The default, tested fairlyTwenty Twenty-Five vs Next.js: Plain WordPress Against a Custom BuildTwenty Twenty-Five vs Next.js across 22 rows: the free default block theme against a custom build, and the sites where the free theme wins.
- Astra migration guideAstra to Next.js: Migrate an Astra Site Layer by Layer, Rankings IntactMigrate Astra to Next.js without losing rankings: what happens to astra-settings, Site Builder layouts, Spectra blocks and Elementor pages, step by step.
- Kadence migration guideKadence to Next.js: Moving Kadence Blocks, Shop Kit and MembersKadence to Next.js, step by step: parse Kadence Blocks, map the global palette, rebuild Hooked Elements, move Shop Kit stores and members, keep every URL.
- Everything in WordPress to Next.jsSee the section
Get a migration plan for your Twenty Twenty-Five site
Send us the address. We will export the Site Editor changes, count the templates and URLs, and come back with a fixed quote and a list of what moves as is.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.
