Themes and registries

Evaluate third-party registries

Treat registry items as incoming source code, inspect what a command will add, and avoid handing unreviewed components authority in your app.

The registry ecosystem can distribute components, hooks, pages, configuration, and dependencies. That is powerful because it distributes executable code.

Prefer known sources, inspect the registry item and generated diff, review new packages and scripts, and verify network, authentication, and environment access. Check accessibility yourself. A beautiful demo is not evidence that a component is maintained, safe, compatible with your selected base, or suitable for production.

Use shadcn view to inspect a resolved item before installation. Registry schema validation checks structure. It does not prove that the source is safe, licensed appropriately, or well maintained. An item can add code, dependencies, configuration, environment assumptions, and files outside the obvious component folder.

For a private registry, keep credentials in environment variables and send them only to the intended host. Review namespace configuration so a familiar item name cannot resolve from an unexpected source. Authentication proves access, not trustworthiness.

Install uncertain items in a disposable copy or isolated branch with no secrets loaded. Inspect lifecycle scripts, transitive packages, network calls, server/client directives, telemetry, and generated routes before moving selected code into the application.

Preview an item without writing files:

npx shadcn@latest view button

The command prints the resolved registry payload: file paths, dependencies, and registry metadata. Read every listed dependency before you run add. If a third-party item pulls in an unfamiliar package or a postinstall script, treat that as a reject signal until you understand it.

Choose one item from the official directory and one third-party item. View both without adding them, then write an accept-or-reject review covering provenance, license, files, dependencies, scripts, authority, accessibility, base compatibility, and maintenance signals.

Lesson completed