shadcn CMS for Agencies: Why Client Handover Becomes Easy (2026)

Per-Client Themes, Zero Plugin Patching, Flat License — Real 3-Year Math

June 28, 2026 · 10 min read
shadcn CMS for Agencies: Why Client Handover Becomes Easy (2026)

An agency shipping 10 client sites a year has two operational nightmares. The first is keeping every site secure across 11,334 WordPress vulnerabilities a year (Patchstack 2026). The second is the moment of client handover — training the editor, explaining where each setting lives, picking up the phone six months later when something breaks. WordPress agencies live this. Most other CMSs trade one nightmare for another.

shadcn-based CMSs trade differently. The admin runs on 51 components in your repo, the theme is three CSS variables, and the handover story is "this is your dashboard, here's where you publish, that's it." This post is the honest agency case for shadcn-based CMSs, written from the perspective of someone running 50+ admin pages in production for paying customers.

Disclosure: I work on UnfoldCMS, which is the shadcn-based CMS this post leans on. I'll mark our own listing and try to keep the agency advice fair — for many agency shapes, WordPress is still defensible.

TL;DR — when shadcn CMS wins for agencies

For 2-20 person agencies running 5-50 client sites: shadcn-based CMSs (UnfoldCMS being the production example) win on three measurable axes — per-client theme switching without code changes (Tailwind v4 CSS variables, 3 themes from one codebase), plugin-bloat elimination (51 components vs WordPress's ~25 plugins per site), and flat licensing (one-time agency license vs per-site SaaS subscriptions). WordPress still wins on plugin marketplace depth, editor familiarity for non-technical clients, and the long tail of CMS-adjacent plugins. Pick by agency shape: dev-heavy multi-client agencies → shadcn CMS. Marketing-heavy single-segment agencies → WordPress or Webflow.

Pattern WordPress agency stack shadcn CMS agency stack
Per-client theme Child theme + Elementor / page builder One CSS variable file
Plugin patch surface ~25 plugins × 10 sites = 250 surfaces 51 admin components, zero third-party plugin tax
Hosting cost (10 sites) $300-$1,200/mo Kinsta / Cloudways $5-$50/mo single VPS
Editor training time 4-8 hours/client 1-2 hours/client
Long-term margin Eaten by patching labour Flat

The agency client handover problem, honestly

Most "best CMS for agencies" posts skip the part that actually decides retention: what happens after handover. The CMS you pick is the CMS your client logs into for the next five years. Their experience there decides whether they renew, refer, or write a "switched away from us" Twitter thread.

Real friction agencies report on WordPress handovers:

  • Plugin overwhelm. A typical agency-built WordPress site ships with 15-30 plugins (Elementor + Yoast + WooCommerce + analytics + caching + backup + security + 10 more). The client sees a sidebar with 40 menu items they don't understand.
  • Editor inconsistency. Some plugins use the WordPress block editor. Some use their own. Some override the standard post editor. The client learns four UI patterns instead of one.
  • Theme + page builder coupling. Elementor or Bricks or Divi — whichever page builder the agency picked becomes the client's design tool. Switching design tools later means rebuilding every page.
  • "Don't update anything" anxiety. Agencies often tell clients "let us handle updates" because plugin updates break things at unpredictable rates. The client correctly learns the dashboard is fragile.

These aren't WordPress's fault per se — they're emergent from the plugin architecture. Patchstack's 2026 data shows 91% of WordPress vulnerabilities come from plugins, not core. We covered the security side in WordPress Security in 2026: The Plugin CVE Reality. The handover side is the same problem at a different angle.

What shadcn-based CMSs do differently

The architectural difference is "code in your repo." For UnfoldCMS specifically:

  • 51 shadcn components in cms/resources/js/components/ui/ — all .tsx files you can read and modify.
  • 205 admin pages in cms/resources/js/pages/admin/ — built on those 51 components.
  • Tailwind v4 CSS variables drive theming. Three production themes (default blue, purple, unfold soft-purple) ship by default.
  • No third-party plugin marketplace. Features ship as part of the CMS, not as plugins you install.

What this means for an agency:

Per-client theming without forking

A typical agency workflow: each client wants their own brand colours, type, maybe a custom dashboard accent. In WordPress, this is a custom theme + Elementor template stack per client. In Webflow, this is a separate Webflow project per client (and a separate $14-$23/mo bill per client).

In a shadcn-based CMS with CSS-variable theming, each client's theme is one file. Override the default brand colour, override the accent, override the radius, ship. We wrote about the architecture in Theming a shadcn CMS: 3 Themes from One Codebase — the same approach scales to 10 client themes.

For your client, this means their admin looks like their brand the day you hand it over. No "we'll customize the dashboard later." It's done.

Plugin-bloat elimination

The 51-component admin handles posts, pages, media library, users, roles, SEO, redirects, menus, sitemap, search, and activity log — without third-party plugins. The features are baked in.

For an agency, this collapses three real costs:

  1. No plugin license stacking. A typical WordPress agency stack runs $5-$20/month per site in plugin licenses (Elementor Pro, Yoast Premium, Gravity Forms, etc.). Across 10 sites, that's $50-$200/month in plugin tax. UnfoldCMS Agency license is one-time.
  2. No plugin patch cycle. When Patchstack 2026 reports 45% of critical vulns exploited within 24 hours, your patch responsiveness across 10 client sites is now your full-time job. With 51 in-repo components and no third-party plugins, this surface vanishes.
  3. No plugin compatibility roulette. No "the new version of Plugin A breaks Plugin B" on update day. Updates are git pulls of the CMS itself.

The trade-off is the long tail. Strapi and WordPress both have plugins for "I need this specific integration." UnfoldCMS doesn't. If your client's project needs an integration that doesn't fit in core, you build it.

Flat licensing math

The CMS pricing model decides agency margin at scale. Comparing 10 client sites over 3 years:

Stack Year-1 cost Year-3 cost (incl. patching labour)
WordPress + plugins + Kinsta hosting ~$4,800 hosting + ~$12K patching labour ~$14,400 + ~$36K labour ≈ $50K
Webflow per-site Business ~$23/mo × 10 = $2,760 $8,280 over 3 years ≈ $8.3K
UnfoldCMS Agency (one-time) One-time license + ~$60/yr hosting One-time + ~$180 ≈ <$5K + license

For dev-heavy agencies, the math at 10 sites favours shadcn-based CMS dramatically. For non-dev agencies, the labour cost is hidden (you don't actually pay yourself), so Webflow's per-site subscription can be acceptable.

For the longer TCO math, see Self-Hosted vs SaaS CMS: True 5-Year TCO Breakdown and Multi-Site CMS for Agencies: One Install, 10 Client Sites.

Where WordPress still wins for agencies

Be honest about the cases where the shadcn argument doesn't win:

  • Non-technical client teams. WordPress's editor UX is familiar to a generation of editors. Even with its plugin sprawl, the publishing flow is muscle memory for many clients. Training a shadcn-based admin is faster for the dev, but the client might prefer the WordPress feel.
  • Specific plugin requirements. If your client needs a niche WordPress plugin (a specific real-estate listing system, a specific membership integration), no shadcn-based CMS will have an equivalent. Building it adds 10-40 hours per project.
  • WordPress ecosystem contracts. Some agencies have signed multi-year retainers around WordPress hosting and plugin licenses. Switching CMSs would breach the contract.
  • Single-client agencies. Most of this post's math assumes 5+ client sites. For agencies with 1-3 clients, the savings don't justify the migration.

For when staying on WordPress is the right call, see When to Stay on WordPress: Honest Advice (2026).

What the migration looks like

For an agency considering the move, the realistic migration shape is per-site, not en-masse:

  1. Pick one new client project. Don't migrate an existing WordPress install — that's pure cost. Start with a new client who hasn't picked a CMS yet.
  2. Build it on the new CMS. Day-1 productivity will be slower than WordPress because you don't know the new patterns yet. Day-30 productivity exceeds WordPress because there's no plugin tax.
  3. Show it to the client. This is the actual sales moment. A modern admin with their brand colors on day one beats a WordPress dashboard with 30 sidebar items every time.
  4. Migrate existing clients only when they ask. "We're moving you to a new platform because we want to" is a hard sell. "Your renewal cycle is next month and we have a better option" is easier.

After 2-3 successful client projects on the new CMS, the agency-wide migration becomes a calendar problem instead of a strategy problem.

People Also Ask

Is shadcn/ui good for agency CMS work?

Yes, for agencies that want per-client theming without forking the CMS and want to escape WordPress plugin patching. The 51 components ship in your repo as .tsx files; you fork them per client without affecting other clients. For agencies on WordPress with deep plugin requirements, the transition cost is real.

How does UnfoldCMS handle multi-client work?

The Agency license tier covers multi-client deployment on one install. Per-client themes use Tailwind v4 CSS variables — one file per client, switch via data-theme attribute. Single install, multiple client sites, separate Blade templates per client. For the multi-site architecture, see Multi-Site CMS for Agencies: One Install, 10 Client Sites.

What's the editor training time for a shadcn CMS vs WordPress?

Anecdotally, 1-2 hours per client for a shadcn-based CMS vs 4-8 hours for a typical agency-built WordPress site. The difference is the absence of plugin-specific UI patterns to explain (no "this is the Yoast SEO tab, this is the Elementor section, this is the gallery plugin").

Can I add custom features per client?

Yes. Because the admin is shadcn components in your repo, custom features are normal React + Inertia code, not plugin manifests. Each component is editable. We covered the fork-and-modify pattern in Customizing the shadcn Admin: Fork-and-Modify Beats Vendor Widgets.

What if my client needs a specific WordPress plugin?

That's where WordPress wins. Niche plugins (real-estate listings, complex membership systems, edge-case integrations) don't have direct equivalents in shadcn-based CMSs. If your client's specific need depends on a specific WordPress plugin, the migration math may not work.

Bottom line

For agencies running 5-50 client sites in 2026, the math has shifted. Year-1 WordPress is cheaper. Year-3 onward, plugin patching labour and per-site licensing eat margin faster than shadcn-based CMSs do. The transition isn't free — first few clients will take longer than WordPress muscle memory allows — but the long-run agency P&L favours the modern stack.

For the agency-side TCO breakdown, see Multi-Site CMS for Agencies: One Install, 10 Client Sites. To see the UnfoldCMS Agency tier in action, try the demo or see pricing.


Sources and methodology

  • WordPress plugin vuln dataPatchstack State of WordPress Security 2026, Patchstack 2025 mid-year report.
  • WordPress market shareW3Techs WordPress stats (59.4% of known-CMS sites as of June 2026).
  • Plugin usage on WP sitesW3Techs Elementor stats (31.3% of WP sites), WooCommerce stats (19.8% of WP sites).
  • Agency hosting pricing — Kinsta, Cloudways, WP Engine 2026 pricing pages.
  • UnfoldCMS countsfind cms/resources/js/components/ui -name "*.tsx" \| wc -l = 51; find cms/resources/js/pages/admin -name "*.tsx" \| wc -l = 205. Verified at write time.
  • 3-year cost calculations use $100/hour fully-loaded developer cost, 30 min/week × site × 52 weeks for WordPress patching. Real numbers vary.
  • All vendor pricing verified June 2026.

Free & Open Source

Own your CMS. No subscriptions.

Unfold CMS is free to download and self-host. Built on Laravel + React, full source code included.

Share this post:

Discussion

Comments (0)

Leave a Comment

Please log in to leave a comment.

Don't have an account? Register here

No comments yet. Be the first to share your thoughts!

Keep Reading

Related Posts

Back to all posts
Powered by UnfoldCMS