GeneratePress vs Kadence vs Brndle: Hooks, Blocks, or Blade

An agency picking a lightweight WordPress theme in 2026 almost always ends up comparing three names: GeneratePress, Kadence, and now Brndle. All three promise the same thing on their homepages, a fast theme that gets out of the way on a client build. What they actually hand a developer to extend that promise with is three different philosophies, and the choice sticks with every project built on top of it. GeneratePress built its name on PHP hooks: you write a function, target a hook location, done. Kadence built its name on a block library: you drag a Row Layout into the editor and style it with panels. Brndle, the free theme this site maintains, is built on Laravel’s Blade templating through Acorn, with a native block library included at no cost and no paid tier above it.
This is not a “which is better” post. GeneratePress and Kadence both have ecosystems and install bases Brndle does not have and is not pretending to have. It is a comparison of what you are actually signing up to extend, with real code, real current pricing (checked on 29 October 2026, linked below so you can re-check it yourself), and a worked scenario for picking between them on a real client build.
In this comparison
- What GeneratePress actually gets you: hooks, then GenerateBlocks on top
- What Kadence actually gets you: a block library, now inside a bigger bundle
- What Brndle actually gets you: Blade views and a free block library
- Side by side: pricing, philosophy, blocks, learning curve, fit
- A worked scenario: an agency dev picking a theme for a new client build
- The bottom line
- Questions about GeneratePress, Kadence and Brndle
- What should you do next?
What GeneratePress actually gets you: hooks, then GenerateBlocks on top
GeneratePress earned its reputation the old way: a free theme under 10kb gzipped, over 500,000 active installs, a 4.9-star rating across nearly 1,400 five-star reviews, and a set of named action hooks baked into the template output. generate_before_header, generate_after_header, generate_before_content, generate_after_content, generate_before_footer. A developer who wants a promo bar above the content does not touch a template file:
add_action( 'generate_before_content', function () {
echo '<div class="promo-bar">Free shipping over $50</div>';
} );
That line goes in a child theme’s functions.php or a site-specific plugin, and it works on the free theme with no purchase. This is the part of GeneratePress’s reputation that is still accurate: a developer comfortable with PHP can extend the theme without fighting a block tree, a visual builder, or a settings panel that does not expose the one option they need.
What changed is what you get if you pay. GP Premium used to add a Hooks element, a plain admin screen under Appearance → Elements where a non-developer could paste HTML or a shortcode into one of those same named hook locations and set display rules (specific post types, user roles, logged-in state) without writing a line of code. That element is still there. But as of the pricing check for this post, GeneratePress no longer sells GP Premium on its own. It sells GeneratePress One: a single plan that bundles GP Premium, GenerateBlocks Pro (their own native block library: Container, Grid, Headline, Text, Button, Image, Shape and Query blocks free, plus Accordion, Tabs, Carousel, Site Header and Navigation blocks and 200+ more patterns on the paid tier), GenerateCloud (sync your own pattern library across every site on the license), and GeneratePress AI (build and edit pages by prompting an AI assistant you already use). One plan, $99/year for one site, $149/year for 10 sites, $199/year for 100 sites, with a $596 one-time lifetime option on the 100-site tier.

