Announcements and status
Rendered from the repository's canonical NEWS.md at build time — the engineering record behind it is the changelog, and the forward plan is the roadmap.
Announcements, release highlights, project status, and press contacts for Lily Design System™.
The complete engineering record is in CHANGELOG.md; this file is the summary a reader, a reporter, or an evaluator wants first.
- Website: https://lilydesignsystem.com/
- Source: https://github.com/LilyDesignSystem/lily-design-system/
- Contact: joel@joelparkerhenderson.com
Status at a glance
Updated 2026-09-06.
| Version | 0.6.0 (pre-1.0; minor versions may break) |
| Started | 2025-08-09 |
| Catalog | 571 components |
| Frameworks | 7 full-catalog — HTML, Svelte, React, Vue, Angular, Blazor, Nunjucks — plus an 8th, Web Components, at its full achievable scope (536/571; the remaining 35 are permanently excluded, not backlog) |
| Layers | 8 headless libraries, 7 example applications, 8 helper catalogs (48 packages) |
| Themes | 45 reference stylesheets |
| Published | 6 of 7 full-catalog headless libraries and the JS helper packages on npm (see CHANGELOG.md for exact per-package status); the 6 Blazor NuGet packages are packed, push pending credentials; Web Components headless and helpers are built but not yet subtree-pushed or published |
| License | MIT, Apache-2.0, GPL-2.0-only, GPL-3.0-only, or BSD-3-Clause, at your option |
| Maintainers | 1 |
| Funding | GitHub Sponsors live; Open Collective planned — see CONTRIBUTING.md for what money buys and does not |
Recent news
2026-09-06 — An 8th headless catalog, Web Components, reaches its full achievable scope
@lilydesignsystem/web-components-headless — native custom elements, no
framework runtime — grew from a 33-component pilot slice to 456 of the
571 canonical components in one day, spanning every category including
all 92 national personal identifier components. The remaining 35 (30
table sub-elements, 5 interactive list-item families) are permanently
excluded by a real browser limitation, not a to-do: no safe way exists
to register an autonomous custom element as a required child of
<table>/<ol>/<select>, and the one workaround (customized built-in
elements) is permanently unsupported in Safari. The same week: the docs
site's header gained live theme, text-size, and share pickers (real
published packages, not a demo); all 92 national-identifier component
docs got a "where to find it" pointer and, where one exists, the actual
validation algorithm; and every live link to the docs site was updated
from lilydesignsystem.github.io to its custom domain. Full engineering
record: CHANGELOG.md.
2026-08-23 — Headless packages get a real entry point (0.3.0)
The three published headless packages were broken on npm and nothing had caught
it. Each declared "main": "index.js" and no such file had ever been built, so
every import … from "lily-design-system-<framework>-headless" failed at
resolution — 0.2.0 is unusable on the registry for that reason. Nothing in CI ever
imported a package the way a consumer does; the tests import component files by
relative path.
Each package now generates a barrel over all 571 components and builds a real
dist/, verified by installing the packed tarball into a scratch project. The
packages shrank by roughly 80% in the process. If you installed 0.2.0, upgrade.
2026-07-31 — Two picker defects, found and fixed across all seven catalogs
A report that a picker might stay open led to an audit that found the close path
was fine and something else was wrong: a re-entrant apply step re-fired the
consumer's change callback on every framework re-evaluation, and in Svelte that
looped until the component stopped updating its DOM entirely, freezing the listbox
mid-open with a stale aria-expanded="true". Applying a preference is now a no-op
when the value has not changed.
The same audit found that six of seven catalogs closed the listbox on a pointer selection correctly, with nothing asserting it — the written contract only promised the close for keyboard selection. The contract now states it and every catalog tests it.
Both are written up rather than quietly fixed, because they bound what automated testing proves: neither was visible to jsdom or bUnit with the suites green.
2026-07-29 — Accessibility hardening across all 35 helper packages
Two sweeps, canonical-Svelte-first then ported to the six sibling catalogs.
Tabbing out of an open picker no longer restarts keyboard focus at the top of the
page; APG single-character typeahead cycles; PageUp/PageDown work; vetoed calendar
days became aria-disabled rather than disabled, so they stay focusable and
announced; closing the date-picker dialog returns focus to whatever opened it; and
the locale picker now defaults to endonym labels — "Cymraeg", not "Welsh" —
claiming lang only where it is true.
2026-07-21 — Helpers renamed to *-picker
Every helper package in all seven catalogs was renamed, in full depth: directories,
package identifiers, exported symbols, CSS class hooks, data attributes, and
element tags. All tests passed with unchanged counts, because it was a rename and
not a behaviour change. Every package reset to 0.1.0; prior history is preserved
under a provenance heading in each CHANGELOG.md.
2026-07-03 — Reference themes, the helpers layer, and spec-driven docs (0.5.0, 0.6.0)
45 theme stylesheets landed, covering NHS England, Scotland and Wales in patient
and practitioner variants, plus GOV.UK GDS, USWDS, Adobe Spectrum, Mozilla
Protocol, and general-purpose themes. Spec-driven development moved from single
spec.md files to spec/ directories across the repository, all 21 subprojects,
and all component directories. bin/test now fails the build instead of reporting
sadly, and bin/check-links fixed 89 broken markdown links.
2026-05-30 — The seventh framework: Angular (0.3.0)
Angular 22 headless (signal-based, OnPush, standalone, zero-CSS) and an Angular +
Analog.js example app. The headless library is fully verified: 974 vitest cases
across 490 spec files, a clean ng-packagr build, and 490 Storybook stories. The
example app's static SSG output remains blocked on an upstream Analog issue.
2026-05-24 — 80 national personal identifier components (0.2.0)
40 identifier types across 30+ countries, each with an -input and a -view
component, with normalization and validation algorithms documented per country.
What is coming
Not commitments — the project has one unpaid maintainer and no roadmap dates.
- Publishing the remaining four headless packages (HTML, Angular, Nunjucks to npm; Blazor to NuGet).
- Wiring the 45 reference themes into the example applications as switchable alternatives to the default NHS layer.
- Resolving the Angular SSG blocker upstream.
- More composed-page demonstrations beyond the three required routes.
- Contributor onboarding documentation.
For reporters and writers
Lily is a free open-source project, not a company. There is no PR firm, no embargo process, and no marketing team. Ask a direct question and you will get a direct answer, including when the answer is unflattering.
Press contact: Joel Parker Henderson, joel@joelparkerhenderson.com
Boilerplate
Lily Design System™ is a free, open-source, headless design system. It defines a canonical catalog of 571 components and implements that same catalog across seven frameworks — HTML, Svelte, React, Vue, Angular, Blazor, and Nunjucks — as unstyled, accessible components that ship semantic HTML, ARIA, focus management, and keyboard behaviour with no CSS and no framework dependency. It also ships 45 reference theme stylesheets, seven fully styled example applications, and 35 helper packages. Lily targets WCAG 2.2 AAA, follows the WAI-ARIA Authoring Practices, and requires every user-facing string to be supplied by the consumer. It is maintained by Joel Parker Henderson and is available under a choice of MIT, Apache-2.0, GPL-2.0-only, GPL-3.0-only, or BSD-3-Clause.
Facts worth checking before you print them
Please do check. Several are counterintuitive and one is a common error.
- "Targets WCAG 2.2 AAA" is not "is WCAG 2.2 AAA compliant." No audit has been performed and no VPAT exists. Automated checks run AA rule sets. The distinction matters and the project will not endorse the stronger phrasing.
- Lily is not affiliated with or endorsed by NHS, GOV.UK, USWDS, Adobe, or Mozilla. The themes take visual reference from published design systems; they are independent implementations against Lily's own class names.
- The project has one maintainer and began in August 2025.
- Four of seven frameworks are not yet on a package registry — see INSTALL.md.
- AI tooling is used to build Lily, disclosed in full in AI_STATEMENT.md. Lily itself ships no AI and makes no network calls.
Story angles that are actually interesting
More useful than a release announcement, and all grounded in work already done and documented:
- What automated accessibility testing cannot catch. Two real defects that survived thousands of green tests, both written up in CHANGELOG.md.
- Cross-framework parity. What breaks when the same catalog must hold an identical markup contract in seven frameworks, and where the idioms genuinely diverge.
- Endonym locale labels. Why a language picker that says "Welsh" instead of
"Cymraeg" is a defect, and why claiming
langon it is a worse one. - Optical glyph matching. Why four icon glyphs at one
font-sizelook wrong, and the per-glyph scale factors in the 45 themes that fix it. - National identifier components. 80 components, 30+ countries, and what validating identifier formats without storing identifiers looks like.
Assets
Screenshots, logos, and the trademark usage convention: ask by email. The
assets/ directory holds what currently exists.
Citing Lily
Machine-readable metadata is in CITATION.cff, including the author's ORCID iD.
Following along
This document is rendered on the website at https://lilydesignsystem.com/news/ (with the forward plan at /roadmap/). There is no newsletter or social account yet. Watch the repository on GitHub, or the mirrors on GitLab and Codeberg. The outreach plan that would change this is written down in help/outreach/index.md.
Lily™ and Lily Design System™ are trademarks.