September 17, 2026 / WordPress Tutorials

WordPress Development Frameworks: The Four Categories

Quick answer

A WordPress development framework is any reusable base you build on instead of writing a theme or plugin from scratch. The term covers four unrelated things: starter themes and theme frameworks, block themes driven by theme.json, Composer-managed development stacks, and options frameworks for custom fields. Picking from the wrong category is the usual reason a build turns painful.

Search for WordPress development frameworks and you get the same list every time: Genesis, Divi, Redux, Gantry, Sage, maybe Bootstrap for no reason at all. Presented as alternatives. They are not alternatives. They do not compete, they do not overlap, and three of them will not help you with the problem the fourth solves.

That confusion has a cost. People choose a theme framework when they needed a build stack, or a page builder when they needed structured content, and then spend two years fighting the thing they installed in an afternoon.

This post splits the term into the four categories it actually contains, says which options in each are still maintained in 2026 and which are quietly dead, and shows why full site editing has removed the need for a theme framework on a large share of projects.

What a WordPress development framework actually is

A framework is a pre-built layer that removes decisions you would otherwise make yourself, and the word gets applied to four layers of the WordPress stack that have nothing in common except that description.

  • Theme layer. Starter themes and theme frameworks: a parent theme or scaffold you build a design on top of. Genesis, Sage, GeneratePress, Astra.
  • Native layer. Block themes plus theme.json: the design system WordPress core now ships with, no third party involved.
  • Stack layer. Composer, Bedrock, wp-env, WP-CLI, build tooling. What “framework” means to a team that deploys from git.
  • Data layer. Options and custom-field frameworks: ACF, CMB2, Carbon Fields, Redux. These define how editors enter structured content.

You can use all four at once. A Bedrock project running a Sage theme with ACF field groups is a perfectly normal build. So the real question is never “which framework”, it is “which layer is my problem in”.

Category 1: starter themes and theme frameworks

This category is the oldest meaning of the term and it is the one that has shrunk most, because the thing it existed to provide is now in core. The category also splits cleanly into two groups that people keep treating as one.

The ones that are still moving

Sage from Roots is the developer-facing option that is genuinely current. Version 11 shipped with Acorn v6, a PHP 8.3 minimum and Vite as the build tool, and releases have continued through 2026. It gives you Blade templating and a real asset pipeline. It also assumes you are comfortable with Composer and npm, and it is a bad fit for anything a non-developer will maintain.

GeneratePress, Kadence, Blocksy and Astra are the commercial classic themes that absorbed most of what Genesis used to do. All four ship a free version on WordPress.org and sell a premium add-on. All four are classic themes with block editor support rather than full block themes, which matters more than the marketing suggests: none of them carries the full-site-editing tag in the theme directory.

The ones that are effectively legacy

Underscores (_s), the starter theme half the WordPress world learned on, is finished. Automattic archived the repository on 5 September 2025 with a note saying the project is all-in on block themes and _s will not be actively updated. It is read-only. Any tutorial that still opens with “start by downloading Underscores” was written for a WordPress that no longer exists.

Genesis is a subtler case. It is not abandoned: WP Engine open-sourced the framework, made it free, and the changelog shows a 3.6.x release in 2026 handling PHP and core compatibility. But compatibility releases are not development. Genesis Pro sits at $360 per year, and you are paying that to stay on a hook-and-filter architecture that core has moved away from. If you already run twenty Genesis sites, keep them. Starting a new one in 2026 is a choice you will have to justify to whoever inherits it.

OptionLicence and priceActively developedBlock editor / FSELearning curveLock-in risk
Block theme + theme.jsonGPL, freeYes, in coreNative FSEModerate, JSON and template syntaxNone. Markup is core blocks
Sage (Roots)MIT, freeYes, v11.2.x in 2026Block editor yes, FSE not the modelSteep. Composer, Blade, ViteLow, but only a dev can maintain it
Underscores (_s)GPL, freeNo. Archived Sep 2025Classic onlyLowLow, it is just a scaffold
GenesisGPL, free; Genesis Pro $360/yrMaintenance-level onlyClassic with block supportModerate, hook-drivenHigh. Child themes are Genesis-specific
GeneratePressFree theme; GP Premium $59/yr, GeneratePress One $149/yrYesClassic theme, block editor supportLowModerate, premium modules
KadenceFree theme; plans from $99/yr per siteYes, theme 1.5.x Jul 2026Classic theme, block editor supportLowModerate, Kadence Blocks content
BlocksyFree theme; Pro $69-$149/yr, lifetime $199-$499Yes, 2.1.x Aug 2026Classic theme, block editor supportLowModerate
AstraFree theme; Pro from $99/yr, lifetime from $279Yes, 4.13.x Aug 2026Classic theme, block editor supportLowModerate
Prices and versions taken from each vendor’s own pricing page and WordPress.org listing, checked August 2026. Introductory annual prices renew higher on several of these.

