RevealTheme logo
Back to Blog

I Built 47 WordPress Sites Last Year — Here's the Theme Stack I Actually Use

I Built 47 WordPress Sites Last Year — Here's the Theme Stack I Actually Use
The RevealTheme Team

By

·

People ask me for "the best WordPress theme" the way they ask for the best car. There isn't one. There's a stack — a foundation theme, a way of building pages on top of it, and the handful of plugins that turn a pretty layout into a site that actually loads fast and ranks. After enough projects, that stack stops being a debate and becomes muscle memory. This is the one I reach for by default, the alternatives I weighed against it, and the reasons each piece earned its slot.

The foundation: a lightweight block-aware theme, not a kitchen sink

The single biggest decision is the base theme, because everything else inherits its weight. The mistake I see most often is starting from a heavy multipurpose theme — the kind that ships with 40 prebuilt demos, a bundled slider, and its own page builder. Those demos look great in the marketplace screenshots and then load 1.5MB of CSS and JavaScript before a visitor sees a word.

My default foundation is GeneratePress. It ships a tiny core (the front-end footprint is famously around 10–30KB of CSS/JS before you add anything), it's coded cleanly enough that it almost never fights you, and the Premium add-on unlocks the parts you actually need — typography controls, color management, and the Elements module for hooking in custom headers, footers, and hooks without touching functions.php.

The runners-up are real, and which one I pick depends on the client:

  • Kadence — my pick when a non-technical client will be editing the site themselves. Its header/footer builder and the Kadence Blocks library give them guardrails. Slightly heavier than GeneratePress, but the usability trade is worth it.
  • Blocksy — the most generous free tier of the bunch, with native WooCommerce features (sticky cart, quick view) baked in. I reach for it on small shops.
  • Astra — still solid and fast, but its starter-template ecosystem leans on bundling a builder, and I find myself stripping things out. I use it less than I used to.

What I no longer build on: Divi and Avada as themes. They're capable, but you're marrying the theme and the builder permanently, and the page weight reflects it. If a client is already committed to one, fine — but I won't start a fresh project there.

How I build the pages: blocks first, Bricks when it needs to be visual

The theme gives you a frame; you still have to lay out pages. In 2026 there are three honest answers, and I deliberately don't use all three on the same site.

Default: the native block editor (Gutenberg) plus a block plugin. Full-site editing has matured to the point where, for content-driven sites — blogs, brochure sites, docs — I build entirely in blocks. I add Kadence Blocks or GenerateBlocks for the layout primitives the core editor still lacks (true container/grid control, query loops with decent styling). The payoff is enormous: no builder bloat, no shortcode lock-in, and the markup stays close to semantic HTML. If a client ever leaves my stack, the content survives.

When a site is heavily visual or design-led: Bricks Builder. Bricks is the builder I actually respect. It outputs clean, lean markup, it's genuinely fast in the editor, and it doesn't drown the front end in wrapper divs the way Elementor can. The cost is a learning curve and a one-time license, but for landing pages and marketing sites where pixel control matters, it's my choice.

Elementor remains the most popular builder, and that popularity is a real asset — every freelancer knows it, every plugin integrates with it. But the default DOM weight and the way it loads its own font/icon stack mean I only use it when a client explicitly requires it for handoff reasons.

The performance layer: caching and images, matched to the host

A fast theme buys you a fast starting point. Real-world speed comes from caching and image handling, and the right tool depends on whether your host already does some of this for you.

  • Caching: On a host with no server-side cache, I use WP Rocket — it's the most "set it and don't break things" of the premium caches, and its defaults are sane. On hosting that already runs object and page caching (Kinsta, WP Engine, Cloudways with Varnish/Redis), I drop the page-cache layer entirely and use FlyingPress or just the host cache plus a lightweight optimizer, because stacking two caches is a reliable way to create ghost bugs.
  • Images: Serve modern formats. AVIF where browser support allows, WebP as the fallback. I size hero images to the largest container they'll occupy (usually 1920px wide, not the 4096px straight off the camera) and let a plugin like ShortPixel or the host's image CDN handle conversion and delivery. Images are still the number-one cause of a poor Largest Contentful Paint score.

The target I aim for is concrete: LCP under 2.5 seconds, INP under 200ms, and CLS under 0.1 on mobile — the "good" thresholds for Core Web Vitals — with TTFB ideally under 800ms. A clean theme plus disciplined images plus one cache layer gets most sites there without heroics.

The functional plugins I won't ship without

This list is short on purpose. Every plugin is a maintenance liability and a potential attack surface, so each one has to justify itself.

  • SEO: Rank Math by default — it puts schema, redirects, and per-post controls in the free tier that Yoast gates behind premium. Yoast is the safer "nobody got fired for choosing it" pick if a client's agency already standardizes on it.
  • Forms: Fluent Forms for anything beyond a basic contact form. It's dramatically lighter than the big-name alternatives and doesn't load its assets site-wide. WPForms Lite is fine for a single contact page.
  • Security: Wordfence for the firewall and malware scanning, or Solid Security if I want a lighter footprint. Paired with a host that does daily backups, this covers the realistic threat model for a small-to-mid site.
  • Backups (if the host doesn't): UpdraftPlus to off-site storage. Non-negotiable on any site I don't fully control.

Notably absent: popup builders, "all-in-one optimization" suites that do ten things adequately, and anything that brands itself as a Swiss Army knife. The most expensive plugin on most sites is the one nobody is actively using — installed for one campaign, never removed, still loading scripts on every page.

The hosting tier that matches the stack

A lean theme on throttled shared hosting still feels slow, because TTFB is dominated by the server. My rule: match the host to the stakes.

  • Small/brochure sites: Cloudways on a DigitalOcean or Vultr instance. You get real server resources and a control panel without managing the server yourself, usually starting around $11–14/month.
  • Client sites where uptime is the product: managed WordPress hosts like Kinsta or WP Engine. More expensive, but the support, staging, and built-in caching pay for themselves the first time something breaks at 11pm.
  • What I avoid: the cheapest shared plans that advertise "unlimited" anything. The throttling under load is exactly what makes a fast theme feel slow.

Putting it together

The stack isn't exotic. GeneratePress (or Kadence for hands-on clients), built in native blocks with GenerateBlocks or Kadence Blocks, Bricks when the design demands it, one caching layer matched to the host, modern image formats, and a deliberately short plugin list: Rank Math, Fluent Forms, Wordfence, and backups. On hosting that isn't actively working against you.

The reason it stays boring is that boring is the point. Every choice here is biased toward less code, fewer dependencies, and an exit ramp if I ever need to migrate a client off it. The flashiest stack is rarely the one you want to still be maintaining two years from now — and on the web, the site that loads in a second and a half quietly beats the one that looks incredible at three.