
A Block Theme and Theme.json
I spent my morning digging through a client’s site that was basically a graveyard of bloated page builder plugins and “custom” CSS that nobody dared to touch. It’s the same story every time: someone buys a massive, multipurpose theme thinking they’re being efficient, only to realize they’ve just inherited a thousand decisions they didn’t make. If you’re tired of fighting against your own tools, you need to stop looking for the perfect pre-made solution and start learning how to build a block theme from the ground up. It’s the only way to ensure you actually own the architecture instead of just renting it from a developer who prioritized features over performance.
I’m not here to sell you on some magical, one-click workflow or a proprietary builder that promises the world and delivers a slow, heavy mess. My goal is to show you how to strip away the noise and build something lean, intentional, and fast. I’ll walk you through the actual mechanics of the block editor so you can make your own design decisions without the bloat. We’re going to do this the right way—no fluff, no unnecessary plugins, just clean code and total control.
Table of Contents
Mastering the Logic of Themejson Structure

If you think you can just wing your way through a block theme by clicking buttons in the editor, you’re in for a rude awakening. The real brain of the operation is `theme.json`. I spent years fighting bloated CSS from developers who clearly didn’t understand the hierarchy of their own code, but with understanding theme.json structure, you actually get to be the one in control. This file isn’t just a settings menu; it’s the single source of truth for your entire design system. It dictates your color palettes, your typography scales, and—most importantly—the spacing rules that keep a site from looking like a digital junk drawer.
When I’m deep into block-based theme development, I treat this file like a manifesto. You aren’t just “adding colors”; you are defining the constraints that prevent a client from breaking the layout six months down the line. By setting your global styles here, you ensure that every block behaves predictably. If you don’t define your settings and styles properly in this JSON file, you’ll end up back in the nightmare loop of writing custom CSS overrides just to fix a margin that should have been standardized from the start. Stop fighting the editor and start commanding it.
A WordPress Full Site Editing Tutorial for Architects

If you’re approaching this like a traditional developer, you’re probably looking for the PHP files to hijack. Stop. If we’re doing this right, we aren’t just coding; we’re designing a system of constraints. Think of this WordPress Full Site Editing tutorial not as a guide to making a pretty layout, but as a blueprint for a structural framework. In the old days, I’d spend hours fighting a theme’s hardcoded header just to change a single div. Now, we’re building the logic first. You aren’t just “making a site”; you are defining how every future component behaves within the boundaries you set.
The real magic—and the part that keeps my blood pressure low—is in the modularity. Instead of building monolithic pages that break the moment a client touches a button, you should be focusing on creating block patterns for themes. This is where you transition from a mere coder to a digital architect. You aren’t just handing someone a bucket of LEGOs; you’re providing the pre-assembled structures that ensure the design stays intact. When you master this, you stop fixing broken layouts and start actually designing scalable systems.
Stop guessing and start deciding: 5 rules for theme building
- Stop treating theme.json like a junk drawer; if you don’t explicitly define your color palette and typography scales there, you’re just leaving the door open for a client to break your design five minutes after launch.
- Build for the editor, not just the front end. If your block styles are a nightmare to manipulate in the Site Editor, you haven’t built a theme—you’ve built a high-maintenance cage.
- Audit your pattern library before you even think about shipping. A good block theme lives or dies by its patterns; if you aren’t providing pre-composed layouts, you’re forcing users to recreate your hard work from scratch.
- Keep your CSS lean by leaning on global styles. I’ve inherited enough bloated stylesheets to know that if you’re writing custom CSS for something that `theme.json` can handle, you’re just adding technical debt for no reason.
- Test your spacing scales ruthlessly. There is nothing more amateur than a theme that uses arbitrary pixel values instead of a consistent, mathematical spacing scale that actually respects the rhythm of the layout.
Stop being a passenger in your own builds

Look, we’ve covered a lot of ground, from the granular logic of your theme.json architecture to the high-level structural decisions that define a true FSE layout. Building a block theme isn’t about finding a magic plugin that does the heavy lifting for you; it’s about reclaiming control over the code and the styles that dictate how your site actually breathes. You now know how to map out your color palettes, set your typography scales, and define the constraints that prevent a site from turning into a bloated, unmanageable mess. If you follow these principles, you aren’t just building a website—you are engineering a foundation that won’t crumble the moment a client decides they want a new font.
At the end of the day, my goal is to see fewer developers trapped in the “page builder prison” where every design choice is a battle against pre-set limitations. When you build your own block theme, you stop fighting the software and start making the decisions yourself. It takes more discipline upfront, and yes, it requires a bit more brainpower than dragging a widget onto a screen, but the payoff is a site that is lean, fast, and actually yours. Stop settling for the decisions someone else made in a template. Go out there, write your own rules, and build something that lasts.