Migrating TailNG to @angular/aria
First-class accessibility primitives + a Bedrock + Owned distribution strategy for scalable design systems.
-
Accessibility migrationTailNG components will adopt @angular/aria primitives for consistent keyboard + screen reader support.
-
Bedrock + OwnedA new way to distribute TailNG: stable foundations (Bedrock) and faster iteration (Owned).
Why we’re doing this
TailNG is built for large Angular applications. As the component surface grows, accessibility needs to remain consistent, auditable, and hard to regress.
- ARIA roles/attributes and keyboard interactions drifting across components over time.
- Focus management patterns implemented differently in different places.
- Harder a11y QA as the library grows (more custom logic to audit and maintain).
What @angular/aria brings to TailNG
We are adopting @angular/aria as a common foundation for accessibility behavior. The goal is not to “add more attributes”, but to make TailNG’s interactions and semantics reliable and consistent across the entire library.
- Standardized keyboard interactions (where applicable).
- More consistent focus behavior across overlays, lists, menus, and form controls.
- Predictable ARIA relationships (labels, descriptions, states).
- Clearer internal a11y contracts per component.
- Less duplicated accessibility logic.
- Easier review and regression prevention as new components are added.
This is an ongoing migration and will roll out incrementally component-by-component.
Introducing the Bedrock + Owned strategy
Alongside the a11y migration, we are evolving how TailNG is structured and distributed. The idea is simple: separate the long-term stable foundation from the higher-velocity layer.
The stable foundation: accessibility primitives, interaction contracts, and minimal building blocks. Bedrock is designed to be hard to break and safe for long-term adoption.
- Accessibility-first behavior
- Predictable focus/keyboard patterns
- Minimal styling surface
- Stable primitives for composition
The TailNG-owned layer: ergonomic components, slots-based micro styling, and theme-driven UX defaults. Owned can iterate faster while staying compatible with Bedrock.
- TailNG component ergonomics
- Slots-based micro styling
- Token-based theme defaults
- High-level components and patterns
- Stability: rely on Bedrock for durable contracts.
- Velocity: adopt Owned for productivity and richer UI.
- Customization: slot-level control without forking components.
What changes for app developers
- Better keyboard navigation consistency across components.
- More reliable screen reader behavior.
- Cleaner internal APIs for focus + ARIA handling.
- Some DOM roles/attributes may change as semantics become stricter.
- Focus order may become more intentional/correct in overlays and lists.
- Some legacy patterns may be deprecated in favor of a11y-first APIs.
We’ll document each notable behavior change in release notes as components migrate.
Rollout approach
This migration will be delivered incrementally, so teams can adopt improvements without a big-bang rewrite. We’ll prioritize foundational primitives first, then move upward through form controls and navigation.
- Overlay and focus primitives
- Option list / listbox-like behaviors
- Form controls (autocomplete, select, date/time pickers)
- Navigation components (menu, tabs, etc.)
Links
If you find an accessibility issue, please report it with steps to reproduce and expected behavior.