Highlights

  • Added new offcanvas component for left, right, and bottom-aligned hidden content
  • Added four new snippet-based examples: headers, heroes, features, and sidebars
  • Updated the starter template example and a few other examples
  • Added new Sass docs section to nearly every page to show variables, mixins, loops, and keyframes from our source code
  • Added new .list-group-numbered variation to list groups that uses pseudo-elements for numbering list group items.
  • Removed explicit focus state suppression in Reboot
  • Improved carousel swipe behaviors for RTL
  • Updated accordions to improve transitions and borders when animating
  • Updated Sass customization docs to show how to properly override default variables
  • Fixed tooltips not appearing after rapid focus in and out
  • Fixed dropdown events not bubbling and forms inside dropdowns not propagating
  • Removed flip option from dropdowns
  • Disabled select now render consistently in Chrome
  • Button elements now grow in .nav-fill and .nav-justified
  • JavaScript plugin constructors now accept CSS selectors
  • De-duped the .border-0 utility
  • Fixed event handler removal in dropdown/carousel dispose
  • Added new Parcel guide to the docs
  • Added input focus blur Sass variable
  • Updated .browserslistrc to drop Android and add Safari/iOS 12 as the new minimum version (completing our two latest major releases guideline for supported browsers).

🚀 Features

  • #29017: Offcanvas as component
  • #32245: Allow constructors to accept a CSS selector
  • #33068: Add ol.list-group with pseudo-element numbers

🎨 CSS

  • #32747: Add Sass docs (variables, mixins, and loops) to most pages
  • #32925: Clear duplicated class border-0
  • #33029: Remove explicit suppression of focus outline
  • #33031: Add input focus blur variable
  • #33068: Add ol.list-group with pseudo-element numbers
  • #33127: Reset select:disabled opacity for Chrome
  • #33149: Revamp accordion borders to fix pixel jumping
  • #33154: Fix sibling card links in RTL
  • #33210: Properly set .list-group-item color
  • #33211: Validated controls border in input-group
  • #33213: Buttons should grow in nav-fill & nav-justified
  • #33325: Remove duplicate text-decoration style for abbr[title]
  • #33426: Fix flush accordion styles

️ JavaScript

  • #30621: modal: don't add margin & padding when sticky is not full width
  • #32180: refactor: use a Map instead of an Object in dom/data
  • #32245: Allow constructors to accept a CSS selector
  • #32446: util: change isRTL to a function
  • #32913: Fix carousel RTL and refactor code, fix rtl swipe issues
  • #33000: Fix event handler removal in dropdown/carousel dispose
  • #33056: modal: move common code to a new isAnimated method
  • #33120: Remove the default positioning from .dropup
  • #33136: Adjust SAFE_URL_PATTERN regex for use with test method of regexes.
  • #33198: Dropdown — Drop flip option
  • #33248: Accept data-bs-body option in the configuration object as well
  • #33257: Dynamic tab should not show when triggered on disabled element
  • #33261: Change the name of the Offcanvas constructor
  • #33289: fix tooltips disappearing after trying to interact during their fade out animation
  • #33382: Allow offcanvas to be initialized in open state
  • #33385: Use more safe check for 'isDisabled' helper
  • #33442: Allow data-toggle="dropdown" and form click events to bubble

📖 Docs

  • #30909: Add Parcel Bundler doc
  • #32747: Add Sass docs (variables, mixins, and loops) to most pages
  • #33006: docs: add bootstrap5 zh-tw in translations
  • #33049: Docs improvements after beta2
  • #33081: Fix typo in nav-tabs docs
  • #33123: Clarify docs around .navbar-brand
  • #33207: Add an example of v4's media component in the flex utils docs
  • #33246: Update the "Nonblocking files" section in the docs
  • #33267: Grammatically update the doc
  • #33300: Update modal's show method to accept relatedTarget as an argument
  • #33301: Add example: toggle modal dialogs
  • #33322: Fix Flex utilities documentation to add vertical space in example
  • #33332: Mention .no-gutters removal in migration guide
  • #33333: Fixes some copy around inline forms
  • #33380: Utilities to Utilities API (Borders doc page)
  • #33386: Update Customize > Sass docs to properly place default variable overrides
  • #33430: Add link to new Parcel guide in starter template
  • #33443: offcanvas-navbar: add missing redirect

🏭 Tests

  • #32662: Unit tests for Popper V2
  • #33045: Simplify karma.conf.js
  • #33060: Add the missing expectations for touch events
  • #33090: Add tests for DATA_KEY
  • #33167: visual tests: add missing base-component dist file
  • #33398: BrowserStack: test on iPhone 12

🧰 Misc

  • #33067: CI: skip release drafter if we are not on our repo
  • #33100: linkinator: replace --silent with --verbosity
  • #33129: Rename _gh_pages to _site.
  • #33130: CodeQL: skip dependabot PRs too
  • #33148: Improve change-version script
  • #33192: Bundlewatch: stop ignoring dependabot branches
  • #33326: Delete the unused build/ship.sh
  • #33329: @rollup/plugin-replace: specify preventAssignment: true
  • #33397: .browserslistrc: remove the Edge workaround.
  • #33399: .browserslistrc: remove Android and make Safari/iOS 12 the minimum
  • #33401: README.md: use shields.io for the tests badge too

📦 Dependencies

Updated numerous devDependencies https://github.com/twbs/bootstrap/pulls?q=is%3Apr+is%3Aclosed+label%3Adependencies+project%3Atwbs%2Fbootstrap%2F34