So the honest version of “GeneratePress is the hooks theme” is: the free theme and its hook locations are still code-first and still require a developer. The thing you pay for has converged on the same ground as Kadence, a visual block builder, plus GenerateCloud and an AI layer neither Kadence nor Brndle currently ships. A developer who only ever wanted the Hooks element is now buying a block library and an AI assistant to get it.
What Kadence actually gets you: a block library, now inside a bigger bundle
Kadence never pretended to be a hooks theme. The free Kadence theme ships a drag-and-drop header and footer builder, starter templates, and global font and color controls, also at 500,000+ active installs with a 4.9-star rating. The real extension surface is the separate Kadence Blocks plugin, 600,000+ active installs on its own, which turns the block editor into what Kadence itself calls a full-featured visual website builder. The free plugin ships 20+ block types: Row Layout, Accordion, Tabs, Advanced Button, Advanced Form, Advanced Gallery, Advanced Text, Countdown, Count Up, Icon, Icon List, Info Box, Lottie Animation, Posts, Progress Bar, Section, Show More, Spacer/Divider, Table of Contents, and Testimonials. A developer building a landing page composes these visually, in the native editor, the way a client’s own team will later edit it:
<!-- A simplified view of what a three-column Row Layout
looks like in post content. Attribute names and the
uniqueID suffix are Kadence's own and will vary by build. -->
<!-- wp:kadence/rowlayout {"uniqueID":"_a1b2c3","columns":3} -->
<div class="wp-block-kadence-rowlayout kt-row-layout-id_a1b2c3">
<!-- wp:kadence/column {"uniqueID":"_d4e5f6"} -->
<!-- wp:kadence/infobox {"uniqueID":"_g7h8i9"} /-->
<!-- /wp:kadence/column -->
</div>
<!-- /wp:kadence/rowlayout -->
Kadence Blocks Pro adds Advanced Query Loop, Advanced Slider, Modal, Post and Product Carousel, Repeater, Split Content and Video Popup blocks, Animate on Scroll, custom icon and font uploads, dynamic content tags, and an 800+ pattern Design Library. Kadence Cloud (their Pattern Hub) lets an agency build its own reusable pattern library once and pull it into every client site.
The thing worth flagging, because it changes how you’d actually buy this in 2026: Kadence is now part of Liquid Web’s Nexcess software portfolio, alongside StellarWP products like The Events Calendar, LearnDash and Give. Kadence’s own pricing pages redirect to liquidweb.com/software/kadence/, and as of this check there is no standalone “just Kadence Blocks Pro” purchase on that page. Pricing is a single bundle: $350/year for one site up to $999/year for 100 sites, and every tier includes Kadence plus The Events Calendar, LearnDash and Give, whether or not you need event ticketing or course software on that build. For an agency that only wants the theme and blocks, that is a materially different buy than the simpler single-product pricing Kadence used to run.

