CLI tool
creativetimofficial/ui avatar
creativetimofficial/ui

Creative Tim UI: A shadcn Registry of Blocks, Not a Component Framework

Open-source components, blocks, and AI agents designed to speed up your workflow. Import them seamlessly into your favorite tools through Registry and MCPs.

12,050 stars4,800 forksTypeScriptMIT

At a glance

What is it?
Creative Tim UI ships pre-built React blocks and components through the shadcn registry system, so you install source files into your repo rather than adding a dependency. The trade-off is that you inherit shadcn's prerequisites and take on the maintenance of every file you pull in.
Who is it for?
Adopt Creative Tim UI if you already run shadcn/ui with Tailwind in a Next.js project and want marketing or application blocks (testimonials, footers, billing, account) without designing them from scratch. Skip it if you are outside the Next.js plus shadcn stack, if you cannot commit to owning the copied source files, or if you need a versioned dependency you can upgrade with a package manager.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Activity is slowing. The repository last received commits 6 months ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem: Assembling App and Marketing Screens From Scratch

Most teams do not struggle to build a button. They struggle to assemble a billing settings page, a testimonial carousel, a footer with four link columns, and a checkout summary that all look like they belong to the same product. Creative Tim UI targets that gap. The README describes it as "a comprehensive component library built on top of shadcn/ui to help you build modern web applications faster," and the repository is organized around blocks rather than primitives: the README lists categories such as Modals (5 blocks), Account (7), Billing (5), Testimonial Sections (17), Contact Sections (15), Footers (16), FAQs (6), Blog (15), Ecommerce Sections (14), and Web 3.0 Cards (5). Those counts come from the README's own tables, not from an independent audit. The intended user is a frontend engineer on a Next.js project who has already chosen shadcn/ui and Tailwind and now needs finished page sections. It is a poor fit for someone who wants a themed component package with a version number in dependencies, because that is not what this is.

How the Registry Mechanism Actually Works

Creative Tim UI does not ship as an npm library you import at runtime. It uses the shadcn registry model: the CLI fetches component definitions from a URL and writes the resulting source files into your project, adding any required dependencies along the way. The README shows both entry points. The project's own CLI is npx @creative-tim/ui@latest add <component-name>, and the same content is reachable through the standard tool with npx shadcn@latest add https://creative-tim.com/ui/r/button.json or the aggregate npx shadcn@latest add https://creative-tim.com/ui/r/all.json. The /r/ path and the .json suffix are the registry endpoints; each component has its own JSON document, and all.json is the concatenation. That means the code lives in your repository after installation. There is no node_modules entry to update, no peer dependency resolution to debug, and no upstream release that can break your build. The cost is the mirror image: upstream fixes do not reach you unless you re-run the add command and reconcile the diff yourself. The README also notes that installing all components will "Set up shadcn/ui if not already configured," which means the tool can modify your project configuration beyond dropping in files. Read its output before committing.

Prerequisites and the Exact Install Commands

The README states three requirements before anything works: Node.js 18 or later, shadcn/ui initialized in your project (npx shadcn@latest init), and Tailwind CSS configured. The shadcn requirement is not optional decoration. Because the blocks are built on shadcn primitives, the CLI expects the components.json configuration and the aliased paths that shadcn init creates. If you skip that step, the paths the registry writes to will not exist. Two installation paths are documented. For everything at once: npx @creative-tim/ui@latest add all. For one component: npx @creative-tim/ui@latest add card, with the README giving card and button as examples. The README's prose is slightly inconsistent here, saying "Install individual components using the components add command" while every example shows add without the components subcommand; treat the examples as authoritative and the sentence as stale. There is no documented config key beyond what shadcn init already writes, and no environment variable or registry token appears in the material. If you need to know which files a given block touches, the README does not say. The registry JSON at the /r/ endpoint is the place to look before running the command.

Where This Approach Breaks Down

