overview
browser support

Browser Support

Learn about the browser support for Bamboo

Bamboo emits modern CSS and supports the latest stable releases of major browsers with:

Baseline

Chrome >= 123
Edge >= 123
Firefox >= 146
iOS >= 17.5
Safari >= 17.5
Android >= 123
Opera >= 109

Bamboo reads this fixed baseline when it optimizes CSS. It deliberately does not read a consuming project's browserslist configuration, so identical source always compiles to identical CSS.

Compiled slot recipes return complete atom strings and do not emit @scope, so slot recipes add no separate browser requirement.

Semantic tokens and light-dark()

A semantic token with a _osDark value and nothing else conditional is emitted as one declaration:

:where(:root, :host) {
  color-scheme: light dark;
  --colors-bg: light-dark(var(--colors-white), var(--colors-black));
}

color-scheme is emitted with the tokens rather than the reset. A sheet using preflight: false still needs it for light-dark() to select its dark arm. It has zero specificity, so an application can override it on a subtree:

[data-theme='dark'] {
  color-scheme: dark;
}

A token that also carries _osLight keeps its media blocks, because folding it would put a media declaration and a light-dark() arm in play for the same variable. _dark also remains separate because it is a selector rather than an operating-system media query.

Additional CSS processing

PostCSS remains useful for application CSS outside Bamboo—for example, to run Autoprefixer. Bamboo itself is compiled and emitted by its Vite plugin.

Cascade-layer flattening is unsupported. Removing layer boundaries changes Bamboo's precedence contract.