Release & registry
A released design system is a versioned package, not copy-pasted code. You release from Milda; consumers install from a registry with npm install — just like any dependency.
#Release assembly
Releasing turns the generated output into installable packages. The release layer takes your design system — components plus theme — and produces a release plan: the set of packages and their package.json manifests. The assembly is pure and side-effect-free; a build service consumes the plan to build and publish.
- Granularity is a choice — one package for the whole system, or per-component packages plus a shared theme.
- Versioned — each release is reproducible from its IR, the basis for safe upgrades.
#The registry
Packages publish to a registry that speaks the npm protocol. Locally that's Verdaccio; the publish flow is URL- and token-agnostic, so a hosted registry is a configuration swap rather than a rewrite.
Consumers route only your scope to the private registry and leave everything else on the public npm registry — no mirroring, no risk to your other dependencies:
# .npmrc @your-scope:registry=https://registry.your-company.com # all other packages continue to resolve from npmjs
#“No eject” — and you still own the code
Two things that sound contradictory are both true:
- You own the output. Export is always available; the generated code is yours, unrestricted. That's the trust pillar.
- You don't need to eject. Because the release pipeline — versioned packages,
npm install, live updates — is seamless, ejecting is an escape hatch you rarely reach for, not a routine step.
For the broader open/paid split, see Editions & pricing.