Packages

A semantic, themeable, accessible component library for Phoenix LiveView built on modern vanilla CSS.

Current section

Files

Jump to
slop_ui docs browser-support.md
Raw

docs/browser-support.md

# Browser support

Verified against MDN browser-compat-data, web-features (Baseline) and caniuse
on 2026-09-10. Stable browsers at that date: Chrome 151, Firefox 155,
Safari 26.6.

Support floor: features that are Baseline (newly or widely available). Anything
below that is used only as a progressive enhancement behind `@supports`, or
gets a JavaScript fallback in the hook.

## Used freely (Baseline)

| Feature | Chrome | Safari | Firefox | Baseline |
|---|---|---|---|---|
| `@layer` | 99 | 15.4 | 97 | Widely |
| CSS nesting | 120 | 17.2 | 117 | Widely |
| `light-dark()` | 123 | 17.5 | 120 | Newly 2024-05 |
| Relative color syntax | 125 | 18 | 128 | Newly 2024-09 |
| `oklch()`, `color-mix()` | 111 | 16.2 | 113 | Widely |
| `@property` | 85 | 16.4 | 128 | Newly 2024-07 |
| `@starting-style`, `transition-behavior: allow-discrete` | 117 | 17.5 | 129 | Newly 2024-08 |
| `popover` attribute | 114 | 17 | 125 | Newly 2025-01 |
| `<dialog>`, `requestClose()` | 37 / 134 | 15.4 / 18.4 | 98 / 139 | Widely / Newly |
| `<details name>` | 120 | 17.2 | 130 | Newly 2024-09 |
| `:user-invalid`, `:has()`, `inert`, `:focus-visible` | — | — | — | Widely |
| Container size queries | 105 | 16 | 110 | Widely |
| `scrollbar-gutter` | 94 | 18.2 | 97 | Newly 2024-12 |
| `text-wrap: balance` | 114 | 17.5 | 121 | Newly 2024-05 |
| `field-sizing: content` | 123 | 26.2 | 152 | Newly 2026-06 |
| `@scope` | 118 | 17.4 (full 26.4) | 146 | Newly 2026-03 |

## Enhancement only, with fallback

| Feature | Gap | What we do |
|---|---|---|
| CSS anchor positioning | In all three stable engines (Firefox since 147, Jan 2026) but not yet Baseline; Firefox can't transition anchored insets; `position-anchor` initial value differed before Chrome 151 / Firefox 151 / Safari 27 | Wrapped in `@supports (anchor-name: none)`; `position-anchor` always set explicitly; the menu and tooltip hooks compute a fixed position when unsupported |
| `<dialog closedby>` | No Safari | Dialog hook adds backdrop-click light dismiss when `closedBy` is absent |
| `popover="hint"` | No Safari | Tooltips use `popover="manual"` |
| `interpolate-size` / `calc-size()` | Chrome only | Not used; height-to-auto uses the grid `0fr → 1fr` technique |
| `appearance: base-select` | Chrome, Safari 27+ only | Not used yet; native select is styled with `appearance: none` |
| `text-wrap: pretty` | No Firefox | Applied to paragraphs; Firefox falls back to normal wrapping |
| `@supports at-rule()` | Chrome only | Not used; `@scope` blocks are written so dropping them degrades gracefully |
| `dialog` `toggle` event | Chrome 137+, Safari 26+, Firefox 145+ | Dialog hook listens to both `close` and `toggle` and dedupes |
| CSS `if()` | Chrome only | Not used |