unstale

npm / bootstrap

bootstrap

What changed in bootstrap 6, from its official release notes, upgrade guides and advisories. Also covers @types/bootstrap. Sources checked 2026-10-19.

131 breaking64 new APIs and options27 behavior and defaults4 tooling

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

bootstrap 6226 changes

Breaking changes 131

  • xxl is renamed to 2xl; its breakpoint increases to 1536px and its container to 1440px.

    6.0.0upgrade guide

  • Native form controls now use the primary theme color globally.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • The Sass add() function was removed; use calc() instead.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Dismissible alerts no longer use .alert-dismissible; place .btn-close directly inside the alert.

    6.0.0upgrade guide

  • Use a .theme-* class for badge color instead of .bg-*; .badge-subtle and .badge-outline provide alternative variants.

    6.0.0upgrade guide

  • .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.0upgrade guide

  • Background opacity utilities were renamed to .bg-{n} for the 10–100 opacity scale.

    6.0.0upgrade guide

  • The base body font size is now set directly with --body-font-size; replace references to the removed base font-size variables.

    6.0.0upgrade guide

  • The Sass module was split into content/lists and content/blockquote; update individual imports to the new module paths.

    6.0.0upgrade guide

  • The separate ESM bundle was removed; bootstrap.js is now the ESM entry point.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • All border-radius Sass variables were removed in favor of the numeric $radii map and --radius-* tokens.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Renamed to breakpoint-prefix(); the function now returns a prefix string rather than an infix.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • User interaction with an autoplaying carousel permanently stops autoplay rather than letting it resume.

    6.0.0upgrade guide

  • The carousel-caption class and its tokens are removed; compose and position slide content with custom markup and utilities.

    6.0.0upgrade guide

  • The carousel-control-prev and carousel-control-next button classes are removed; compose controls from buttons, slide data attributes, and icon classes.

    6.0.0upgrade guide

  • The dark carousel class and its Sass variables were removed; use data-bs-theme="dark" instead.

    6.0.0upgrade guide

  • The .carousel-dark class is removed; use data-bs-theme="dark" on the carousel for reversed contrast.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • Stacked carousel layout is now the default and .carousel-stacked is removed; controls and indicators flow above or below slides unless overlaid.

    6.0.0upgrade guide

  • The touch option is removed because horizontal touch dragging is native scrolling on the scroll-snap container.

    6.0.0upgrade guide

  • The wrap option is replaced by ends, with loop, wrap, and stop values; loop is the default.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Collapse now animates size with CSS interpolate-size, toggling only .show; .collapsing and plugin-written inline height and width are removed.

    6.0.0upgrade guide

  • Collapse triggers use aria-expanded as their state signal; Bootstrap no longer adds or removes .collapsed.

    6.0.0upgrade guide

  • The toggle option is removed; construction preserves markup-declared state, so call show() to open a closed element during initialization.

    6.0.0upgrade guide

  • Projects using CommonJS calls must switch to ESM import syntax.

    6.0.0upgrade guide

  • The unused Sass mixin was removed.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • The clearfix helper was dropped in favor of the .d-flow-root utility.

    6.0.0upgrade guide

  • Use data-bs-dismiss="dialog" instead of data-bs-dismiss="modal" to dismiss a dialog.

    6.0.0upgrade guide

  • Controls Menu direction, replacing directional wrapper classes such as .dropup.

    6.0.0upgrade guide

  • Use data-bs-toggle="dialog" instead of data-bs-toggle="modal" to open a dialog.

    6.0.0upgrade guide

  • Replaces data-bs-toggle="dropdown" to activate Menu.

    6.0.0upgrade guide

  • Use the HTML name attribute on details elements to create exclusive accordion groups instead of data-bs-parent.

    6.0.0upgrade guide

  • Replaces Modal with a native-dialog-based component; markup, classes, data attributes, events, CSS variables, JavaScript API, and backdrop behavior all change.

    6.0.0upgrade guide

  • Dialog scroll prevention now marks the root html element with .dialog-open instead of adding .modal-open to body.

    6.0.0upgrade guide

  • Dialog replaces Modal and is built on the native <dialog> element; developers should follow the migration guidance.

    6.0.0upgrade guide

  • Display heading utilities .display-1 through .display-6 were removed with no single-class replacement; combine large font-size and weight utilities.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Dropdown was replaced by Menu; update component imports, data attributes, classes, events, and data keys to their Menu equivalents.

    6.0.0upgrade guide

  • The ineffective caret flag and caret mixins and variables were removed; add an icon to toggle markup if a caret is needed.

    6.0.0upgrade guide

  • The Sass flag was removed because dark mode is always compiled; control it at runtime with data-bs-theme or color-mode().

    6.0.0upgrade guide

  • The validation-icons Sass flag was removed.

    6.0.0upgrade guide

  • The Sass option and built-in validation background icons on form controls were removed.

    6.0.0upgrade guide

  • Floating UI replaces Popper.js for menu, tooltip, and popover positioning.

    6.0.0upgrade guide

  • Renames the popperConfig option on Tooltip, Popover, and Menu; update custom positioning configuration.

    6.0.0upgrade guide

  • A shared mixin replaces component-specific focus-box-shadow Sass variables; customize focus styles by overriding the focus-ring CSS custom properties.

    6.0.0upgrade guide

  • Individual font-weight Sass variables were replaced by a single map; customize body weight with --body-font-weight.

    6.0.0upgrade guide

  • A grid-based layout component was added for labels, controls, help text, and validation feedback, replacing checkgroup and radiogroup wrappers.

    6.0.0upgrade guide

  • Form labels now default to font-weight 500 and inherit font size.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • The .form-select class was removed; use .form-control on select elements.

    6.0.0upgrade guide

  • Helper text now uses --fg-2 for color, and its margin-top spacing is handled by the parent .form-field grid gap.

    6.0.0upgrade guide

  • The mixin signature changed from ($state, $color, $icon, ...) to ($state, $theme).

    6.0.0upgrade guide

  • The numeric .fs-1 through .fs-6 scale was replaced with ascending t-shirt size keys from .fs-xs through .fs-6xl.

    6.0.0upgrade guide

  • Renamed to $breakpoints.

    6.0.0upgrade guide

  • The class was removed because border-radius logic no longer branches on it.

    6.0.0upgrade guide

  • The Sass typography variables were removed; customize their equivalent CSS variables at runtime instead.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Bootstrap JavaScript no longer supports jQuery.

    6.0.0upgrade guide

  • The UMD entry point was removed.

    6.0.0upgrade guide

  • The .lead utility was removed with no exact one-class replacement.

    6.0.0upgrade guide

  • The lg breakpoint increases from 992px to 1024px; its container remains 960px.

    6.0.0upgrade guide

  • The line-height utility was renamed to .lh-md, and its CSS variable was renamed to --line-height-md.

    6.0.0upgrade guide

  • The link utility family was replaced by underline utilities; link opacity utilities have no dedicated replacement.

    6.0.0upgrade guide

  • The helper is no longer needed in v6.

    6.0.0upgrade guide

  • Horizontal list-group variants use container queries rather than viewport media queries and require a parent query container to respond.

    6.0.0upgrade guide

  • The mixin now exposes $prefix instead of $infix.

    6.0.0upgrade guide

  • The mixin now exposes $prefix instead of $infix.

    6.0.0upgrade guide

  • The Sass maps file was removed as part of the new color-mode and theming structure.

    6.0.0upgrade guide

  • Menu replaces Dropdown and uses the menu data attribute, Menu classes, events, and JavaScript export.

    6.0.0upgrade guide

  • Replaces .dropdown-item in Menu markup.

    6.0.0upgrade guide

  • Replaces .dropdown-menu; Menu markup uses a flat structure and no wrapper element is required.

    6.0.0upgrade guide

  • The long-deprecated ScrollSpy option is no longer parsed.

    6.0.0upgrade guide

  • Maximum-height and maximum-width utilities were renamed to .max-h-* and .max-w-*; minimum-size utilities were added.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Negative spacing utilities were reduced to -1 and -2 margins on inline start and end; the full negative margin family was removed.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • Bootstrap no longer supports Node Sass.

    6.0.0upgrade guide

  • The long-deprecated ScrollSpy option is no longer parsed.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • The Sass file was renamed to _placeholder.scss; update individual @use imports.

    6.0.0upgrade guide

  • Transition mixins now emit transitions only when this media query matches; browsers without support for the feature get no transition.

    6.0.0upgrade guide

  • The Sass variable was removed; CSS custom-property prefixing is now handled by PostCSS, so customize the prefix in PostCSS configuration.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Named border-radius tokens were replaced by a numeric 0–9 map that generates --radius-* tokens and --radius-pill.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • RFS and its mixins were removed; typography now uses fixed rem values and clamp() for responsive sizing.

    6.0.0upgrade guide

  • The v5 RGB CSS custom properties and rgba() patterns were removed.

    6.0.0upgrade guide

  • Rounded utilities now span .rounded-0 through .rounded-9 and map to changed radius values; shift class numbers to preserve v5 roundness.

    6.0.0upgrade guide

  • The form variables file was removed; validation styling now uses theme-derived CSS custom properties.

    6.0.0upgrade guide

  • Renamed to scss/mixins/_form-validation.scss, which contains only the form-validation-state-selector mixin.

    6.0.0upgrade guide

  • The mixin file was renamed to scss/mixins/_form-validation.scss, and validation state styling now lives in scss/forms/_validation.scss.

    6.0.0upgrade guide

  • The event now fires after the CSS transition finishes, rather than synchronously when show() is called.

    6.0.0upgrade guide

  • The event fires when the new slide settles into view; a multi-slide to() jump may emit intermediate slid events.

    6.0.0upgrade guide

  • The Sass file was renamed to _spinner.scss; update individual @use imports.

    6.0.0upgrade guide

  • Pseudo-state utility variants now use prefix syntax such as hover:opacity-50 instead of suffix syntax.

    6.0.0upgrade guide

  • The Sass subtract() function was removed; use calc() instead.

    6.0.0upgrade guide

  • The constructor now throws if the tab element has no tab-panel ancestor, rather than returning an inert instance.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Text color utilities were replaced by .fg-* utilities; new emphasis and contrast variants were added, and several color utility names changed.

    6.0.0upgrade guide

  • The themed background and contrasting foreground helpers were removed; compose the result from background and contrast foreground utilities.

    6.0.0upgrade guide

  • Composable theme classes replace per-component color variants and set semantic CSS custom properties consumed by components.

    6.0.0upgrade guide

  • ScrollSpy's default threshold changes from [0.1, 0.5, 1] to [0].

    6.0.0upgrade guide

  • Toast transitions are CSS-driven; the animation option and data-bs-animation are removed, and .toast-instant disables animation.

    6.0.0upgrade guide

  • isShown() returns false as soon as hide() is called rather than after the fade-out completes.

    6.0.0upgrade guide

  • Combined transition tokens were removed; components now expose separate property, duration, and timing tokens.

    6.0.0upgrade guide

  • Replaces the duration portion of v5's $transition-fade value, allowing duration to be tuned independently.

    6.0.0upgrade guide

  • Replaces the timing portion of v5's $transition-fade value, allowing easing to be tuned independently.

    6.0.0upgrade guide

  • The internal backdrop helper was removed; direct imports from bootstrap/js/src/util/ no longer work.

    6.0.0upgrade guide

  • The internal focus-trap helper was removed; direct imports from bootstrap/js/src/util/ no longer work.

    6.0.0upgrade guide

  • The internal scrollbar helper was removed; direct imports from bootstrap/js/src/util/ no longer work.

    6.0.0upgrade guide

  • Replaces $form-validation-states with a state-name-to-theme-key map.

    6.0.0upgrade guide

  • The validation Sass map replaces $form-validation-states with a simpler mapping from state names to theme keys.

    6.0.0upgrade guide

  • The dark-mode variables file was removed as part of the new color-mode and theming structure.

    6.0.0upgrade guide

  • Variables were consolidated into _config.scss, replacing the former variables file.

    6.0.0upgrade guide

  • Client-side validation no longer uses .was-validated or bare :valid and :invalid pseudo-classes.

    6.0.0upgrade guide

  • The UMD-created global namespace is no longer available; use explicit ESM imports for plugin APIs.

    6.0.0upgrade guide

  • The xl breakpoint increases from 1200px to 1280px and its container from 1140px to 1200px.

    6.0.0upgrade guide

  • Renamed to $zindex-menu.

    6.0.0upgrade guide

