Why a default plus overrides
Most brands differ from your baseline in a handful of values. Storing a complete theme per brand means every future addition to your design system has to be backfilled across every brand you serve. With a default Theme, a Variant stores only its differences. Add a token to the Theme and every brand inherits it immediately; brands that need something else override it.Resolution
Resolution is the Theme’s document with the Variant’s values overlaid, path by path.- The structure is untouched. The tree, the names, the groups,
$type,$descriptionand$extensionsall come through exactly as the Theme wrote them. Only$valuechanges. color.linkmoved too, without being overridden, because it is an alias. That is the leverage — see Tokens.$descriptionsurvived the override. A Variant cannot change it, so the Theme’s stays.
What a Variant may not do
This is why a Variant is stored as a value map rather than as a document. Storing it as a document would mean storing a copy of the Theme’s structure that was free to drift from it.unset is not “set to nothing”
Variants and Theme versions
A Variant’s overrides only mean anything against a particular Theme structure, so a Variant version number is the Theme version its overrides are addressed against. Two consequences, both of which you will meet:A Theme publish migrates every Variant automatically
A Theme publish migrates every Variant automatically
When a Theme publishes, Livry reads what changed and corrects every Variant beneath it: keys the
Theme renamed are renamed here, and keys it removed — or retyped past fitting — are dropped.That migration writes each Variant’s draft. It does not publish. So after a Theme publish,
expect
hasUnpublishedChanges on Variants nobody touched. Review and publish each one.A Variant can be published once per Theme version
A Variant can be published once per Theme version
The publish writes a version file numbered with the Theme’s current version. Publishing again
against the same Theme version finds that file already written and refuses with
409.To publish a Variant change again, publish the Theme first. Pinned URLs were designed not to
depend on this, but it is a real limit.The Theme on its own
A Theme with no Variants is not an error. It resolves to its own defaults unchanged, and is served at the- Variant segment:
Environment boundaries
How many
Variants per Theme are capped by your plan — 10 on Free, 100 on Pro. Creating one past the allowance is refused with402. See Plans and limits.