Category 2: block themes and theme.json

Block themes with a theme.json file are the native replacement for what a theme framework used to sell you, and for a large share of projects they remove the need for one entirely. The handbook is blunt that block themes are the modern method of building for WordPress.

Look at what a theme framework’s options panel actually gave you: colour palette, font sizes, spacing scale, content and wide widths, per-element style overrides, and a way to stop clients breaking any of it. Every one of those is now a key in a JSON file that core reads. The version 3 schema is current and works with WordPress 6.6 and later.

{
  "$schema": "https://schemas.wp.org/trunk/theme.json",
  "version": 3,
  "settings": {
    "appearanceTools": true,
    "layout": { "contentSize": "680px", "wideSize": "1180px" },
    "color": {
      "custom": false,
      "defaultPalette": false,
      "palette": [
        { "slug": "base",     "color": "#ffffff", "name": "Base" },
        { "slug": "contrast", "color": "#1a1a1a", "name": "Contrast" },
        { "slug": "accent",   "color": "#c8462a", "name": "Accent" }
      ]
    },
    "spacing": {
      "defaultSpacingSizes": false,
      "spacingSizes": [
        { "slug": "30", "size": "clamp(1rem, 2vw, 1.5rem)",   "name": "S" },
        { "slug": "50", "size": "clamp(2rem, 4vw, 3rem)",     "name": "M" },
        { "slug": "70", "size": "clamp(3.5rem, 7vw, 6rem)",   "name": "L" }
      ]
    },
    "typography": { "fluid": true, "customFontSize": false }
  },
  "styles": {
    "spacing": { "blockGap": "var(--wp--preset--spacing--50)" },
    "blocks": {
      "core/button": {
        "color":  { "background": "var(--wp--preset--color--accent)" },
        "border": { "radius": "3px" }
      }
    }
  }
}

Two lines in there do most of the governance work. "custom": false removes the arbitrary colour picker, and "customFontSize": false removes the arbitrary font size box. Editors get your palette and your scale, nothing else. That is the client-proofing a premium theme framework used to charge for, expressed as four words of JSON.

If your framework’s main selling point is a settings panel, core already has it, and core will still have it in ten years.

Where block themes still struggle: heavily custom archive logic, complex conditional layouts, and any design that needs markup core blocks do not produce. Those are real, and they are the honest argument for staying on a classic theme with PHP templates.

Category 3: development stacks and tooling

To a professional team, “framework” means the stack around WordPress rather than anything inside wp-content, and this is the category where the tooling has improved most in the last five years.

  • Bedrock restructures WordPress as a Composer project: core, plugins and themes become dependencies, config moves to environment variables, and web/app/ replaces wp-content. Actively released, with 1.31.4 tracking WordPress 7.1 in August 2026.
  • wp-env is the official Docker-based local environment, maintained inside the Gutenberg repo. One config file, one command, identical for everyone on the team.
  • Local is the GUI alternative from WP Engine, free including the features that used to sit behind Local Pro. It is the right answer for anyone who does not want Docker in their life.
  • @wordpress/scripts is the official build config: build, start, lint-js, lint-style, test-unit-js, plugin-zip. It exists so you never hand-write a webpack config for a block again.
  • WP-CLI is the piece that makes everything else scriptable, from scaffolding to search-replace to database exports.

None of this touches how your site looks. That is the point. If your actual complaint is “deploys are manual and staging does not match production”, no theme framework on earth fixes it, and this is the layer to spend your effort on. The wider WordPress development toolset is worth a pass before you commit to a stack.

Category 4: plugin and options frameworks

These frameworks define how structured content gets entered and stored, which makes them the hardest of the four to change your mind about later. Their current status varies wildly and the differences are not obvious from their marketing.

  • ACF remains the commercial default. ACF PRO is $49/year for one site, $149 for ten and $249 for unlimited, annual renewal, no lifetime tier. Since the 2024 WordPress.org dispute the free version distributed through the repository is the forked Secure Custom Fields, currently at 6.9.x, which deactivates ACF and ACF PRO on install to avoid function collisions. Decide which one you are on deliberately.
  • CMB2 is free, GPL, code-defined rather than UI-defined, and still shipping. Version 2.12.0, around 300,000 active installs. Good for plugin authors who need fields without a paid dependency.
  • Carbon Fields is alive but explicitly feature-complete. The maintainers have said publicly that the block editor makes it unnecessary for most CMS use cases and that it is maintained for their own needs. That is a fine reason to keep an existing site on it and a poor reason to start a new one.
  • Redux is still updated (4.5.x, 900,000+ active installs) but it solves a problem that mostly evaporated. It is an options framework for theme settings panels, and theme settings panels are what theme.json replaced.

The lock-in bill that arrives three years later

