Upgrading to 3.9.0
apps/docs/src/content/docs/migration/3-8-0-to-3-9-0 Click to copy apps/docs/src/content/docs/migration/3-8-0-to-3-9-0 Upgrading to 3.9.0
Section titled “Upgrading to 3.9.0”This release adds the @helixui/icons peer dependency and refactors internal icon rendering across 25+ components to use <hx-icon>. Most consumers will not notice — pre-3.9.0 bare-name <hx-icon name="check"> usage is preserved via the empty-default library attribute.
Install changes
Section titled “Install changes”@helixui/library@3.9.0 adds a new required peer dependency:
pnpm add @helixui/library @helixui/icons @helixui/tokensIf you’re upgrading an existing project that already has @helixui/library, add @helixui/icons to your dependencies.
hx-icon attribute defaults
Section titled “hx-icon attribute defaults”The library attribute on <hx-icon> defaults to the empty string in 3.9.0. This preserves the pre-3.9.0 contract where <hx-icon name="check"> renders <use href="#check"> against a document-local sprite — exactly the behavior consumers had before. To opt into the new registry, set library explicitly:
<!-- back-compat: document-local sprite (no change from 3.8.0) --><hx-icon name="check"></hx-icon>
<!-- new in 3.9.0: registry-resolved fa-free library --><hx-icon library="fa-free" name="check"></hx-icon>
<!-- new in 3.9.0: curated helix glyph set --><hx-icon library="helix" name="check"></hx-icon>See the @helixui/icons docs for the registry API.
Internal SVG migration
Section titled “Internal SVG migration”The following components were migrated from inline SVG to <hx-icon library="helix"> internally — no consumer change required. Listed here for awareness:
- hx-alert, hx-banner, hx-toast (status icons)
- hx-checkbox (check) — hx-radio’s selected dot is still drawn in CSS, not migrated
- hx-rating (star)
- hx-tree-item (chevron) — hx-tree-view itself does not render an icon; the chevron lives on the leaf item
- hx-stat (trend arrow)
- hx-combobox (chevron) — hx-select continues to draw its chevron as a CSS shape, not migrated
- hx-date-picker, hx-time-picker (calendar/clock)
- hx-file-upload (remove/close glyph for file removal — the upload affordance itself stays SVG)
- hx-copy-button — renders icons via slots (does not import or render hx-icon internally)
- plus a handful of smaller surfaces
hx-pagination remains on literal chevron characters (‹ / ›) for now — not migrated to hx-icon in 3.9.0.
Form validity integration
Section titled “Form validity integration”<hx-slider> and <hx-file-upload> now wire ElementInternals.setValidity() so they participate in native form-validity machinery. Consumer apps reading form.checkValidity() or form.reportValidity() will now see these components in the validation flow.
This closes the WCAG 3.3.6 Error Prevention (All) gap. No consumer migration required.
AAA cert remediation
Section titled “AAA cert remediation”The 3.9.0 release fixes structural issues in the AAA cert harness that were producing inaccurate verdicts. The current matrix:
- 376 Supports verdicts (44 components × applicable criteria)
- 0 Partial verdicts
- 0 Fail verdicts
- 109 Not Applicable cells (criterion does not apply per component class)
Reproducible via pnpm aaa:audit against a running Storybook.
See the VPAT 2.5 conformance report for the per-criterion ledger.
Breaking changes
Section titled “Breaking changes”None. The version was originally cut as 4.0.0 due to a changeset-config defect (deprecated on npm); the corrected 3.9.0 publish is the canonical release.