What Brndle actually gets you: Blade views and a free block library
Brndle’s extension model is neither hooks-in-a-child-theme nor blocks-in-a-visual-builder, it is templates. The theme is built on Acorn (Roots’ Laravel component bridge for WordPress) and renders every template through Laravel’s Blade engine instead of raw PHP template tags. A developer who already knows Blade from Laravel work writes {{ }} and @if instead of <?php echo ?> and <?php if ?>, and gets template inheritance, components and the rest of Blade’s syntax for free.
Blocks are not an upsell, they are the base product. The theme registers 20 native Gutenberg blocks through a single BlockServiceProvider class, pulled directly from the project’s own source on GitHub: Hero, Logos, Stats, Features, Testimonials, Pricing, CTA, FAQ, Content-Image Split, How It Works, Lead Form, Comparison Table, Team, Video Embed, plus a second wave of editorial blocks (Code, Pull Quote, Timeline, Tabs/Accordion) and a third wave (Post Feed, Card Grid) added in later versions. Every one of them is server-side rendered through a Blade view named after the block slug:
foreach ( $this->blocks as $block ) {
$viewName = "blocks.{$block}";
$blockName = "brndle/{$block}";
register_block_type( $path, [
'render_callback' => function ( array $attributes, string $content ) use ( $viewName, $blockName ) {
$attributes = \Brndle\Blocks\AttributeMigrations::apply( $blockName, $attributes );
if ( function_exists( 'Roots\\view' ) ) {
return view( $viewName, [
'attributes' => $attributes,
'content' => $content,
] )->render();
}
return $content;
},
] );
}
Two details in that snippet matter more than they look. AttributeMigrations::apply() runs on every render, which means an older post saved against an earlier version of the Hero block gets its attribute shape upgraded automatically instead of the Blade view carrying permanent is_string() || is_array() branches to cope with every historical format. And the fallback, returning raw $content if Acorn’s view helper is missing, means a broken Composer install degrades to plain markup instead of a fatal error.
A developer who wants to add their own color option, not swap one out, uses the documented filter hooks instead of editing the theme: brndle/color_presets, brndle/font_pairs, brndle/css_variables, brndle/archive_layout, brndle/single_layout, plus brndle/settings_defaults, brndle/settings and brndle/color_palette for deeper overrides. The README’s own example, copied here verbatim:
add_filter('brndle/color_presets', function (array $presets): array {
$presets['brand'] = [
'label' => 'My Brand',
'primary' => '#FF6B00',
'secondary' => '#1A1A2E',
];
return $presets;
});
That is a WordPress filter, the same mechanism GeneratePress’s hooks use, not a Laravel-only concept. Blade is the templating layer; extending the theme’s behaviour from a plugin or child theme still goes through standard WordPress filters.
The whole theme, 20 blocks included, is GPL-2.0-or-later, the same license as WordPress itself, downloadable as a release zip with no build step required and no license key to activate. There is no Brndle Pro. Being fair about the tradeoff: 20 fixed blocks is a real design system, not 800+ patterns, and there is no Kadence Cloud equivalent for syncing a custom pattern library between client sites, if you want that you are building it yourself with Blade components and version control. What you are not doing is paying per site, per year, for blocks that came free on day one.
Side by side: pricing, philosophy, blocks, learning curve, fit
| GeneratePress | Kadence | Brndle | |
|---|---|---|---|
| Current pricing (checked 29 Oct 2026) | Free theme, or GeneratePress One: $99/yr (1 site) to $199/yr (100 sites), $596 lifetime on the 100-site tier | Free theme + free Kadence Blocks, or the Liquid Web/Nexcess bundle: $350/yr (1 site) to $999/yr (100 sites), includes The Events Calendar, LearnDash and Give whether you need them or not | 100% free, GPL-2.0-or-later, no paid tier, no license key |
| Extension philosophy | Named PHP action hooks in the free theme; GP Premium’s Hooks element gives non-developers a UI for the same hook locations | A 20+ block visual library (Kadence Blocks) composed in the native editor; PHP hooks exist but are not the sales pitch | Blade views via Acorn, registered through one BlockServiceProvider; extend via documented WordPress filters |
| Block library depth | None free; GenerateBlocks Pro (bundled in GeneratePress One) adds Container, Grid, Headline, Text, Button, Image, Shape, Query, Accordion, Tabs, Carousel, Site Header, Navigation, 200+ patterns | 20+ free blocks, Pro adds Query Loop, Slider, Modal, Carousel, Repeater, Split Content, Video Popup, 800+ pattern Design Library | 20 native blocks included free, server-rendered, no paid add-on blocks |
| Learning curve | Low if you already write PHP; the paid block layer (GenerateBlocks) is a second system to learn on top of the free theme’s hooks | Low for anyone comfortable in the block editor; no PHP required to build a page | Low for block composition; moderate if you want to write custom Blade views or blocks, since that assumes Laravel-flavoured PHP and a Composer/Node workflow |
| Best-fit developer profile | A developer who wants minimal theme weight and total control via code, and is willing to pay for an AI/cloud/block layer bundled on top | An agency or freelancer building visually with clients in the room, who wants one plugin to cover most sections without writing PHP | A developer who wants a complete design system on day one at zero cost, and is comfortable with (or wants to learn) Blade and Acorn |
A worked scenario: an agency dev picking a theme for a new client build
Say an agency developer is scoping a twelve-page marketing site for a client who will edit their own blog afterward. Three realistic paths:
- Pick GeneratePress if the client’s editors will never touch layout, only text, and the developer is comfortable hand-building every section in PHP against the theme’s hook locations. This is fast for a developer who already has a library of snippets, and it keeps the client’s admin screens simple since there is no block builder to explain. The cost shows up later: if the agency wants the client (or a junior teammate) to adjust a section’s layout without a code change, GeneratePress One’s $149/year-for-10-sites GenerateBlocks Pro tier becomes the honest answer, not a Hooks-element workaround.
- Pick Kadence if the client wants to be in the editor adjusting sections themselves after launch, and the agency builds visually to begin with so the handoff costs nothing extra. The real line item to check before quoting the project: does this client’s build need Kadence Blocks Pro’s patterns or dynamic content, and is the agency’s license already on the Liquid Web bundle (in which case it is free) or starting fresh (in which case $350/year buys a lot of unused event-ticketing and course software alongside the blocks actually wanted).
- Pick Brndle if the budget has no line item for theme or plugin licensing at all, the 20 included blocks cover the sections the site needs (hero, stats, features, testimonials, pricing, FAQ, team, CTA and the rest read like a standard marketing-site inventory), and the developer either knows Blade already or is willing to learn it to customise beyond what the blocks and filters expose. The tradeoff to accept going in: there is no 800-pattern library to pull from and no cross-site pattern sync, every new pattern is a Blade view the developer writes once and reuses with version control.
None of these is wrong. The mistake is picking the theme before answering who edits the site after launch and whether the agency is licensing one site or fifty.
The bottom line
GeneratePress’s reputation as “the hooks theme” is still earned at the free tier, but the product it actually sells in 2026 is GeneratePress One, a bundle that competes with Kadence on blocks and adds an AI layer neither competitor ships yet. Kadence’s reputation as “the block theme agencies reach for” is also still earned, but buying it now means buying into the wider Liquid Web/Nexcess software stack, not a standalone theme purchase. Brndle does not have either company’s install base, review count, or years of battle-testing, and it would be dishonest to pretend otherwise. What it has that neither competitor can match at any price is a complete block library and Blade-based templating included on day one, free, with nothing to unlock later. If the deciding question for your next build is “what does this cost per client site, forever,” that is the number worth putting next to the other two before you commit.
Questions about GeneratePress, Kadence and Brndle
Is GeneratePress’s hook system still relevant now that GenerateBlocks Pro exists?
Yes, and it is still free. The named hooks (generate_before_content and the rest) ship in the free theme and work with a plain add_action() call, no purchase required. What moved behind a paywall, and got bundled with GenerateBlocks Pro, GenerateCloud and GeneratePress AI into GeneratePress One, is the no-code Hooks element for non-developers.
Do I need Kadence Blocks Pro to use the Kadence theme well?
No. The free Kadence Blocks plugin’s 20+ blocks (Row Layout, Accordion, Tabs, Advanced Form, and the rest) cover most marketing sections on their own. Pro is for sliders, modals, dynamic query loops, and the 800+ pattern Design Library, not baseline page building.
Can I use Brndle’s Blade templates without knowing Laravel?
For building pages with the included blocks, yes, that happens entirely in the block editor like any other theme. Writing or editing a custom Blade view, or adding a new block, assumes comfort with Blade’s syntax and a Composer/Node-based development workflow, the same assumption any Sage-based Laravel-flavoured theme makes.
Does Brndle work with WooCommerce or page builders?
Brndle is a block theme built for the native editor; it does not ship WooCommerce-specific blocks in its current 20-block set. If your build needs a page builder’s drag-and-drop canvas rather than block composition, that is a reason to look elsewhere, the same way it would be for GeneratePress or Kadence’s block-based approach.
Which of the three is fastest or lightest?
GeneratePress’s free theme is explicitly built to add under 10kb gzipped and has over a decade of performance-focused development behind that claim. Kadence and Brndle both target Core Web Vitals seriously, Brndle specifically aims for Lighthouse 100 by shipping server-rendered blocks instead of a client-side builder. None of the three publish a head-to-head benchmark worth quoting without running it yourself on a real page.
Can I run GeneratePress with Kadence Blocks, or mix and match?
Yes. Kadence Blocks is a standalone plugin and works on any block theme, GeneratePress included. Plenty of real sites run GeneratePress for its lightweight base and hook locations, with Kadence Blocks (or GenerateBlocks) layered on top for visual page building. Brndle’s 20 blocks are theme-native and not published as a separate plugin, so they are not available this way.
Is Brndle really free forever, with no upsell planned?
As of this check, yes: GPL-2.0-or-later, no license checks in the code, no paid tier on the project’s GitHub repository or on brndle.com. That can change in any open-source project’s future, but nothing in the current codebase or pricing page suggests a Pro version is coming.
How do I migrate a site between these three?
Expect a rebuild, not a conversion, the same as moving off any page builder. Text and images carry over through normal WordPress export/import. Section layouts do not: a Kadence Row Layout, a GenerateBlocks Container, and a Brndle Hero block are three unrelated block types with no shared markup, so each theme’s sections get rebuilt by hand in the destination theme’s own blocks. We cover the mechanics of that kind of rebuild, measured on a real test page, in our page builder to block theme teardown.
Which is best for a client who wants to edit their own site with no developer on call?
Kadence, on the strength of its block library’s breadth and the agency familiarity with handing it off to non-technical editors. Brndle’s 20 blocks are editor-friendly once built, but a client who wants to add new kinds of sections beyond what is included needs a developer to write the Blade view. GeneratePress’s free-tier hook model assumes a developer is always available; GeneratePress One’s GenerateBlocks layer closes that gap but is a second product to learn.
Does any of them lock me into their own visual editor instead of core Gutenberg?
No. All three register standard Gutenberg blocks or hook into standard WordPress mechanisms; none of them replace the block editor with a proprietary canvas the way a classic page builder does. GenerateBlocks, Kadence Blocks, and Brndle’s native blocks all live inside the same editor your client already knows.
What should you do next?
Check current pricing yourself before quoting a project, all three vendors change plans often enough that a six-month-old blog post (including parts of this one, eventually) will be wrong: GeneratePress pricing, Kadence via Liquid Web, and Brndle’s source on GitHub. If you are specifically evaluating Brndle’s design system for an agency build, our piece on building a design system an AI agent can follow covers how the filter hooks and theme.json tokens are meant to be extended, and turning a Tailwind theme into theme.json is the next read if your team already has Tailwind conventions you want to carry over.