Bootstrap Icons v1.10.0 is here with nearly 150 new icons. This release includes tons of new variants for person, building, and database icons, plus new brands, rockets, road signs, globes, and many more. We’re now at over 1,900 icons!
150 new icons
Here’s a quick look at all the new icons in v1.10.0:
Some highlights for the new icons include:
22 new person icons
26 new house icons
24 new building icons, including a renamed building to buildings
22 new database icons
24 new street sign icons
New globe icons
New EV, taxi, bus, and scooter transportation icons
New rockets
and more!
We also fixed the fill rules for several some issues across the docs, including:
De-duped category names Brand and Brands to be just Brand
Updated tags on several icon pages for additional aliases
Looking for more new icons? Head to the issue tracker to check for open requests or submit a new one.
The Figma file is now published to the Figma Community! It’s the same Bootstrap Icons Figma file you’ve seen from previous releases, just a little more accessible to those using the app.
Bootstrap v5.2.1 is here with fixes from our latest minor release, v5.2. As a patch release, these changes are limited to bug fixes, documentation updates, and some dependency updates.
We’ve also continued to iterate on a few other projects to help folks get up and running with Bootstrap with npm, other JS frameworks, and various build tools. Keep reading to learn more.
Key changes
We’ve updated our calc() functions to work around an apparent bug in postcss-values-parser that prevented our source Sass files from compiling properly when building with React and PostCSS. The fix was to reverse the order of our multiplication inside calc() functions. Be aware you may need to make similar modifications depending on your own customizations.
We’ve also addressed some longstanding issues around button focus and active styling, in particular for checkbox and radio buttons. On mobile devices, input-based buttons have trouble shedding their focus styles. This has been resolved in v5.2.1 with a change from :focus to :focus-visible for our .btns. Now, checkbox and radio buttons no longer change their background-color on :focus-visible and they receive no :hover styling. Regular .btns still have their familiar hover and focus styles.
We debated not including the button focus change in v5.2.1, but felt it was important enough to close several bugs. Let us know what you think and we’ll continue to refine our implementation.
Highlights
In addition to the changes above, we’ve fixed bugs across several components:
Accordion
Update color value to use the $accordion-button-color Sass variable instead of our color contrast function
Buttons
Added a transparent default hover border color CSS variable for buttons to fix a visual regression
.btn-link no longer has a gradient when $enable-gradients is set to true
Forms
Input groups have updated z-index values to ensure proper rendering of validated form fields
Floating labels now reset their text-align to ensure consistent styling
List Groups
Horizontal list groups with only one child now render the correct border-radius
Modified the list-group-item selectors to better support nested imports of Bootstrap’s CSS
Modals
Updated event listeners to ignore clicks on scrollbar clicks, clicks that start inside .modal-dialog but end outside it, and respond to clicks that start and end outside .modal-dialog
Reverted some tooltip plugin updates to prevent issues with selector, dynamic content, and disposed tooltips using title
Fixed trigger: "manual" showing and immediately hiding when calling toggle()
Dependencies
Updated Autoprefixer to fix warnings of the color-adjust property (thanks to @julien-deramond on our team for reporting an issue upstream here)
Docs
Searching our docs on mobile has been improved with the search field now always visible on responsive, narrow viewports
Removed links to and mentions of Slack from across the codebase, as we intend to shutter Slack in favor of GitHub Discussions
Reintroduced proper outline styles for docs code samples and buttons when :not(:focus-visible)
Farewell, Slack!
As mentioned over a month ago, we made the decision to close down our community Slack channel. Slack isn’t great at managing a large scale community and it’s prohibitively expensive as well for a community the size of ours (the Slack was over 45,000 people!). Instead of using Slack or similar tool, we’re encouraging folks to use our Discussions tab on GitHub.
Make sure to checkout (pun intended!) our latest project, the twbs/examples repository! The examples project includes functional demos for all sorts of environments and JS frameworks, with more planned! You can even open every example in StackBlitz and edit them in the browser.
Bootstrap Icons font - Import and compile Sass, Stylelint, PurgeCSS, and our icon font
Have an idea for a new starter example? Feel free to open an issue or pull request!
v4 starter project
We’ve shipped a v2.0.0 update to the twbs/bootstrap-npm-starter project. This release includes Bootstrap v4.6.2, Bootstrap Icons v1.9.1, a new live reload feature for local development, and several dependency updates. This project will remain dedicated to Bootstrap 4 while our twbs/examples repo will focus on v5 and future major releases.
Bootstrap v5.2.0 is finally stable! We’ve ironed out more bugs, improved more documentation, written new guides and built out new functional environment examples, and so much more!
Keep reading for highlights from both beta and stable releases.
Docs redesign
As previewed in our beta release, the docs have been redesigned! It starts with our new homepage where we have a more complete representation of Bootstrap’s features and an updated design.
The docs sidebar navigation has been overhauled to have always expanded groups for easier browsing, a brand new DocSearch experience with search history, and new responsive offcanvas drawers for both sidebar and navbar on mobile.
We even updated our version picker in the navbar to cross-link between minor releases!
Updated buttons and inputs
With our docs redesign, we refreshed buttons and inputs with modified padding and border-radius. Here’s a look at the before and after of our buttons:
Tons of new CSS variables
Nearly all our components now have CSS variables for real real-time customization, easier theming, and (soon) color mode support starting with dark mode. You can see what CSS variables are available on every docs page, like our buttons:
Values for virtually every CSS variables are assigned via Sass variable, so customization via CSS and Sass are both well supported. Also included for several components are examples of customizing via CSS variables.
New _maps.scss
Bootstrap v5.2.0 introduced a new Sass file with _maps.scss that pulls out several Sass maps from _variables.scss to fix an issue where updates to an original map were not applied to secondary maps that extend it. It’s not ideal, but it resolves a longstanding issue for folks when working with customized maps.
For example, updates to $theme-colors were not being applied to other maps that relied on $theme-colors (like the $utilities-colors and more), which created broken customization workflows. To summarize the problem, Sass has a limitation where once a default variable or map has been used, it cannot be updated. There’s a similar shortcoming with CSS variables when they’re used to compose other CSS variables.
This is also why variable customizations in Bootstrap have to come after @import "functions";, but before @import "variables"; and the rest of our import stack. The same applies to Sass maps—you must override the defaults before they get used. The following maps have been moved to the new _maps.scss:
$theme-colors-rgb
$utilities-colors
$utilities-text
$utilities-text-colors
$utilities-bg
$utilities-bg-colors
$negative-spacers
$gutters
Your custom Bootstrap CSS builds should now look like this with a separate maps import.
// Functions come first
@import "functions";
// Optional variable overrides here
+ $custom-color: #df711b;
+ $custom-theme-colors: (
+ "custom": $custom-color
+ );
// Variables come next
@import "variables";
+ // Optional Sass map overrides here
+ $theme-colors: map-merge($theme-colors, $custom-theme-colors);
+
+ // Followed by our default maps
+ @import "maps";
+
// Rest of our imports
@import "mixins";
@import "utilities";
@import "root";
@import "reboot";
// etc
New helpers and utilities
We’ve updated our helpers and utilities to make it easier to quickly build and modify custom components:
Added new .text-bg-{color} helpers. Instead of setting individual .text-* and .bg-* utilities, you can now use the .text-bg-* helpers to set a background-color with contrasting foreground color.
Expanded border-radius utilities to include two new sizes, .rounded-4 and .rounded-5, for more options.
Expect more improvements here as v5’s development continues.
Responsive offcanvas
Our Offcanvas component now has responsive variations. The original .offcanvas class remains unchanged—it hides content across all viewports. To make it responsive, change that .offcanvas class to any .offcanvas-{sm|md|lg|xl|xxl} class.
In addition, we’ve turned every one of those guides into a fully functioning example in our new twbs/examples repo. We’ve even added a couple more examples to the repo, with plans to create even more.
Each guide matches up to a new example in that repo, and nearly all of them can be immediately available in StackBlitz. Now you don’t even need to have a development environment configured on your computer to get started with Bootstrap.
And did we mention that nearly all our code snippets now have an open in StackBlitz button?
And more!
Introduced new $enable-container-classes option. — Now when opting into the experimental CSS Grid layout, .container-* classes will still be compiled, unless this option is set to false. Containers also now keep their gutter values.
Thicker table dividers are now opt-in. — We’ve removed the thicker and more difficult to override border between table groups and moved it to an optional class you can apply, .table-group-divider. See the table docs for an example.
Scrollspy has been rewritten to use the Intersection Observer API, which means you no longer need relative parent wrappers, deprecates offset config, and more. Look for your Scrollspy implementations to be more accurate and consistent in their nav highlighting.
Added .form-check-reverse modifier to flip the order of labels and associated checkboxes/radios.
Added striped columns support to tables via the new .table-striped-columns class.
After several months, we’ve finally shipped Bootstrap v4.6.2, one of our last releases for the v4. It’s a bit of a maintenance patch featuring bug fixes, dependency updates, and some docs updates.
First, we’ve added an example to our Collapse plugin docs to show how to use horizontal collapsing. This has long been possible via our JS, but we never had an official class to utilize it.
Second, we’ve replaced the deprecated color-adjust with print-color-adjust in our Sass files as part of the Autoprefixer v10.4.6 issues. This should quiet the issues folks have seen from that dependency change. If you’re using our distribution CSS files, like bootstrap.min.css, you may still see the warning.
Beyond that, we’ve addressed a few other things:
Tweaked the size of small and .small to compute to a whole pixel value (was 12.8px and now is 14px).
Improved accessibility around our dropdowns, color contrast, and role attributes.
Fixed some broken links to supporting documentation.
From here, we don’t expect to ship any meaningful updates to v4.6.x other than major security or dependency updates. Everything will focus on v5 and beyond after this release, starting with the stable release of v5.2.0. Bootstrap 4 will officially end of life January 1, 2023, though you’re obviously welcome to continue using it longer than that. Follow our release repo to stay in the loop on release maintenance status.