Compatibility
This page defines the supported platform and behavior contract for the current Brok release. Each stable release copies this matrix into its release notes.
Current support matrix
| Design system | Laravel | Livewire | Tailwind CSS | PHP |
|---|---|---|---|---|
Brok 0.2.xfoundation 2.0.x |
11.x, 12.x, 13.x |
Optional: ^3.8.5 or ^4.4.1 |
4.x |
^8.2 |
Laravel 13 requires PHP 8.3 or newer through Laravel's package constraints. The release gate tests PHP 8.2 through 8.5 where the Laravel version permits it.
Warning
0.x is pre-stable. A breaking 0.x change must be named in the changelog, include a migration, and receive release-owner approval.Minimum browser support
| Browser | Minimum supported release |
|---|---|
| Chrome and Edge | Current stable major and the two previous major releases |
| Firefox | Current stable major and the two previous major releases |
| Safari on macOS | Current major and the previous major release |
| Safari on iOS and iPadOS | Current major and the previous major release |
| Chrome on Android | Current stable major and the previous major release |
Each release records the exact versions used for sign-off. Internet Explorer and end-of-life embedded browsers are not supported. Dropping a browser from this window is a breaking change.
Browser support tiers
Brok uses a rolling browser window while keeping server-rendered content and native form semantics useful when an enhanced browser API or JavaScript behavior is unavailable.
| Tier | Expectation | Examples |
|---|---|---|
| A — supported | Chrome, Edge, and Firefox support the current stable major and two previous majors. Safari supports the current and previous major. Chrome on Android supports the current and previous major. | Chromium desktop/mobile; Firefox desktop; WebKit desktop/mobile |
| B — functional | Older engines may lose cosmetic motion or advanced positioning, but content and native forms remain usable. | Graceful CSS/API fallback |
| Unsupported | End-of-life browsers without the JavaScript, CSS custom-property, or module baseline are not tested. | Legacy embedded engines |
Note
Progressive enhancement rules
- Native form controls remain the baseline when custom selection behavior is unnecessary.
- Popover positioning, view transitions, and advanced motion are enhancements; content must not depend on animation.
- Dialog, sheet, menu, combobox, drag, and canvas behaviors require their installed Alpine module.
prefers-reduced-motion, keyboard input, touch input, and zoomed layouts are part of supported behavior.
Note
Theme and token compatibility
The foundation version covers resources/css/ui.css and resources/views/components/ui/_styles.php. Themes are sparse overrides of the public token schema. They can omit tokens and inherit the foundation defaults.
- Adding a token is normally non-breaking.
- Removing or renaming a token, changing its type, or changing its semantic meaning is breaking.
- A breaking token change needs a foundation major, a migration record, and an explicit replacement map.
- A token value can change in a patch or minor only inside its documented semantic and accessibility boundary.
JavaScript requirements
Blade-only components need no JavaScript. Interactive components require Alpine.js 3.x, an ES-module-capable supported browser, the installed resources/js/ui/index.js entry, and each npm dependency declared by the item.
Vite is recommended, not required. Another bundler is supported when it loads standard ES modules and dynamic import(). Brok prints npm install commands but does not run them.
Server rendering and no-JavaScript behavior
Brok renders Blade on the server. The first response contains meaningful HTML and native form semantics. Rendering never calls a hosted Brok service.
| Component contract | Without JavaScript |
|---|---|
none | The complete component works. |
progressive enhancement | Core content and native actions work. Enhanced motion, positioning, or feedback can be absent. |
required | Content stays readable and causes no browser error, but the custom interaction is unavailable. Item docs identify the missing interaction. |
Deprecation and support lifetime
A stable contract remains functional for at least one minor release and 90 days after deprecation. Removal requires a breaking release and a migration.
Brok has no LTS line during 0.x. Security and compatibility fixes target only the latest released 0.x version. After 1.0.0, the latest minor of the current major is supported. An older major or LTS line receives updates only when its release notes give an end-of-support date.
Semantic versioning in Brok
- A material change to default layout, density, typography scale, color meaning, or another documented visual contract is breaking.
- Removing or renaming a token, or changing its type or meaning, is breaking.
- Adding an optional prop without changing the default is normally non-breaking.
- Changing documented focus behavior is breaking. A patch can only restore the documented behavior; a minor can add opt-in behavior.
- Generated markup changes are breaking when they alter a documented element, DOM order, selector hook,
data-slot, form value, ARIA relationship, or snapshot contract. - Dropping a supported runtime, framework, browser, or foundation range is breaking.
Warning