I Tested 7 CMS Options for shadcn/ui — Here's What Works
Only 1 of 7 is actually built on shadcn/ui — here's the honest breakdown
"shadcn-compatible CMS" is a marketing phrase. Built-on-shadcn means the entire admin — every form, every table, every dialog — uses shadcn/ui components. Not the login screen and three pages while the rest runs on Material UI or a vendor's in-house React library.
I spent the last few months tearing down every CMS that claims shadcn/ui support to find which ones actually deliver. The short answer: only one is built on it end to end. The rest are headless platforms where you can plug shadcn into the front-end you build yourself, or admin templates pretending to be a CMS.
Disclosure: I work on UnfoldCMS, the only CMS in this list that ships a fully shadcn admin. I'll mark our own listing clearly and try to keep the verdicts honest — every other option here serves a real use case, and a few of them serve it better than we do for specific workloads.
TL;DR — the 7 options at a glance
Seven CMS options were tested against four questions: is the admin built on shadcn/ui, is it self-hosted, is it dev-first, and does it integrate with modern front-end frameworks? Only UnfoldCMS runs its entire admin on shadcn (51 components, 205 admin pages). Payload, Sanity, Strapi, and Directus are headless — you bring your own shadcn front-end. Plate + Shadcn Admin Kit and TanStack Start + shadcn are DIY routes for teams that want to assemble the pieces.
| # | CMS | Admin built on shadcn | Self-hosted | Style |
|---|---|---|---|---|
| 1 | UnfoldCMS | ✅ Yes (51 components, 205 pages) | ✅ | Monolith — Laravel + React + Inertia |
| 2 | Payload CMS | ❌ No (Payload UI library) | ✅ | Headless, Node-based |
| 3 | Sanity | ❌ No (Sanity Studio) | ⚠️ Hybrid (cloud-first) | Headless |
| 4 | Strapi | ❌ No (React-Admin) | ✅ | Headless |
| 5 | Directus | ❌ No (Vue admin) | ✅ | Headless |
| 6 | Plate + Shadcn Admin Kit | Partial (you wire it) | ✅ | DIY — pieces, not a CMS |
| 7 | TanStack Start + shadcn | DIY | ✅ | Roll-your-own |
What "built on shadcn/ui" actually means
There are three categories floating around this question and they are very different products:
-
Admin built entirely on shadcn/ui. Every screen in the CMS — the post editor, the user table, the media library, the settings forms — uses shadcn components. You can
npx shadcn adda new component into the admin without fighting a foreign design system. This is what most developers picture when they search "CMS with shadcn." Today, this category has one production-ready option. -
Headless CMS where you bring shadcn to the front-end. Payload, Sanity, Strapi, Directus, Hygraph, and friends all fit here. The admin runs on the CMS vendor's React library or their custom Studio. shadcn lives on your Next.js / Astro / SvelteKit / Nuxt site, consuming the API. This works well when content editors live in the admin and developers build a custom front-end.
-
shadcn admin templates without CMS guts. Tailark, Horizon UI, Shadcn-admin-kit, the official shadcn dashboard examples — beautiful UI scaffolds with no posts table, no media library, no user roles, no migrations. You'd build the CMS behind them yourself.
Buyers who type "best CMS for shadcn" usually want category 1 and end up sold category 3 because that's what ranks on Google today. The rest of this post is structured to keep those categories separate so you pick by what you actually want to ship.
How I scored them — methodology
Every option was tested on four axes, with the scores live on production sites (UnfoldCMS, Payload, Strapi, Directus, Sanity have public demos; Plate and TanStack were tested by spinning up local starters).
- Admin built on shadcn/ui (yes / partial / no) — does the editor's day-to-day UI render via shadcn components, or is it the vendor's own React library?
- Self-hosted (yes / hybrid / no) — can you run it on a $5 VPS with no vendor account?
- Dev-first auth + permissions — does it ship roles, permissions, and API tokens, or do you bolt those on?
- Framework integrations — Next.js, Astro, SvelteKit, Nuxt, Remix support?
I did not score "popularity" or "GitHub stars" because both reward incumbents and punish products built around newer libraries like shadcn/ui. They are not a signal of fit.
1. UnfoldCMS — built entirely on shadcn/ui
UnfoldCMS is the only CMS in this list whose admin is 51 shadcn/ui components and 205 admin pages — counted directly from the source tree, not the marketing page. Stack: Laravel 12, React 19, Inertia 2, TypeScript, Tailwind v4, Lucide React.
What that gets you:
- The post editor, sidebar, command palette, dialogs, tables, dropdowns, sheets, toasts — every visible piece is a shadcn component you can read in
components/ui/. - Forking the admin works the same way as forking a shadcn component: copy the file, edit it, ship it. No vendor build pipeline to fight.
- Theming runs on Tailwind v4 CSS variables. Three themes ship out of the box. Add a fourth by changing one file.
Trade-offs worth knowing:
- It's a monolith — Laravel renders the admin via Inertia. If you require a separate Node.js backend with a hard split between content layer and front-end, Payload or Sanity will fit better.
- Self-hosted only. There is no managed cloud offering today.
- One-time pricing. No subscription, but also no free hosted tier the way Sanity offers.
If you already read The CMS Built on shadcn/ui: Why It Matters or Is There a CMS Built with shadcn? Yes — Here's What We Made, you've seen the long version of this case. The summary: built on shadcn means the admin is shadcn, not just the marketing site.
Pick UnfoldCMS if — you want a single deployable monolith, you're shipping a Next.js / Astro / SvelteKit content site, and you want to fork the admin the way you'd fork a shadcn component.
Skip UnfoldCMS if — you need the admin and content delivery layer on separate Node services, or you're already deep in the Node.js ecosystem and don't want PHP on your stack.
2. Payload CMS — headless, bring your own shadcn
Payload is the strongest pure-headless option in this list. The admin is not shadcn — it runs on Payload's own React UI library. But Payload's API is excellent, its TypeScript story is strong, and pairing a Payload backend with a Next.js + shadcn front-end is a genuinely good combo.
Trade-offs:
- The admin is Payload UI, not shadcn. Editors see a different design system than the public site.
- If you want to skin the admin in shadcn, you're rebuilding parts of the admin yourself — it's not a config flag.
- Node.js deployment requires Docker / a serverless host. Not as cheap to host as a PHP monolith on shared hosting.
Pick Payload if — you want a strong headless API and you're happy that the admin doesn't visually match your shadcn front-end. See our deeper comparison in Why Your shadcn/ui Admin Template Should Be a Full CMS for the headless-vs-monolith trade-off.
3. Sanity — headless with Sanity Studio
Sanity ships a polished editor called Sanity Studio. It is not shadcn. Studio is a React app built on Sanity's own component primitives, and while it's customisable, the customisations live inside Sanity's design system.
What Sanity does well: a hosted content lake, structured-content schemas, real-time collaboration on documents. It's the option content teams of any size prefer when the editorial workflow matters more than the developer-fork-everything workflow.
Where it gets awkward for shadcn devs:
- Studio cannot be re-skinned in shadcn without effectively replacing it.
- Sanity's free tier is generous, but at scale the API request and bandwidth bills hit. Subscription fatigue is the #1 trigger that pushes teams off Sanity onto self-hosted options.
Pick Sanity if — your editors are the priority, you want a hosted CMS without DevOps, and shadcn living only on the public front-end is fine.
4. Strapi — headless, React-Admin under the hood
Strapi is the most popular open-source headless CMS. Its admin runs on React, but not on shadcn. It uses React-Admin and Strapi's own component primitives.
Strapi v5 added a content-history feature and improved internationalisation, and the plugin ecosystem is the largest in headless CMS land. The catch: deploying Strapi to production is the #3 pain point we see ICP-A devs run into ("Strapi needs Docker, Redis, sometimes Postgres + a Node service"). It's a real Node deployment, not a single-binary install.
Pick Strapi if — you want plugins, GraphQL, and content-history, and you have DevOps time to spend on the Node deployment.
Skip Strapi if — you bounced off Strapi's deployment story already. Plenty of teams have. The migration write-up is on its way; in the meantime, see Laravel + React + shadcn/ui: The Modern CMS Stack for why a single-binary Laravel monolith is easier to deploy than a Node stack with three moving parts.
5. Directus — headless, Vue admin
Directus wraps any SQL database and exposes it as a REST + GraphQL API. The admin is Vue (Vuetify-ish), not shadcn. It is excellent for teams that already have a database and want a content layer on top, and it self-hosts cleanly.
Trade-offs: Vue admin means the design system is Vue's, and React shops won't feel at home in the admin. Also no shadcn re-skin path.
Pick Directus if — you have an existing SQL database to expose, and you don't need the admin to match your shadcn front-end.
6. Plate + Shadcn Admin Kit — DIY CMS pieces
Plate is a rich-text editor built on top of Slate.js, with first-class shadcn/ui styling. Pair it with one of the shadcn admin kits (Shadcn-admin-kit, the Tailark dashboard, or the official shadcn dashboard example) and you have most of the visual pieces a CMS needs.
What you don't have: a posts table backed by a database, a media library, a user-role system, migrations, a publish workflow, an SEO field, a content scheduler. You build those yourself.
Pick this if — you have a specific, narrow CMS use case (an internal docs editor, a single content type) and don't want a full CMS in your stack.
Skip this if — you'd be rebuilding 30 percent of what a CMS already ships. Estimate the engineering time before you start. 50 shadcn/ui Components in a Real Production Admin lists what those 30 percent actually look like once they exist.
7. TanStack Start + shadcn — roll your own
TanStack Start is a full-stack React framework from the TanStack team. Plug shadcn in, drop the Plate editor on a page, wire up a database, write your own admin routes, ship.
This is the maximum-flexibility option and the maximum-work option. If you've shipped a content site before and know exactly which CMS features you actually use (and which you'd never touch), rolling your own can be the right call. If you haven't, the "I'll just build a small CMS" instinct usually expands to six months of work.
Pick this if — you're an experienced full-stack dev with strong opinions, and a generic CMS gets in your way more than it helps.
Which to pick — by use case
A decision matrix beats a star rating when the options serve different jobs.
| Use case | Best fit | Why |
|---|---|---|
| Next.js content site, dev-led team | UnfoldCMS or Payload | UnfoldCMS if you want shadcn admin too; Payload if shadcn lives only on the front-end |
| Agency shipping 10+ client sites/year | UnfoldCMS | One install, fork admin per client, no per-site SaaS bill |
| SaaS marketing site + blog + docs | UnfoldCMS, Sanity, or Payload | UnfoldCMS for self-hosted control; Sanity for editor-first; Payload for headless purity |
| Editor-first team, dev is secondary | Sanity | Studio's editorial UX is hard to beat |
| Existing SQL database to expose | Directus | Database-first design |
| Narrow internal tool, one content type | Plate + Shadcn Admin Kit | Don't bring a full CMS to a one-table problem |
| Maximum customisation, willing to build | TanStack Start + shadcn | Roll your own |
If you came here looking for "the one CMS that's built on shadcn," the answer is currently UnfoldCMS — see our shadcn-cms landing page for the 51-components-205-pages breakdown and pricing for the one-time tiers.
People Also Ask
Is there a CMS built with shadcn/ui?
Yes — UnfoldCMS is the only production CMS today whose entire admin (51 shadcn components, 205 admin pages) runs on shadcn/ui. Other headless CMS options (Payload, Sanity, Strapi, Directus) use their own admin UI libraries and let you bring shadcn to the public front-end. See Is There a CMS Built with shadcn? Yes — Here's What We Made for the full story.
Can I use shadcn with Payload?
Yes — on the public front-end. Payload's admin is its own React UI library and cannot be re-skinned in shadcn without rebuilding chunks of it. Pair a Payload backend with a Next.js + shadcn front-end and you get a clean headless setup, just don't expect the admin to visually match.
What's the best shadcn admin template?
For a starter UI scaffold: the official shadcn dashboard example, Tailark, and Shadcn-admin-kit are all solid choices. They are templates, not CMSs — no posts table, no media library, no user roles. If you want a full CMS already wired up, you're picking from this list, not from templates.
Does Strapi support shadcn?
Not in the admin — Strapi's admin uses React-Admin and Strapi's own components. You can build a Next.js / Astro / SvelteKit front-end that calls Strapi's API and renders with shadcn on the public site.
Is shadcn good for production CMS use?
Yes. UnfoldCMS runs 51 shadcn components across 205 admin pages in production, with Tailwind v4 theming and three shipped themes. The fork-and-modify workflow that makes shadcn popular for landing pages works the same way for a CMS admin — fork the file, edit it, ship it.
Bottom line
If you want the entire CMS — admin and all — built on shadcn/ui, UnfoldCMS is the option today. If you want headless and you're happy that shadcn lives only on your public front-end, Payload is the best fit, followed by Sanity, Strapi, and Directus depending on your priorities. If you want to assemble the pieces yourself, Plate + a shadcn admin kit gets you there without writing the editor from scratch.
The mistake to avoid: buying a shadcn admin template, realising it has no CMS guts, then building those guts yourself for three months. That's the path most teams searching "best CMS for shadcn" end up on by accident.
Want to test the shadcn admin live? Try the demo or see pricing. No credit card, no subscription.
Sources and methodology
- UnfoldCMS counts verified directly from source:
find cms/resources/js/components/ui -name "*.tsx" | wc -l= 51 shadcn components;find cms/resources/js/pages/admin -name "*.tsx" | wc -l= 205 admin pages, as documented in our features reference. - Payload CMS — admin UI lib confirmed via the Payload admin documentation.
- Sanity Studio — design system confirmed via the Sanity Studio docs.
- Strapi — admin stack confirmed via Strapi's GitHub repository.
- Directus — Vue admin confirmed via the Directus docs.
- Plate — shadcn/ui styling confirmed at platejs.org.
- All seven options were tested locally between April and June 2026 using their current stable releases.
Share this post:
Leave a Comment
Please log in to leave a comment.
Don't have an account? Register here