Skip to content

Getting Updates

Atomic CRM is meant to be forked and customized: there is no npm package to install as a dependency and upgrade. Instead, Atomic CRM components, hooks, and lib files are published as a shadcn registry, which you can use to pull upstream changes into your fork.

This registry is not meant to bootstrap a new project. If you're starting a new CRM, follow the Installation instructions instead. The registry is only useful once you already have a running fork and want to catch up with upstream improvements (bug fixes, new features, dependency bumps in src/components/admin and src/components/ui).

Commit or stash any pending work first, this command overwrites files, and you'll want a clean diff to review the changes:

Terminal window
npx shadcn add https://marmelab.com/atomic-crm/r/atomic-crm.json -o -y
  • -o (--overwrite) replaces local files with the upstream version.
  • -y (--yes) skips the interactive confirmation prompt. Prefer this flag over piping yes | into the command: it's the option the CLI provides for non-interactive use, and it fails loudly if the CLI ever changes its prompts instead of silently answering "yes" to whatever comes up.

Once the command completes, review the diff:

Terminal window
git diff

Resolve any conflict with your own customizations, run the test suite (make test, make test-e2e), then commit.

The registry mirrors the files tracked by scripts/generate-registry.mjs: everything under src/components/atomic-crm, src/components/supabase, most of src/hooks, and most of src/lib. It does not touch your Supabase schema, your docs/project-context.json configuration, or any file you added outside those directories.

Keeping Your Own Fork's Registry Up To Date

Section titled “Keeping Your Own Fork's Registry Up To Date”

If you maintain your own fork long-term (for example to distribute your customized CRM to several deployments), regenerate and republish the registry the same way Atomic CRM's CI does:

Terminal window
make registry-gen # regenerates registry.json from the current source tree
make registry-build # builds the distributable registry file
make registry-deploy # publishes it (wraps registry-build)

See the main README for how these targets fit into the CI/CD pipeline.