The first limitation is stack lock-in. Every documented command assumes Next.js, shadcn/ui, and Tailwind. The README's prerequisites section uses the phrase "your Next.js project" without qualification, and no Vite, Remix, or plain React path is described. If you are on a different bundler or a CSS-in-JS setup, the CLI has nothing to offer you. The second limitation is update cost. Because the install copies source into your tree, upgrading a block means re-running the add command and resolving whatever you changed locally against whatever upstream changed. With 17 testimonial blocks and 16 footers listed, a project that pulls in many blocks accumulates a large surface of copied code that nobody owns by default. The third limitation is release cadence. The repository's most recent tagged release is v3.2.0 from October 2024, following v3.1.0 in May 2023 and v3.0.5 in October 2022. The last push to the default branch is dated March 2026, so work is happening, but the tags do not track it closely. If you rely on release tags to pin a known-good state, that signal is thin. The fourth limitation is verification: the README gives block counts but no accessibility notes, browser support matrix, or test coverage, and none of that can be confirmed from the supplied material.

How It Differs From Installing a Component Library

The obvious comparison is a conventional React component library such as MUI or Chakra, where you add a package to dependencies and import components at runtime. The difference is ownership and upgrade mechanics. With a package, a bug fix arrives when you bump the version, and your customizations live in theme objects and wrapper components that the library constrains. With the registry model, the fix arrives as a diff you apply by hand, and your customizations live directly in the copied file, which means you can change anything but you also break the upgrade path the moment you do. Creative Tim UI sits closer to a scaffold generator than to a dependency. Its own README credits the lineage: the registry system and foundational components come from shadcn/ui, the block designs are "inspired by and based on Material Tailwind Framework" by Creative Tim, and Eleven Labs UI is cited as "general inspiration for the documentation structure and approach of blocks." So the project is a curated block layer over shadcn, not a reimplementation. If you want runtime components with a stable API, shadcn plus a paid block set, or a conventional library, will match your expectations better than this will.

Licence Position and the Cost of Maintenance

The repository is MIT licensed, and every upstream project named in the README is also permissively licensed: shadcn/ui under MIT, Material Tailwind under MIT, Eleven Labs UI under MIT, and the Geist font under the SIL Open Font License 1.1. The practical consequence of MIT plus the registry model is that the code you install is yours to modify and ship, with the usual requirement to preserve copyright and permission notices. That is a statement about the licence text, not legal advice; if you redistribute modified blocks, check the notice requirements yourself. The maintenance cost is the part teams underestimate. Copied blocks do not receive security patches or dependency bumps automatically. If a block pulls in a package, that package is now your dependency, listed in your package.json, and your existing tooling for audits and updates applies to it. Budget for the initial install, then for the diff review each time you want upstream changes. There is no documented migration guide in the material, so treat each re-add as a manual merge.

Who Should Pull the Trigger

This is a reasonable choice for a small team shipping a Next.js marketing site or admin panel who already standardized on shadcn/ui and Tailwind, and who would rather edit a working footer than design one. The block inventory is broad enough to cover the common page sections, and the single-command install keeps the setup short. It is the wrong choice if you need framework portability, if your team cannot absorb ownership of copied source files, or if you require accessibility documentation and test guarantees before adopting UI code, since none of that appears in the README. The first thing to verify is not the component list but the install behavior: run shadcn init in a scratch branch, add one block, and inspect exactly which files and dependencies appear. That tells you more about fit than any block count in the README.

Editorial conclusion

Adopt Creative Tim UI if you already run shadcn/ui with Tailwind in a Next.js project and want marketing or application blocks (testimonials, footers, billing, account) without designing them from scratch. Skip it if you are outside the Next.js plus shadcn stack, if you cannot commit to owning the copied source files, or if you need a versioned dependency you can upgrade with a package manager. Before installing anything, run npx shadcn@latest init in a scratch branch, then pull a single block such as npx @creative-tim/ui@latest add card and inspect what lands in your components directory and package.json.

Official sources

  1. creativetimofficial/ui on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes