Versioning policy
All packages share one version number (lockstep, managed with Changesets). Until 1.0.0 the
project is on 0.x, where breaking changes are allowed on a minor release and are always
called out in the changelog. The current npm release is 0.2.0; the SwiftPM and Maven wrappers are at 0.1.0.
What is a breaking change
| Change | 0.x | ≥ 1.0 |
|---|---|---|
Adding a field to IconDefinition, LayerDefinition, RenderInstruction or EffectOptions | minor | minor |
| Removing or renaming a field, or changing its meaning or units | minor, announced | major |
| Adding icons | minor | minor |
| Renaming an icon | minor; old name kept as an alias | minor; alias kept for one major |
| Removing an icon | minor, announced | major, after a deprecation release |
| Changing how an icon animates (frame output) | patch or minor, listed with the affected icon count from pnpm frames:accept | minor, listed |
| Changing a preset's meaning or default options | minor, announced | major |
| Dropping a supported runtime (Node, React, browser) from the support matrix | minor, announced | major |
Reserved surface
Some schema fields and props exist for later releases and are accepted but ignored today:
renderingModes, directionality, localization, extensions, weightBehavior.masters,
renderingModeHints, and the props locale and rtl. Lighting them up is additive.
Experimental surface at 0.x
replace transitions are exported but outside the public contract: the types stay, the behaviour may
change without a major bump, and they are not carried to other platforms. Multi-tone rendering is held
back from this release: renderingMode takes a wider union in the types, but "monochrome" is the
only supported value and anything else may change or disappear without a major bump.
Motion changes and the visual canon
The repository pins every icon × preset frame hash and a Linux screenshot canon. A release that moves frames regenerates both and records the moved-icon count, so consumers can tell a data refresh from a code change.