Framework lock-in is not felt when you build the site, it is felt when someone else has to change it, and the severity depends entirely on where your content physically lives in the database.

A theme framework has mild lock-in. Genesis child themes call Genesis hooks, so moving off Genesis means rewriting templates, but post_content is still readable HTML. Annoying, bounded, quotable as a job.

Builder lock-in is a different order of problem, and it has a specific mechanism. Shortcode-based builders write their layout into post_content as nested shortcodes. Deactivate the builder and the page does not revert to plain content; it renders the raw shortcode text to visitors. Elegant Themes admitted this directly when explaining why Divi 5 moved away from shortcodes, listing leftover shortcodes in post content after moving away from Divi as one of the problems the new format fixes.

The other failure mode is worse. Builders that store layout as serialised or JSON data in wp_postmeta put your content outside post_content altogether. Search and replace across a serialised blob breaks the byte-length prefixes PHP uses, so a naive SQL find-replace during a domain migration silently corrupts pages. And because the visible text lives in a private meta field, there is no clean export: migrating means rebuilding every page by hand.

Watch out

Before you commit, open one page in the database and look at where the words are. If the paragraph text you see on the front end is not in post_content, you are buying a migration you cannot script. That single check tells you more than any feature comparison, including the one in our Divi theme review.

What actually makes a WordPress development framework slow

Frameworks are slow for mechanical reasons you can inspect in a browser, not for mystical ones, and four patterns account for most of it.

  1. Unconditional enqueues. The theme loads its slider CSS, icon font and carousel JS on every page including ones with no slider, because the enqueue is not gated on whether the module is used.
  2. jQuery as a hard dependency. Anything still built on jQuery pulls core’s copy plus its own plugins, and those are render-affecting scripts on pages that need no JavaScript at all.
  3. Inline CSS per section. Builders that emit a style block for every row and column inflate the HTML document itself. That weight is uncacheable at the CSS layer because it is part of the page.
  4. Asset count. Twelve small stylesheets cost more than one, and a framework with a modular architecture often ships exactly that.

You can test any candidate yourself in ten minutes without trusting anyone’s benchmark. Install the free theme on a clean site, build one representative page, then open the network panel and count requests and total transferred bytes. Repeat on a page that uses none of the fancy modules. If the numbers barely move, the theme is enqueuing unconditionally and it will not get faster later.

Then check that your caching layers are actually engaging on the result, which is what Cache Inspector in our toolbox is for, and work through the basic steps that make a site run faster before you blame the framework for something your stack is doing.

When a framework is the wrong choice

A framework is overhead that pays for itself across repetition, so it is the wrong choice whenever there is no repetition to spread it over. Four situations where reaching for one makes things worse:

  • A single-page or brochure site. A block theme and four patterns will beat a framework you have to learn, configure and license.
  • A site the client will never edit. Most of a theme framework’s price is the editing UI. If nobody opens wp-admin after launch, you are paying for a control panel with no user.
  • A team that already knows one tool well. Fluency in a mediocre tool beats a better tool nobody has used. Switch on a project you can afford to be slow on, not a deadline.
  • Anything being handed to another developer in two years. The next person knows core WordPress. They may not know your framework’s hook names, and they will bill for learning them.

Three specific mistakes worth naming. Editing a parent theme directly, which an update erases: build a child theme in two minutes instead, and if you need to replace a parent function, learn how pluggable functions and hook removal actually work rather than commenting things out. Stacking a page builder on top of a theme framework, which gives you two competing layout systems and two sets of CSS to unpick. And buying a lifetime licence as a hedge against abandonment: a lifetime licence guarantees you access to the files, not that anyone is still writing them.

How to start without over-committing

Start with core tooling and a block theme, prove the design works, and only add a framework when you hit something core genuinely cannot do. Here is the whole path in commands.

Spin up a disposable local environment. wp-env needs Node and a running Docker Desktop, and lands on http://localhost:8888 with admin/password.

npm -g install @wordpress/env
cd my-project
wp-env start
wp-env clean all      # reset the database
wp-env destroy        # tear the whole thing down

Create a child theme properly. WP-CLI writes the Template: header for you, which is the part people get wrong by hand.

wp scaffold child-theme colt-child \
  --parent_theme=twentytwentyfive \
  --theme_name="Colt Child" \
  --activate

Then copy the parent’s theme.json into the child, cut it down to the settings you care about, and iterate there. Overrides merge onto the parent, so a twenty-line child theme.json is normal and correct.

For custom blocks, note that the scaffold command family has moved on: wp scaffold block is deprecated and the supported route is the official create-block package.

npx @wordpress/create-block colt-pricing-table
cd colt-pricing-table
npm start

Pro tip

Commit your theme.json before you touch the Site Editor. Global Styles changes made in the UI are stored in the database as a custom post, not in your file, so a designer’s tweaks will not appear in git and will not deploy. Export them back into the file deliberately.

