Accessibility

Treat lighting as decoration. Components must remain readable and operable without a moving highlight.

Choose motion behavior

Keep the default system motion to respect reduced-motion preferences. Touch movement never drives the light. Offer dynamic as an explicit choice because it overrides reduced motion; see Motion for the available behaviors.

Preserve native interactions

Keep useful base borders, text contrast, labels and focus styles. Edge’s decoration does not capture pointer events. Your app owns input values, selection, keyboard handlers and portal composition.

Forced-colors mode hides the border decoration. Do not use its presence or absence as the only way to communicate selection, validation or availability.

Understand rendering cost

One light coalesces updates into at most one pending frame. Geometry reads precede style writes and unchanged output properties are skipped.

Changing gradients can still require browser rendering work. Framework execution counts and functional browser tests are not measurements of paint, compositing, battery use or frame-rate guarantees.

bolerish/edge · Guides