Latticegetting started

Package stability

How to read Lattice UI's 0.x lockedstep versions and which packages are stable-direction versus experimental.

Lattice UI is in the 0.x phase, and the whole workspace shares one lockedstep version — but that number is not a maturity guarantee. Some packages are on a clear path to v1.0. Others are available while their APIs settle. This page tells you which is which.

What lockedstep 0.x means

Every package publishes at the same version, which keeps installs coherent but means the version alone cannot tell you how stable any single package is.

Stability tiers

Stable direction Stable direction

These are the long-term direction and the main path toward v1.0.

  • Foundations: runtime, focus, layer, motion, style, system
  • Primary UI: accordion, avatar, checkbox, combobox, dialog, menu, popover, progress, radio-group, scroll-area, switch, tabs, text-field, textarea, toast, toggle-group, tooltip

Experimental and feature-limited Experimental Feature limited

Usable, but evolving or deliberately limited in scope. Expect their APIs to move more than the stable-direction surface.

  • popper — experimental positioning foundation with placement-relative offsets and viewport collision handling
  • context-menu — pointer-driven only: it opens on a secondary click and highlights on hover, with no focus registration, ordered movement, or focus restore
  • select — currently single-value only
  • slider — currently single-thumb only

What v1.0 means here

The v1.0 milestone targets the main stable UI layer, not every package. The priority is a dependable foundation: runtime, focus, layer, motion, style and system. That means predictable composition, state, focus, keyboard navigation, layering and motion across the primary primitives, plus clearer semver expectations.

Reaching v1 for the main UI layer does not stabilize the experimental or tooling packages. Feature-limited packages can stay in 0.x longer and graduate only when their APIs are ready.

What is coming

The current release is v{LATTICE_VERSION}, finishing what v0.7.0 started. 0.7 drew the line between behaviour and appearance. Every primitive ships unstyled, props forward onto the instance a part renders and are type-checked against it, and motion only runs when you pass a transition. v{LATTICE_MINOR}.0 takes the last appearance decision out of the primitives, rendering every motion host as a Frame rather than a CanvasGroup. That is what the stable-direction surface carries into v1.0 — see Migration if you are coming from 0.6 or 0.7.

The v0.6.x line before them hardened the layered and composite primitives, motion and exit transitions, keyboard navigation, focus restoration and trapping, and regression coverage.

After v1.0 the feature-limited packages keep maturing independently, promoted only once their APIs are ready.

Next step

Start from a stable-direction primitive: follow Installation and then Your first dialog.