You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The rationale had grown to roughly 50 comment lines, and the approach page
embeds this file in full, so all of it rendered there ahead of the queries
it was meant to explain. Prose belongs on a page that can format it.
Move the parts the docs did not already cover onto the browsers and devices
page: why `last 2 major versions` carries our mobile coverage, why
`unreleased versions` is worth eight points, how to measure coverage and why
not to trust browserslist.dev, which features the floors do and do not give
us, and which prefixes the excluded engines would add. Leave behind a
pointer to that page and the two rules a person editing the file must not
get wrong.
Both pages now read the query lines out of the file through `fileMatch`
instead of hand-copying them. That is what drifted in the first place: the
page still claimed Chrome 130 and Safari 18 after the floors briefly moved
to 123 and 17.5. The regex is anchored on the first and last query, so a
restructure fails the docs build rather than shipping stale versions.
The resolved target list, the derived oxc targets, and the build output are
all unchanged.
Copy file name to clipboardExpand all lines: site/src/content/docs/getting-started/approach.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -168,9 +168,9 @@ For improved cross-browser rendering, we use [Reboot]([[docsref:/content/reboot]
168
168
169
169
### Browser support
170
170
171
-
You can find our supported range of browsers and their versions [in our `.browserslistrc` file]([[config:repo]]/blob/v[[config:current_version]]/.browserslistrc). The comments record why each floor sits where it does, and which platform features the floors do and do not give us. For a summary table instead, see [Browsers & devices]([[docsref:/getting-started/browsers-devices]]).
171
+
You can find our supported range of browsers and their versions [in our `.browserslistrc` file]([[config:repo]]/blob/v[[config:current_version]]/.browserslistrc). See [Browsers & devices]([[docsref:/getting-started/browsers-devices]]) for the reason behind each version, and for the platform features these floors do and do not give us.
Copy file name to clipboardExpand all lines: site/src/content/docs/getting-started/browsers-devices.mdx
+43-12Lines changed: 43 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,16 +8,7 @@ toc: true
8
8
9
9
Bootstrap supports the **latest, stable releases** of all major browsers and platforms, plus a run of older versions of each engine. The exact policy lives in [our `.browserslistrc` file](https://github.com/twbs/bootstrap/blob/v6-dev/.browserslistrc):
10
10
11
-
```text
12
-
last 2 major versions
13
-
not dead
14
-
unreleased versions
15
-
Chrome >= 130
16
-
Edge >= 130
17
-
Firefox >= 132
18
-
iOS >= 18.0
19
-
Safari >= 18.0
20
-
```
11
+
<Codelang="plaintext"filePath=".browserslistrc"fileMatch="last 2 major versions[\s\S]+not op_mini all" />
21
12
22
13
Browserslist joins these lines with OR, not AND. The `>=` lines do not narrow `last 2 major versions`. They add every version above each floor, which is what sets our real minimums:
23
14
@@ -33,6 +24,15 @@ Browserslist joins these lines with OR, not AND. The `>=` lines do not narrow `l
33
24
34
25
Alternative browsers built on these engines (Chromium-based browsers like Brave, Opera, or Vivaldi, and browsers using WebKit on iOS) are not explicitly tested, but should be fully supported at equivalent engine versions.
35
26
27
+
### How to read the query list
28
+
29
+
Two of those lines do more than they look like they do:
30
+
31
+
-**`last 2 major versions` carries our mobile coverage.** caniuse tracks Chrome for Android as a single unversioned entry rather than one entry per release, so this line, not the `>=` floors, is what picks it up.
32
+
-**`unreleased versions` is worth about eight points of coverage, and it costs nothing.** caniuse gives the newest Safari a null release date, yet that version already holds most of Safari’s usage share. Both range queries and `last N versions` skip unreleased versions, so without this line we would exclude the single most-used Safari. It cannot pull in anything old, because an unreleased version is newer than every floor.
33
+
34
+
To measure coverage yourself, run `npx browserslist --coverage` in a clone of the repository. Do not read the figure off browserslist.dev: that site pins an older copy of caniuse-db and reports a materially different number.
35
+
36
36
### Why these versions?
37
37
38
38
Bootstrap’s CSS is written against the modern platform baseline: [`light-dark()`](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/light-dark) for [color modes]([[docsref:/customize/color-modes]]), `oklch()` and `color-mix()` for the [color system]([[docsref:/customize/color]]), native CSS nesting, container queries, and `:has()`.
@@ -51,7 +51,7 @@ Our floors also have to last. They apply to the whole v6.x line, and we cannot r
51
51
52
52
`light-dark()` sets the hard lower bound: Chrome 123, Firefox 120, and Safari 17.5. Below it, our build pipeline lowers `light-dark()` to a custom-property polyfill, and that polyfill breaks `data-bs-theme` dark mode. We will not go below that bound in any release.
53
53
54
-
Together these targets cover about 85% of global browser usage. Run `npx browserslist --coverage` in a clone to check the current figure yourself.
54
+
Together these targets cover about 85% of global browser usage.
55
55
56
56
Unlike previous major versions, Bootstrap 6 does not ship fallbacks, prefixes, or polyfills for browsers below this floor. Pages will not render correctly in unsupported browsers—most visibly, colors depending on `light-dark()` will not resolve.
57
57
@@ -72,6 +72,37 @@ The table below lists the platform features v6 relies on and how each behaves at
72
72
| Logical properties | Spacing, borders, and [RTL]([[docsref:/customize/rtl]]) support throughout | Fully supported above the floor |
73
73
</BsTable>
74
74
75
+
### Also safe to use
76
+
77
+
The floors clear more of the platform than the components currently use. All of the following need no fallback, no vendor prefix, and no polyfill in any 6.x release, so reach for them first when you build on top of Bootstrap or contribute to it:
78
+
79
+
- Native CSS nesting, so compiled output can stay nested
80
+
-`@layer`, which our [layer order]([[docsref:/getting-started/approach]]) depends on
81
+
-`:focus-visible` for keyboard-only focus styling
82
+
- Container query units and `subgrid`
83
+
-`content-visibility`, `transition-behavior: allow-discrete`, and `@starting-style`, which together animate `<details>` and `<dialog>` open and closed
84
+
- Unprefixed `backdrop-filter`
85
+
-`text-wrap: balance`
86
+
- Range syntax in media queries, such as `@media (width >= 1024px)`
87
+
88
+
### Not available yet
89
+
90
+
These features sit above our floors, so v6 cannot use them without a fallback. Firefox is the blocker in nearly every case, which means Chrome support alone is never enough to tell you whether we can ship something.
Relative color syntax is the closest miss, one version above our Chrome floor. Anchor positioning is the one most worth waiting for: it would let Menu, Tooltip, Popover, and Combobox drop their [Floating UI](https://floating-ui.com/) dependency. Re-check these with `npx browserslist` before you assume one has landed.
105
+
75
106
## JavaScript
76
107
77
108
Bootstrap’s JavaScript ships as **native ES modules only**. Load it with `<script type="module">`—a classic `<script src>` without `type="module"` will not execute it, and there is no global `window.bootstrap` object. See the [JavaScript getting-started guide]([[docsref:/getting-started/javascript]]) for loading patterns, including import maps for the bundle’s dependencies.
@@ -80,7 +111,7 @@ All browsers meeting the CSS support floor above fully support ES modules, `impo
80
111
81
112
## Mobile devices
82
113
83
-
Generally speaking, Bootstrap supports the latest versions of each major platform’s default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile’s Turbo mode, UC Browser Mini, Amazon Silk) are not supported. We also exclude UC Browser, QQ Browser, and KaiOS. Together they hold under 1% of users, and targeting them only adds vendor prefixes to our CSS.
114
+
Generally speaking, Bootstrap supports the latest versions of each major platform’s default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile’s Turbo mode, UC Browser Mini, Amazon Silk) are not supported. We also exclude UC Browser, QQ Browser, and KaiOS. Together they hold under 1% of users, and including them only adds vendor prefixes to our CSS: `-webkit-mask-*` for UC and QQ, and `-moz-column-gap` for KaiOS. KaiOS additionally [broke our floating labels](https://github.com/postcss/autoprefixer/issues/1533).
0 commit comments