Blog wpTruss

WordPress Themes Are Architectural Debt

6 min read

I have been building websites since the early 2000s.

Over the years I have seen the web evolve through table layouts, inline styles, early CSS frameworks, jQuery-heavy themes, page builders, shortcode ecosystems… all the way to Gutenberg.

And honestly, when Gutenberg Blocks arrived in WordPress, it felt like a clean slate again.

For the first time, WordPress did not feel like a collection of templates stitched together with plugins. Blocks made sense. Structured editing made sense. Reusable components made sense.

It finally felt like WordPress could evolve into a proper publishing system.

But while building real projects with Gutenberg, I kept running into the same issue again and again.

The blocks were modern, but the architecture around them was still fighting the past.

Themes were still controlling too much.

Even with Gutenberg, themes were still overriding styles, injecting CSS everywhere, controlling layouts, affecting spacing and typography, conflicting with blocks, affecting performance, and creating inconsistencies between pages.

The more I worked on projects, the more I realized something important.

The problem was not Gutenberg.

The problem was that WordPress still had no governing contract between themes, blocks, plugins, layouts, and design systems.

Every plugin shipped its own styles. Every theme shipped its own assumptions. Every builder tried to control rendering differently.

And slowly every website started drifting into chaos.


The Problem Nobody Talks About


Most WordPress websites do not fail suddenly.

They slowly accumulate architectural debt.

At first everything feels manageable. Then another plugin gets installed. Another developer touches the project. A custom section gets added. A different block library gets mixed in. WooCommerce gets customized. CSS overrides start piling up.

And after some time, the system starts losing consistency.

Buttons stop matching. Spacing becomes random. Typography starts drifting. Components behave differently across pages. Assets load unpredictably. Performance becomes harder to control.

I started calling this design entropy.

Design entropy is what happens when every part of the system starts making its own design decisions without governance.

And honestly, I don’t think themes were originally designed to handle this level of responsibility.

Themes solved a different era’s problem.

Earlier websites were mostly static layouts. Modern websites are completely different.

Today a website can contain dynamic commerce, memberships, APIs, SEO systems, AI-generated content, reusable components, structured data, dynamic rendering, and multiple integrations running together.

But the architecture still assumes:

“The theme should control everything.”

That is where the problem begins.


Gutenberg Changed WordPress… But Not Completely

Gutenberg modernized content editing, but the ecosystem around it still behaved like the pre-block era.

Blocks still depended heavily on themes. Themes still overrode block behavior. Plugins still injected uncontrolled CSS. There was no unified token system, no shared design contract, and no structural governance layer.

The more I worked with Gutenberg, the more I kept thinking about this system.

Not for weeks.

For years.

I kept asking myself:

What if WordPress had a proper architectural layer between themes, blocks, plugins, and layouts?

That thought eventually became wpTruss.


We Did Not Start With a Big Vision

Initially we simply started building Gutenberg blocks.

That was the starting point.

But after building enough blocks, another issue became obvious. Every block repeated the same design logic again and again:

  • colors
  • spacing
  • typography
  • shadows
  • borders
  • alignment
  • sizing

Everything was scattered.

So we started moving towards design tokens.

Initially it was just a simple JSON-based token approach. But gradually the system evolved into a full token registry where design decisions remained centralized instead of being scattered across blocks and themes.

The goal was simple:

Keep design decisions in one place.

Instead of every block making its own styling decisions, blocks would consume shared tokens.

That changed everything.

Colors stayed consistent. Spacing became predictable. Typography stayed controlled. Layouts became reusable. Design drift reduced massively.

This eventually evolved into a complete Design Token Engine.

The token system slowly became the shared contract across the architecture.

Not just a styling layer.

A system layer.


Then Came The Bigger Realization

While building the token system, another realization slowly appeared.

Almost everything on a website could be treated as blocks.

Not just content sections.

But also:

  • headers
  • footers
  • menus
  • layouts
  • reusable sections
  • structural areas of the page

So instead of letting themes permanently control these areas, we started building a structure system around blocks themselves.

That led to reusable headers, reusable footers, replaceable layouts, governed structure rendering, and centralized layout control.

Eventually we built a Global Structure System around this idea.

And honestly, that was the turning point.

Because once structure itself became governed through blocks, themes stopped being the center of the architecture.

They became containers.

Disposable containers.


Themes Became The Wrong Abstraction Layer

Themes are not bad.

But modern WordPress systems ask themes to handle responsibilities they were never designed to own.

Today themes are expected to manage:

  • layouts
  • design systems
  • performance
  • responsiveness
  • structure
  • rendering consistency
  • component behavior
  • plugin compatibility

That is too much responsibility for one layer.

Especially when every plugin and block system behaves differently.

The result is fragmentation.

And fragmentation eventually becomes performance problems.

Most WordPress optimization today focuses on caching, minification, image compression, lazy loading, and CDN setups.

Those things definitely help.

But many performance problems are actually architecture problems disguised as optimization problems.

Because when every plugin ships its own CSS, assets, rendering logic, layout assumptions, and frontend behavior, performance eventually becomes unpredictable.

Most developers optimize pages.

But the real problem is usually architectural fragmentation underneath the page.


What wpTruss Is Actually Trying To Solve

wpTruss is not trying to replace WordPress.

And honestly, it is not trying to replace Gutenberg either.

It is trying to introduce governance.

A shared system contract.

A proper architectural layer between themes, blocks, plugins, layouts, and rendering systems.

That is why wpTruss operates around:

  • design tokens
  • governed blocks
  • validator systems
  • shared element registries
  • global structure management
  • reusable architecture patterns

The goal is simple:

Make WordPress behave more like a governed publishing system instead of disconnected parts fighting each other.

The system eventually evolved into:

  • a Design Token ABI
  • a governed block architecture
  • a validator and registry system
  • shared UI element registries
  • a structure engine where layouts themselves became composable

And slowly the original realization became clearer:

Themes should not be the operating system anymore.


The Future Of WordPress

I don’t think themes will disappear completely.

But I do think their role will change.

The future of WordPress feels more like governed composition:

  • reusable structures
  • shared design contracts
  • centralized token systems
  • semantic block architecture
  • machine-readable content systems
  • predictable rendering systems

Not uncontrolled customization.

And honestly, Gutenberg was probably the first real step in that direction.

It opened the door.

But it also exposed the architectural gaps around it.

wpTruss is simply an attempt to solve those gaps from a systems perspective.

Not by fighting WordPress.

But by helping it evolve into something more structured, scalable, and predictable.

Because after building websites for years, one thing became very clear to me:

Most WordPress problems are not plugin problems.

They are architecture problems.

And architecture problems cannot be solved with more CSS overrides.