Verdict: which WordPress development framework to pick

For most projects in 2026 the correct answer is no theme framework at all: a block theme, a disciplined theme.json, and effort spent on the stack layer instead. The exceptions are real but narrower than the listicles suggest.

Project typeRecommended approachWhyRough costMain risk
One-off small business siteBlock theme plus theme.json, no frameworkNothing here needs a settings panel core does not already provide$0 in licencesYou hit a layout core blocks cannot produce and have to write a block
Client site an agency maintains for yearsCustom block theme, or a classic theme you wrote, under version controlHandover cost dominates. Core knowledge transfers, framework knowledge does notMore build hours, no recurring feeHigher up-front hours to justify to the client
High-traffic publisherLean custom theme plus Bedrock and a real deploy pipelineAsset count and cache behaviour matter more than editing UIEngineering time, hostingOver-engineering a site whose real bottleneck is caching
Product or plugin business@wordpress/scripts, wp-env, WP-CLI, CMB2 if you need fieldsYou ship to other people’s sites, so a paid field dependency is a support burden$0 in licencesFree field libraries move slowly; check status before you depend on one
Headless buildCore plus ACF or SCF, REST or GraphQL, no theme layerThe theme is a rendering layer you are not usingACF PRO from $49/yr if you use itEditors lose live preview unless you build it back
Costs reflect licence prices published by each vendor in August 2026 and exclude hosting and labour.

If you build one or two sites a year and want them fast, take GeneratePress or Blocksy, buy the cheapest tier, and stop reading comparison posts. If you are a developer building for clients, learn block themes and theme.json properly; it is the only skill on this page guaranteed to still be relevant in five years. If you already have a Genesis or Sage practice that works, keep it and do not migrate for fashion.

And if you are choosing a page builder as your framework, choose one that stores content in a format you can read without it. That single constraint will save someone a rebuild.

Frequently asked questions

Is Underscores still a good starting point for a new WordPress theme in 2026?

No. Automattic archived the Underscores repository on 5 September 2025 and stated the project is all-in on block themes, so it will not be actively updated again. Any tutorial that opens by telling you to download Underscores was written for an older WordPress. Start a new theme from a block theme and theme.json instead.

Should I start a new site on the Genesis framework in 2026?

Probably not, unless you already run Genesis sites and want to keep them consistent. Genesis is not abandoned, WP Engine keeps shipping compatibility releases, but compatibility releases are not active development, and Genesis Pro costs 360 dollars per year to stay on a hook-and-filter architecture core has moved away from. A new project is better served by a block theme.

What is the real difference between ACF and Secure Custom Fields?

Secure Custom Fields is the free fork distributed through WordPress.org after the 2024 dispute, and it deactivates ACF and ACF PRO on install to avoid function collisions between the two. ACF PRO remains the paid commercial version, at 49 dollars a year for one site. The two are no longer simply free-versus-paid tiers of the same plugin; decide deliberately which one a project is running.

How can I tell if a page builder will make a future migration painful?

Open a page in the database and check where the visible text actually lives. If it sits in post_content as shortcodes or plain markup, migration is bounded and scriptable. If it lives as serialised or JSON data in wp_postmeta, a naive find-replace can corrupt it, and there is no clean export, meaning every page has to be rebuilt by hand when you move away from the builder.

Does using wp-env or Bedrock change how my site looks to visitors?

No. Development stacks and tooling such as wp-env, Bedrock, WP-CLI and wordpress scripts operate entirely at the deployment and environment layer and touch nothing about the theme or design. If the real complaint is that deploys are manual or staging does not match production, that is the layer to fix; no theme framework addresses it, because it is a different problem entirely.

Why would a theme with a modular architecture still load slowly?

Because unconditional enqueues load slider CSS, icon fonts and carousel JS on every page regardless of whether that page uses them, and jQuery as a hard dependency pulls extra render-affecting scripts even where no JavaScript is needed. Test any candidate by opening the network panel on a plain page; if request count and transferred bytes barely drop, the theme is enqueuing unconditionally everywhere.

Is a lifetime licence for a theme framework a safe hedge against abandonment?

Not really. A lifetime licence guarantees access to the files you already have, not that anyone is still writing updates for them or fixing compatibility as WordPress core changes. Several of the theme frameworks discussed still ship active releases in 2026, but the licence type itself says nothing about that; check the changelog and release cadence rather than trusting the licence term.

Do Global Styles changes made in the Site Editor automatically end up in my theme.json file?

No, and this catches teams using version control off guard. Global Styles edits made through the Site Editor UI are stored in the database as a custom post, not written back into the theme.json file on disk. A designer’s tweaks made in the editor will not appear in git and will not deploy unless someone deliberately exports them back into the file.