Browser Support
Espalier targets the latest two major versions of each evergreen browser. The library ships modern JavaScript and CSS with no transpilation or vendor-prefixed fallbacks.
Minimum Browser Versions
The table below lists the effective floor for each browser, determined by the most demanding platform feature Espalier uses.
| Browser | Minimum Version | Release Date |
|---|---|---|
| Chrome / Edge | 120+ | December 2023 |
| Firefox | 128+ | July 2024 |
| Safari | 18+ | September 2024 |
If your users are on a managed browser policy (common in enterprise and government environments), these are the versions to enforce.
What Sets the Floor
| Platform Feature | Chrome | Firefox | Safari | Used For |
|---|---|---|---|---|
| CSS Nesting | 120+ | 117+ | 17.2+ | Component stylesheets |
| OKLCH Relative Color Syntax | 119+ | 128+ | 18+ | Theme color derivation |
| Container Queries | 105+ | 110+ | 16+ | Responsive component sizing |
| ElementInternals | 77+ | 98+ | 16.4+ | Native form participation |
| Custom Elements / Shadow DOM | All modern | All modern | All modern | Every component |
clamp() |
79+ | 75+ | 13.1+ | Fluid typography |
The highest bar is CSS Nesting (Chrome 120) and Relative Color Syntax (Firefox 128, Safari 18). Both reached Baseline status in late 2024.
Required Polyfills
Espalier does not bundle polyfills. When a standard is not yet universally available, the consuming application is responsible for loading the polyfill. This keeps the library dependency-free and lets you drop the polyfill the moment your browser matrix no longer needs it.
Temporal API
Required for: <esp-date-picker>, <esp-input input-type="date">
The Temporal API provides date and time types.
Espalier expects it on globalThis.Temporal. If a supported browser does not
provide it, install the polyfill before loading Espalier:
npm install @js-temporal/polyfill
import { Temporal } from "@js-temporal/polyfill";
globalThis.Temporal ??= Temporal;
await import("@taprootio/espalier");
Or via CDN in your document <head>:
<script src="https://cdn.jsdelivr.net/npm/@js-temporal/polyfill/dist/index.umd.js"></script>
<script>
globalThis.Temporal ??= temporal.Temporal;
</script>
Without the polyfill, <esp-date-picker> renders an inline error message instead of the calendar UI.
Not Supported
| Environment | Reason |
|---|---|
| Internet Explorer | No custom element or Shadow DOM support |
| Legacy Edge (EdgeHTML) | No custom element or Shadow DOM support |
| Chrome < 120 | Missing CSS Nesting |
| Firefox < 128 | Missing Relative Color Syntax |
| Safari < 18 | Missing Relative Color Syntax |
| Server-side rendering | Espalier is a client-side library; SSR requires a DOM shim such as Lit SSR |
Support Policy
Espalier ships modern JavaScript and CSS without a transpilation layer or built-in compatibility shims. Load polyfills in your application when needed, and remove them when your browser matrix supports the feature natively.
For detailed rationale and per-feature breakdowns, see the Caveats guide.