New APIs and options 64

  • Adds compact accordion styling and spaced, separate rounded-card layouts.

    6.0.0upgrade guide

  • Disables a component's keyframe animation on a single element.

    6.0.0upgrade guide

  • Adds a decorative pop animation helper that disables itself under prefers-reduced-motion.

    6.0.0upgrade guide

  • Adds a decorative shake animation helper that disables itself under prefers-reduced-motion.

    6.0.0upgrade guide

  • Adds avatars with size classes, status indicators, a subtle variant, and grouped avatars.

    6.0.0upgrade guide

  • A hairline border utility was added, backed by a .5px border-width token.

    6.0.0upgrade guide

  • The accordion panel now has its own transition token trio, replacing a hard-coded .2s duration.

    6.0.0upgrade guide

  • Lets developers add a property to dialog animation without rewriting the whole transition declaration.

    6.0.0upgrade guide

  • Lets developers add a property to drawer animation without rewriting the whole transition declaration.

    6.0.0upgrade guide

  • Lets developers add a property to menu animation without rewriting the whole transition declaration.

    6.0.0upgrade guide

  • The range plugin exposes the fill amount as a CSS variable from 0 to 1 and keeps it in sync.

    6.0.0upgrade guide

  • Lets developers add a property to toast animation without rewriting the whole transition declaration.

    6.0.0upgrade guide

  • Buttons and inputs share --btn-input-* sizing tokens; buttons also gain square icon-only and xs size classes.

    6.0.0upgrade guide

  • Adds an accessible control to pause or resume autoplay, or start autoplay on a static carousel.

    6.0.0upgrade guide

  • Adds a chip component for tags and tokens, plus interactive chip entry with the Chips JavaScript plugin and lifecycle events.

    6.0.0upgrade guide

  • Collapse lifecycle events follow the CSS transition, configurable with the collapse transition property, duration, and timing tokens.

    6.0.0upgrade guide

  • Configure the color space used for generated tint and shade scales.

    6.0.0upgrade guide

  • Color-scheme utilities set the color-scheme property on one element, useful when an element needs a different scheme from the page.

    6.0.0upgrade guide

  • A new Sass file holds colors separately.

    6.0.0upgrade guide

  • A new searchable select component built on Menu, with single- and multi-select support.

    6.0.0upgrade guide

  • A searchable, filterable select component was added with single- and multi-select modes, built on the Menu component.

    6.0.0upgrade guide

  • Container query utilities were added for inline-size and size containers.

    6.0.0upgrade guide

  • A shared token controls the duration of checkbox, radio, and switch mark animations.

    6.0.0upgrade guide

  • A shared token controls the timing of checkbox, radio, and switch mark animations.

    6.0.0upgrade guide

  • CSS layers are defined in _root.scss and applied across Bootstrap Sass files.

    6.0.0upgrade guide

  • Range components can optionally show a value bubble using this data attribute.

    6.0.0upgrade guide

  • Client-side validation opts in through data-bs-validate and uses :user-invalid after interaction; the value valid also enables success styling.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Set modal: false or data-bs-modal="false" to use a non-modal dialog.

    6.0.0upgrade guide

  • Adds slide, instant, static-backdrop, non-modal, and scrollable dialog variants.

    6.0.0upgrade guide

  • Dialog and Drawer share a base class for show/hide/toggle lifecycle, keyboard handling, backdrop clicks, and static-backdrop bounce.

    6.0.0upgrade guide

  • Display utilities gained flow-root and contents options.

    6.0.0upgrade guide

  • Adds a flush-to-edge drawer variant without inset, border radius, or shadow.

    6.0.0upgrade guide

  • Dynamic viewport utilities were added for full viewport height and width, including min-size variants.

    6.0.0upgrade guide

  • Adds a component for decorating form inputs with icons or text.

    6.0.0upgrade guide

  • A medium font-weight utility was added with value 500.

    6.0.0upgrade guide

  • A semibold font-weight utility was added with value 600.

    6.0.0upgrade guide

  • Grid utilities were added for column templates, spanning all columns, adopting parent subgrid tracks, and grid auto flow.

    6.0.0upgrade guide

  • Adds a reduced-motion-aware helper that raises elements with a transform and deeper shadow on hover and keyboard focus.

    6.0.0upgrade guide

  • This class marks elements that should be skipped by input-group adjoining border-radius rules.

    6.0.0upgrade guide

  • A root CSS token was added for runtime customization of the link underline offset.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Adds an accessible one-time-password input rendered as separate digit slots from a single input, with plugin events exposing event.value.

    6.0.0upgrade guide

  • An exports map provides explicit subpath access to source, dist, and Sass files.

    6.0.0upgrade guide

  • Add a .theme-{color} class to pagination to theme its links, hover, focus, and active page item.

    6.0.0upgrade guide

  • A place-items utility was added.

    6.0.0upgrade guide

  • Adds a class for scoping rich typography and .not-prose to opt out of prose styles inside a prose container.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Shadow utilities gained xs and xl sizes, layered multi-stop shadows, theme colors, and opacity controls.

    6.0.0upgrade guide

  • A fixed rem-based size map with keys 1–12 was added and merged into the width utility.

    6.0.0upgrade guide

  • A migration skill guides coding agents through the v5-to-v6 upgrade phase by phase.

    6.0.0upgrade guide

  • A CSS-only component for multi-step workflows, with .stepper-item and the .stepper-horizontal variant.

    6.0.0upgrade guide

  • Adds a JavaScript plugin for password strength metering with a strength-change event.

    6.0.0upgrade guide

  • Adds nested menu support through .submenu, with submenuTrigger choices of hover, click, or both, and a submenuDelay option.

    6.0.0upgrade guide

  • A new switch token controls the indicator width as switch internals move away from padding-based animation.

    6.0.0upgrade guide

  • The text-wrap utility gained a balance value.

    6.0.0upgrade guide

  • New text-size utilities set font-size and line-height together.

    6.0.0upgrade guide

  • Use .theme-reset on a nested subtree to return to component defaults.

    6.0.0upgrade guide

  • A new Sass file sets up global theming for color application.

    6.0.0upgrade guide

  • Adds a plugin for toggling element classes or attributes through data-bs-toggle="toggler", with toggle lifecycle events.

    6.0.0upgrade guide

  • Sets the ScrollSpy activation line as a percentage or pixel value from the top of the scroll root; its default is 12%.

    6.0.0upgrade guide

  • Disables a component's transition on a single element.

    6.0.0upgrade guide

  • A shared easing token is available for dialog, drawer, and menu overlays.

    6.0.0upgrade guide

  • Added as a peer dependency for the Datepicker component.

    6.0.0upgrade guide

