# What changed in bootstrap

> 226 changes in bootstrap 6 from its official release notes, upgrade guides and advisories: 131 breaking, 64 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/bootstrap/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## bootstrap 6

### Breaking changes

- `xxl` is renamed to `2xl`; its breakpoint increases to 1536px and its container to 1440px. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Native form controls now use the primary theme color globally. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Accordion markup is rebuilt on native details and summary, removing the basic open/close JavaScript dependency and the accordion-button and accordion-collapse classes. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass `add()` function was removed; use `calc()` instead. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Alerts animate out without .fade or .show; close() adds .hiding during the transition, delaying closed.bs.alert. Use .alert-instant for immediate removal. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Dismissible alerts no longer use .alert-dismissible; place .btn-close directly inside the alert. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Use a .theme-* class for badge color instead of .bg-*; .badge-subtle and .badge-outline provide alternative variants. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- .bg-light, .bg-dark, and .bg-body-secondary/.bg-body-tertiary surfaces were removed or replaced by the adaptive .bg-1 and .bg-2 scale. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Background opacity utilities were renamed to .bg-{n} for the 10–100 opacity scale. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The base body font size is now set directly with --body-font-size; replace references to the removed base font-size variables. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass module was split into content/lists and content/blockquote; update individual imports to the new module paths. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The separate ESM bundle was removed; `bootstrap.js` is now the ESM entry point. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Bootstrap JavaScript is ESM-only; `bootstrap.js` is now a native ES module and the former UMD loading model and global are gone. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- All border-radius Sass variables were removed in favor of the numeric `$radii` map and `--radius-*` tokens. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Breadcrumbs use interactive .breadcrumb-link elements and explicit .breadcrumb-divider separators instead of the divider content string; the default bottom margin is removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Renamed to `breakpoint-prefix()`; the function now returns a prefix string rather than an infix. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Toggle buttons now put .btn-check on a label containing the input, eliminating id/for attributes and using :has() instead of sibling selectors. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Close-button icons use a CSS mask tinted by currentcolor, need no child SVG, and inherit dark-surface contrast; .btn-close-white is removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Per-color button classes are replaced by a button variant class composed with a .theme-* class; new variants include solid, outline, subtle, text, styled, and link. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Cards put the outer border on .card, use list-group-flush instead of .card-list, and add spacing, shadow, translucent, subtle, and row variants; .card-link is removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Card groups use container queries rather than viewport media queries; add a query container around the group for the attached equal-width row layout. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- User interaction with an autoplaying carousel permanently stops autoplay rather than letting it resume. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The carousel-caption class and its tokens are removed; compose and position slide content with custom markup and utilities. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The carousel-control-prev and carousel-control-next button classes are removed; compose controls from buttons, slide data attributes, and icon classes. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The dark carousel class and its Sass variables were removed; use `data-bs-theme="dark"` instead. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The .carousel-dark class is removed; use data-bs-theme="dark" on the carousel for reversed contrast. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Control icon classes are renamed to .carousel-icon-prev and .carousel-icon-next, with currentcolor icons sized using --bs-carousel-control-icon-width. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The ride option and ride data attributes are replaced by boolean autoplay; autoplay is opt-in and initializes through data-bs-autoplay="true". (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Stacked carousel layout is now the default and .carousel-stacked is removed; controls and indicators flow above or below slides unless overlaid. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The touch option is removed because horizontal touch dragging is native scrolling on the scroll-snap container. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The wrap option is replaced by ends, with loop, wrap, and stop values; loop is the default. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Checkboxes now receive .check directly on the input without a wrapper, and their marks use a CSS mask on a ::before pseudo-element. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Collapse now animates size with CSS interpolate-size, toggling only .show; .collapsing and plugin-written inline height and width are removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Collapse triggers use aria-expanded as their state signal; Bootstrap no longer adds or removes .collapsed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The toggle option is removed; construction preserves markup-declared state, so call show() to open a closed element during initialization. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Projects using CommonJS calls must switch to ESM `import` syntax. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The unused Sass mixin was removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The css-var, css-variable-name, and local-vars utility API options were removed; use the property map approach and variables option instead. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The clearfix helper was dropped in favor of the .d-flow-root utility. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Use data-bs-dismiss="dialog" instead of data-bs-dismiss="modal" to dismiss a dialog. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Controls Menu direction, replacing directional wrapper classes such as `.dropup`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Use data-bs-toggle="dialog" instead of data-bs-toggle="modal" to open a dialog. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces `data-bs-toggle="dropdown"` to activate Menu. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Use the HTML name attribute on details elements to create exclusive accordion groups instead of data-bs-parent. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces Modal with a native-dialog-based component; markup, classes, data attributes, events, CSS variables, JavaScript API, and backdrop behavior all change. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Dialog scroll prevention now marks the root html element with .dialog-open instead of adding .modal-open to body. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Dialog replaces Modal and is built on the native <dialog> element; developers should follow the migration guidance. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Display heading utilities .display-1 through .display-6 were removed with no single-class replacement; combine large font-size and weight utilities. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces Offcanvas with Drawer, which uses a native dialog element; class names, data attributes, events, CSS variables, JavaScript APIs, and the Sass z-index variable are renamed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Dropdown was replaced by Menu; update component imports, data attributes, classes, events, and data keys to their Menu equivalents. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The ineffective caret flag and caret mixins and variables were removed; add an icon to toggle markup if a caret is needed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass flag was removed because dark mode is always compiled; control it at runtime with `data-bs-theme` or `color-mode()`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The validation-icons Sass flag was removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass option and built-in validation background icons on form controls were removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Floating UI replaces Popper.js for menu, tooltip, and popover positioning. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Renames the `popperConfig` option on Tooltip, Popover, and Menu; update custom positioning configuration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A shared mixin replaces component-specific focus-box-shadow Sass variables; customize focus styles by overriding the focus-ring CSS custom properties. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Individual font-weight Sass variables were replaced by a single map; customize body weight with --body-font-weight. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A grid-based layout component was added for labels, controls, help text, and validation feedback, replacing checkgroup and radiogroup wrappers. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Form labels now default to font-weight 500 and inherit font size. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Range is now a JavaScript component: .form-range is the wrapper, the input uses .form-range-input, and each wrapper is initialized automatically. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The .form-select class was removed; use .form-control on select elements. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Helper text now uses --fg-2 for color, and its margin-top spacing is handled by the parent .form-field grid gap. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The mixin signature changed from ($state, $color, $icon, ...) to ($state, $theme). (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The numeric .fs-1 through .fs-6 scale was replaced with ascending t-shirt size keys from .fs-xs through .fs-6xl. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Renamed to `$breakpoints`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The class was removed because border-radius logic no longer branches on it. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass typography variables were removed; customize their equivalent CSS variables at runtime instead. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Reboot sets light and dark color schemes on every iframe; use .color-scheme-light on an embed that does not support dark mode. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Bootstrap JavaScript no longer supports jQuery. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The UMD entry point was removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The .lead utility was removed with no exact one-class replacement. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The `lg` breakpoint increases from 992px to 1024px; its container remains 960px. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The line-height utility was renamed to .lh-md, and its CSS variable was renamed to --line-height-md. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The link utility family was replaced by underline utilities; link opacity utilities have no dedicated replacement. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The helper is no longer needed in v6. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Horizontal list-group variants use container queries rather than viewport media queries and require a parent query container to respond. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The mixin now exposes `$prefix` instead of `$infix`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The mixin now exposes `$prefix` instead of `$infix`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass maps file was removed as part of the new color-mode and theming structure. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Menu replaces Dropdown and uses the `menu` data attribute, Menu classes, events, and JavaScript export. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces `.dropdown-item` in Menu markup. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces `.dropdown-menu`; Menu markup uses a flat structure and no wrapper element is required. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The long-deprecated ScrollSpy option is no longer parsed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Maximum-height and maximum-width utilities were renamed to .max-h-* and .max-w-*; minimum-size utilities were added. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Bootstrap 6 raises minimum support to Chrome and Edge 130, Firefox 132, and Safari 18 on macOS and iOS, with no fallbacks, prefixes, or polyfills below that floor. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Negative spacing utilities were reduced to -1 and -2 margins on inline start and end; the full negative margin family was removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Responsive navbar collapsing now uses Drawer instead of Collapse, with a breakpoint-prefixed .navbar-expand class; navbar-light and navbar-dark are removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Navbar height is no longer computed from link typography; a 3.5rem minimum and brand padding token set sizing, configurable with navbar padding or minimum-height tokens. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Bootstrap no longer supports Node Sass. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The long-deprecated ScrollSpy option is no longer parsed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Sass color variables now use `oklch()` and tint/shade scales use `color-mix(in oklch, ...)` by default; this requires browser support for both functions. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass file was renamed to `_placeholder.scss`; update individual `@use` imports. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Transition mixins now emit transitions only when this media query matches; browsers without support for the feature get no transition. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass variable was removed; CSS custom-property prefixing is now handled by PostCSS, so customize the prefix in PostCSS configuration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Responsive and state classes use a prefix followed by a colon, replacing infix or suffix forms across utilities, grid, pseudo-state variants, and responsive components. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Named border-radius tokens were replaced by a numeric 0–9 map that generates --radius-* tokens and --radius-pill. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Radios now receive .radio directly on the input without a wrapper, and their marks use a CSS mask on a ::before pseudo-element. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- RFS and its mixins were removed; typography now uses fixed `rem` values and `clamp()` for responsive sizing. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The v5 RGB CSS custom properties and `rgba()` patterns were removed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Rounded utilities now span .rounded-0 through .rounded-9 and map to changed radius values; shift class numbers to preserve v5 roundness. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The form variables file was removed; validation styling now uses theme-derived CSS custom properties. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Renamed to `scss/mixins/_form-validation.scss`, which contains only the `form-validation-state-selector` mixin. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The mixin file was renamed to scss/mixins/_form-validation.scss, and validation state styling now lives in scss/forms/_validation.scss. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The event now fires after the CSS transition finishes, rather than synchronously when `show()` is called. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The event fires when the new slide settles into view; a multi-slide to() jump may emit intermediate slid events. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass file was renamed to `_spinner.scss`; update individual `@use` imports. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Pseudo-state utility variants now use prefix syntax such as hover:opacity-50 instead of suffix syntax. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The Sass `subtract()` function was removed; use `calc()` instead. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The constructor now throws if the tab element has no tab-panel ancestor, rather than returning an inert instance. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Tab panes animate in with active and show applied in the same frame; the outgoing pane hides immediately, and shown.bs.tab waits for the incoming transition. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Text color utilities were replaced by .fg-* utilities; new emphasis and contrast variants were added, and several color utility names changed. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The themed background and contrasting foreground helpers were removed; compose the result from background and contrast foreground utilities. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Composable theme classes replace per-component color variants and set semantic CSS custom properties consumed by components. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- ScrollSpy's default threshold changes from `[0.1, 0.5, 1]` to `[0]`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Toast transitions are CSS-driven; the animation option and data-bs-animation are removed, and .toast-instant disables animation. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- isShown() returns false as soon as hide() is called rather than after the fade-out completes. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Combined transition tokens were removed; components now expose separate property, duration, and timing tokens. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces the duration portion of v5's `$transition-fade` value, allowing duration to be tuned independently. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces the timing portion of v5's `$transition-fade` value, allowing easing to be tuned independently. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The internal backdrop helper was removed; direct imports from `bootstrap/js/src/util/` no longer work. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The internal focus-trap helper was removed; direct imports from `bootstrap/js/src/util/` no longer work. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The internal scrollbar helper was removed; direct imports from `bootstrap/js/src/util/` no longer work. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Replaces `$form-validation-states` with a state-name-to-theme-key map. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The validation Sass map replaces $form-validation-states with a simpler mapping from state names to theme keys. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The dark-mode variables file was removed as part of the new color-mode and theming structure. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Variables were consolidated into `_config.scss`, replacing the former variables file. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Client-side validation no longer uses .was-validated or bare :valid and :invalid pseudo-classes. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The UMD-created global namespace is no longer available; use explicit ESM imports for plugin APIs. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The `xl` breakpoint increases from 1200px to 1280px and its container from 1140px to 1200px. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Renamed to `$zindex-menu`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)

### New APIs and options

- Adds compact accordion styling and spaced, separate rounded-card layouts. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Disables a component's keyframe animation on a single element. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a decorative pop animation helper that disables itself under `prefers-reduced-motion`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a decorative shake animation helper that disables itself under `prefers-reduced-motion`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds avatars with size classes, status indicators, a subtle variant, and grouped avatars. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A hairline border utility was added, backed by a .5px border-width token. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The accordion panel now has its own transition token trio, replacing a hard-coded `.2s` duration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Lets developers add a property to dialog animation without rewriting the whole transition declaration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Lets developers add a property to drawer animation without rewriting the whole transition declaration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Lets developers add a property to menu animation without rewriting the whole transition declaration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The range plugin exposes the fill amount as a CSS variable from 0 to 1 and keeps it in sync. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Lets developers add a property to toast animation without rewriting the whole transition declaration. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Buttons and inputs share --btn-input-* sizing tokens; buttons also gain square icon-only and xs size classes. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds an accessible control to pause or resume autoplay, or start autoplay on a static carousel. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a chip component for tags and tokens, plus interactive chip entry with the Chips JavaScript plugin and lifecycle events. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Collapse lifecycle events follow the CSS transition, configurable with the collapse transition property, duration, and timing tokens. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Configure the color space used for generated tint and shade scales. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Color-scheme utilities set the color-scheme property on one element, useful when an element needs a different scheme from the page. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A new Sass file holds colors separately. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A new searchable select component built on Menu, with single- and multi-select support. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A searchable, filterable select component was added with single- and multi-select modes, built on the Menu component. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Container query utilities were added for inline-size and size containers. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A shared token controls the duration of checkbox, radio, and switch mark animations. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A shared token controls the timing of checkbox, radio, and switch mark animations. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- CSS layers are defined in `_root.scss` and applied across Bootstrap Sass files. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Range components can optionally show a value bubble using this data attribute. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Client-side validation opts in through data-bs-validate and uses :user-invalid after interaction; the value valid also enables success styling. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a datepicker plugin built on Vanilla Calendar Pro; popups close after selection, outside interaction, Escape, or focus moving outside, and emit lifecycle events. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Set modal: false or data-bs-modal="false" to use a non-modal dialog. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds slide, instant, static-backdrop, non-modal, and scrollable dialog variants. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Dialog and Drawer share a base class for show/hide/toggle lifecycle, keyboard handling, backdrop clicks, and static-backdrop bounce. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Display utilities gained flow-root and contents options. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a flush-to-edge drawer variant without inset, border radius, or shadow. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Dynamic viewport utilities were added for full viewport height and width, including min-size variants. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a component for decorating form inputs with icons or text. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A medium font-weight utility was added with value 500. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A semibold font-weight utility was added with value 600. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Grid utilities were added for column templates, spanning all columns, adopting parent subgrid tracks, and grid auto flow. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a reduced-motion-aware helper that raises elements with a transform and deeper shadow on hover and keyboard focus. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- This class marks elements that should be skipped by input-group adjoining border-radius rules. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A root CSS token was added for runtime customization of the link underline offset. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a plugin that collapses overflowing nav items into a menu, measures and observes its wrapper, and fires update and overflow events there. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds an accessible one-time-password input rendered as separate digit slots from a single input, with plugin events exposing `event.value`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- An `exports` map provides explicit subpath access to source, dist, and Sass files. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Add a .theme-{color} class to pagination to theme its links, hover, focus, and active page item. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A place-items utility was added. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a class for scoping rich typography and `.not-prose` to opt out of prose styles inside a prose container. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a plugin that styles `.form-range` as a slider with a filled track, optional value bubble, datalist tick marks, and a change event. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Shadow utilities gained xs and xl sizes, layered multi-stop shadows, theme colors, and opacity controls. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A fixed rem-based size map with keys 1–12 was added and merged into the width utility. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A migration skill guides coding agents through the v5-to-v6 upgrade phase by phase. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A CSS-only component for multi-step workflows, with `.stepper-item` and the `.stepper-horizontal` variant. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a JavaScript plugin for password strength metering with a strength-change event. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds nested menu support through `.submenu`, with `submenuTrigger` choices of `hover`, `click`, or `both`, and a `submenuDelay` option. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A new switch token controls the indicator width as switch internals move away from padding-based animation. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The text-wrap utility gained a balance value. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- New text-size utilities set font-size and line-height together. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Use `.theme-reset` on a nested subtree to return to component defaults. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A new Sass file sets up global theming for color application. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adds a plugin for toggling element classes or attributes through `data-bs-toggle="toggler"`, with toggle lifecycle events. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Sets the ScrollSpy activation line as a percentage or pixel value from the top of the scroll root; its default is `12%`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Disables a component's transition on a single element. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A shared easing token is available for dialog, drawer, and menu overlays. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Added as a peer dependency for the Datepicker component. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)

### Behavior and default changes

- The bundled JavaScript includes Floating UI and Vanilla Calendar Pro; standalone JavaScript leaves these peer dependencies external. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The carousel uses native horizontal scroll snap for sliding, touch dragging, momentum, and keyboard scrolling while preserving its markup, JavaScript methods, and events. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- For the listed components, `close()` now returns a promise that resolves when the transition ends, including when the call does nothing. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A trigger targeting several collapses within one data-bs-parent opens them together; the parent closes only collapses the trigger does not target. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Drawer dismiss triggers can resolve breakpoint-prefixed drawers without data-bs-target; existing targets continue to work. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- On DOMContentLoaded, Bootstrap adds aria-pressed to toggle buttons that lack it, deriving the value from .active; markup can set it earlier. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Theme and config maps now merge partial `@use ... with ()` overrides; set a key to `null` to remove it. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- A trigger in an open dialog can open another dialog and automatically close the current one. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Drawers detect their placement and dismiss in the appropriate swipe direction on touch devices. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Adornment wrappers should be label elements so clicks on the wrapper focus the field; hide adornment text from the accessible name with aria-hidden. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Form controls now always have a min-height and apply the focus ring on :focus-within as well as :focus-visible. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Heading, paragraph, description-list, and legend typography now uses CSS variables instead of Sass variables, enabling runtime customization. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- For the listed components, `hide()` now returns a promise that resolves when the transition ends, including when the call does nothing. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- List inline-start padding is now driven by a spacer-scale CSS token rather than a hardcoded rem value. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The toggler icon uses a CSS mask tinted with currentcolor instead of an embedded SVG background image. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The standard placeholder loading animation is now shimmer; the old opacity animation is available as .placeholder-pulse, with .placeholder-glow retained as an alias. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Root tokens are emitted on both selectors so shadow roots adopting Bootstrap stylesheets can read them; overrides limited to `:root` are not visible to Web Components. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Now defaults to `null` and acts as an advanced observer override that takes precedence over `topMargin`. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- ScrollSpy now uses deterministic IntersectionObserver activation-line detection instead of scroll-position polling. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- For the listed components, `show()` now returns a promise that resolves when the transition ends, including when the call does nothing. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- When enabled, clicking a link restores the URL hash and moves focus to the target section after scrolling settles. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The spacer map expanded from keys 0–5 to 0–12, with finer increments and changed values for several existing keys. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Spacing and border utilities retain their class names but now use CSS logical properties for RTL and writing-mode support. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Switches now use a wrapper around the input, with the thumb absolutely positioned and animated using inset-inline-start. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- For the listed components, `toggle()` now returns a promise that resolves when the transition ends, including when the call does nothing. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Tooltips and popovers animate with CSS rather than .fade; animation: false uses an instant variant, and tips remain open while hovered or focused. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Component JavaScript reads computed transition duration; zero-duration transitions resolve immediately and fire their event without waiting. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)

### Tooling

- Bootstrap's JavaScript source now uses TypeScript `.ts` files; built-in declarations ship in `js/dist/*.d.ts`, and deep `.js` imports resolve to compiled files. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- CSS custom properties are prefixed automatically via this PostCSS tool during the build. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- Bootstrap's source build now uses Rolldown instead of Rollup and Babel; this matters only when building Bootstrap from source. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
- The separate types package is no longer needed because Bootstrap ships built-in type declarations. (6.0.0) — [upgrade guide](https://getbootstrap.com/docs/6.0/guides/migration)