Behavior and default changes 27

  • The bundled JavaScript includes Floating UI and Vanilla Calendar Pro; standalone JavaScript leaves these peer dependencies external.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • For the listed components, close() now returns a promise that resolves when the transition ends, including when the call does nothing.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Drawer dismiss triggers can resolve breakpoint-prefixed drawers without data-bs-target; existing targets continue to work.

    6.0.0upgrade guide

  • On DOMContentLoaded, Bootstrap adds aria-pressed to toggle buttons that lack it, deriving the value from .active; markup can set it earlier.

    6.0.0upgrade guide

  • Theme and config maps now merge partial @use ... with () overrides; set a key to null to remove it.

    6.0.0upgrade guide

  • A trigger in an open dialog can open another dialog and automatically close the current one.

    6.0.0upgrade guide

  • Drawers detect their placement and dismiss in the appropriate swipe direction on touch devices.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Form controls now always have a min-height and apply the focus ring on :focus-within as well as :focus-visible.

    6.0.0upgrade guide

  • Heading, paragraph, description-list, and legend typography now uses CSS variables instead of Sass variables, enabling runtime customization.

    6.0.0upgrade guide

  • For the listed components, hide() now returns a promise that resolves when the transition ends, including when the call does nothing.

    6.0.0upgrade guide

  • List inline-start padding is now driven by a spacer-scale CSS token rather than a hardcoded rem value.

    6.0.0upgrade guide

  • The toggler icon uses a CSS mask tinted with currentcolor instead of an embedded SVG background image.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • 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.0upgrade guide

  • Now defaults to null and acts as an advanced observer override that takes precedence over topMargin.

    6.0.0upgrade guide

  • ScrollSpy now uses deterministic IntersectionObserver activation-line detection instead of scroll-position polling.

    6.0.0upgrade guide

  • For the listed components, show() now returns a promise that resolves when the transition ends, including when the call does nothing.

    6.0.0upgrade guide

  • When enabled, clicking a link restores the URL hash and moves focus to the target section after scrolling settles.

    6.0.0upgrade guide

  • The spacer map expanded from keys 0–5 to 0–12, with finer increments and changed values for several existing keys.

    6.0.0upgrade guide

  • Spacing and border utilities retain their class names but now use CSS logical properties for RTL and writing-mode support.

    6.0.0upgrade guide

  • Switches now use a wrapper around the input, with the thumb absolutely positioned and animated using inset-inline-start.

    6.0.0upgrade guide

  • For the listed components, toggle() now returns a promise that resolves when the transition ends, including when the call does nothing.

    6.0.0upgrade guide

  • 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.0upgrade guide

  • Component JavaScript reads computed transition duration; zero-duration transitions resolve immediately and fire their event without waiting.

    6.0.0upgrade guide

Tooling 4

  • 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.0upgrade guide

  • CSS custom properties are prefixed automatically via this PostCSS tool during the build.

    6.0.0upgrade guide

  • Bootstrap's source build now uses Rolldown instead of Rollup and Babel; this matters only when building Bootstrap from source.

    6.0.0upgrade guide

  • The separate types package is no longer needed because Bootstrap ships built-in type declarations.

    6.0.0upgrade guide