NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3571 most downloaded on npm
The most popular front-end framework for developing responsive, mobile first projects on the web.
Last release 1 years ago
26 Aug 2025
Release timing varies
gaps range from 9 days to 1.1 years
Nearly every release is documented
notes for 20 of 20 stable releases
44 versions withdrawn
withdrawn after publishing
15 years old
68 releases · first in 2011
.glyphicon-btc and .glyphicon-xbt for .glyphicon-bitcoin
.badges inside .btn-group-xs.glyphicon-* aliases for other ISO 4217-ish currency codes:
.glyphicon-btc and .glyphicon-xbt for .glyphicon-bitcoin.glyphicon-jpy for .glyphicon-yen.glyphicon-rub for .glyphicon-rubleposition: relative.caret is the same size in Firefox.form-control-static doesn't change height when it's empty.form-group's margin-bottom.embed-responsive-* classesvisibility: hidden !important from .hidden class per upstream H5BP change.initialism text transformationrole="button" elementsvisibility properties where they are redundant to existing display properties$(document).tooltip({...}) without the selector option throw an error.disabled elements when using keyboard navigationTooltip#hide is calledTooltip.replaceArrow()'s isHorizontal parameter to isVertical for accuracytip() method in popover.js.collapsed class and aria-expanded attribute of all of a Collapse's trigger elements when showing/hiding the Collapse$(...).tooltip('hide') on an uninitialized tooltip/popover no longer unnecessarily initializes it$(...).collapse('hide') on a hidden uninitialized collapsible no longer shows it:hover on mobile browsers.center-blockdropup variation in dropdown docsreadonly and disabled inputsdestroy works for delegated tooltips/popoversrel="license" and update the target of footer license linksmain fieldOne column per quarter.
bcb90ef3a0affa6540d141733a073593011af064 / #15213: Update to Glyphicons v1.9
.media-object that was removed in #14801..media and .media-body styles that were removed in #14801.position: relative; to .dropup for proper menu placement.margins on default .dropdown-menu as .dropup .dropdown-menus..icon-prev and .icon-next in carousel controls with line-height: 1.border-radius on nested button groups with only one child..input-group-sm and .input-group-lg for temporal date inputs..disabled class to the .btn-styles mixin in the theme.@line-height-large from 1.33 to 1.3333333 to fix button sizing in Chrome for Windows 8.1..form-control-static..table-striped to work with tooltips on rows by using nth-of-type instead of nth-child.@link-hover-decoration for .btn-link to match default a:hover styles.color on <small> and .small elements within .panel-titles.$.fn.children instead of > in selector.wrap: false work again (fixes regression).affix-top was not getting applied due to padding.form-inline example in CSS docs.img alternative text.scope and th/td elements inside tables.href="#" from dismiss-on-next-click popover example<select>s can't be styled in all browsersshow/hide method qualifies as manual triggering.VERSION property of the jQuery plugins.overflow-y: hidden..input-group..form-inline & .form-horizontal work fine on non-<form>s too,.form-inline with visible <label>s.title and explanation for <abbr>, replaced use of sr-only text with aria-label for close buttons, wrapped sidebar navigation in a <nav>.sr-only text with aria-label for pagination "previous"/"next" links, callout and examples for various labelling methods for input groups, made main button in segmented buttons in input groups keyboard-focusable, split out/clarified multiple attribute on <select> elements.aria-describedby.<li role="separator">...</li>/dist/ files up-to-date. GitHub repo: https://github.com/twbs/gruntworkerFollow up patch release for bug fixes and documentation improvements.
Follow up patch release for bug fixes and documentation improvements.
.active item of <ul>-based list groups..list-group-item..jumbotron padding within .container-fluid to match .container.border-radius on top corners on dropdown menus in fixed bottom navbars.focusin event in addition to focus event.<input>s or <textarea>s.inputs and textareas.CONTRIBUTING.md.CONTRIBUTING.md.<footer> tag in examples..pull-left & .pull-right in .media docs..containers in Printing docs.event.relatedTarget + data-* example of how to vary modal content based on which button activated the modal..active class on one carousel slide.config.json file upload widget event listener.X-UA-Compatible now validates, so remove it from the list of ignored errors.[Be sure to read the blog post for more details!]
Be sure to read the blog post for more details!
@gray-base variable to make @gray-* variables work better together.@nav-open-link-hover-color variable.border-radius variables for small and large inputs.@progress-border-radius variable for progress bar.@link-hover-decoration variable.@cursor-disabled variable.<cite> element's font-style.content: ""; reset on <blockquote> elements as it can cause rendering bugs..img-responsive on SVG images from #10073 as it stretches all image types unnecessarily in IE<11.overflow: auto; on .table-responsive to prevent content breaking out of containers.background-color to <tr> elements instead of <th>/<td> within the .table-striped to avoid broken backgrounds on responsive tables.<caption>s.-webkit-overflow-scrolling on .table-responsive to prevent Safari from screwing up <body> width..table-responsive is used with .table-hovermin-height for radio/checkbox to their inner <label> given move from float to position: absolute; in v3.2.0..has-feedback icons when needed.#999..form-control-static work in inline forms as well.line-height bug with another hack just for IE11.touch-action: manipulation to buttons to remove the 300ms delay in IE10+.cursor: pointer; on .btn-link since we already set it on .btn.box-shadow on .btn-link.active to match the existing :active override.max-height on the .navbar-collapse content requires use of max-device-width, not max-width.:last-child overrides in navbars to :first-child to prevent elements from overriding one another.margins on .navbar-right to further fix #13325 and #13464.margin-bottom on .form-group:last-child in xs .navbar-form.translate3d from .navbar and switch to translate to prevent iOS dropdown rendering bugs and make the CSS more predictable..jumbotron corners within .container and .container-fluid.padding of .jumbotron so it doesn't interfere with the .container side padding.not-allowed cursor on disabled .list-group-items..panel-body with a .list-group.min-width styles for low percentages to avoid jumping progress..pull-left and .pull-right in .media. They are replaced by the new .media-left and .media-right classes.captions in .tables in panels.<video> element support in responsive embed.line-height properties in popovers. Moves the font-weight and line-height resets from .popover-title to the .popover, and adds font-size.@popover-arrow-color variable use the @popover-bg variable instead of regular #fff.0 as offsetTop or offsetBottomtransforms for supported devices.@navbar-*-link-active-bg variables in background gradients on active/open navbar items.text-shadow on badges in the themed buttons..glyphicon-eur alias for .glyphicon-euro.print.less from its H5BP source to consolidate styles and update source URL..focus to focused radio and checkbox buttons with the button plugin.affixed eventremote option of modalsnext or prev methods are called.children().detach() instead of .empty()..collapse('show') is called..alert for alert dismissal.collapsing class is removed).inDom check of tooltip cross document compatible..collapsing elements as actives..modal-open class after backdrop is hidden.getBoundingClientRect for width and height.pause: hover for non-touch browsers.translate instead of translate3d on modals to fix bug where sometimes modal wouldn't reappear in Safari.keyboard option to carousel.hide and hidden events for tabs.collapsed class on triggers even when manually invoked.role="tablist" to .nav-pills in examples to improve accessibility.role="listbox" to .carousel-inner to improve accessibility of Carousels.role="presentation" to tab <li>s to improve accessibility.role="tabpanel" to .tab-pane <div>s to improve accessibility.role="tabpanel" to .panel-collapse to improve accessibility.role="tablist" & aria-multiselectable="true" to accordion .panel-group.aria-describedby attribute from tootips later.pagination & .pager in <nav> so that AT can know they're for navigationaria-labelledby to accordion example to improve accessibilityrole="tab" to .panel-headings in accordion example to improve accessibilityvisibility styles to navbar and component animations (fade and collapse) for more screenreader friendly components.role="button" to a couple more non-link <a> buttonsaria-pressed to single toggle buttons.aria-expanded toggling to tabs plugin. Also adds aria-labelledBy, aria-controls, and aria-expanded to the tabs docs.gem install rouge before building.).navbar-brand for an image..collapsed default class to .navbar-collapse for consistency.input[type="password"] and width of floated elements.kbd after #13351.<button> elements over empty <a>s in dropdown docs.<input class="form-control">.:hover and scrolling.title & content options of tooltips & popovers when the option values are functions.<head> to end of <body>.placement function option of tooltip/popover.<nav> instead of <div> for .navbar in the docs.##bootstrap.fieldset[disabled] is somewhat broken in IE11.<select> cursor bug..collapsed class to accordion examples.https for Twitter links..alert-dismissible .close button usage restrictionstransform: translate3d(0, 0, 0) bug.col-6 classes in offcanvas example with .col-xs-6..jshintrc, .csscomb.json, etc.)watch task to also watch files in subdirectories of /less/.watch task regenerate bootstrap.js when JS source files are modified.grunt dist works when Bootstrap has been downloaded via Bower.copy task.bower.jsondist/js/npm.js so the npm module can be properly required.config.json files via drag-and-drop.[Be sure to read the blog post for the highlights.]
Be sure to read the blog post for the highlights.
block, inline-block, and inline elements..sr-only-focusable class to provide a focus state for skip nav links.translate3d in a few instances to reduce repainting when scrolling.html font-size using pixels instead of percentages..scale(x) and .scale(x, y) work..animation-fill-mode() mixin.mixins.less and reorganize things.mixins directory in our less folder that @imports all the mixins into mixins.less (for backward compatibility)..skew() mixin to use skewX(...) skewY(...) instead of old and deprecated skew(x,y) syntax.left values to auto instead of 0 in .col-*-push-0 and .col-*-pull-0 grid reset classes..container-fixed(). .make-row and .make-*-col mixins already had this ability, so this simply completes the package.width: 100% \9; to .img-responsive to prevent IE10 and below from distorting<svg> elements..clearfix is applied on .dl-horizontal dd by moving it out of the media query (Less doesn't respect :extend() within media queries)..lead font-weight for better readability on mobile.text-transform utility classes.@gray-light and .lead to meet accessibility guidelines..dl-horizontal's offset.white-space: nowrap from <code> elements in favor of default pre-wrap value for better rendering on narrow viewports.kbd elements..table-responsive styles to screen devices only so they're not cut off when printing from Chrome (Safari is fine, unknown for IE and FF)..table-responsive more mixin-friendly.overflow-x: auto; in responsive tables to hide the scrollbar when it's not needed.max-width: 100%; on <table>s and place it on .tables.line-height on all date inputs to ensure Mobile Safari and IE8+ display them correctly.display: table-cell so they are sized properly and appear on the same line as intended.required attribute. Applies to Firefox and Chrome..form-control-static to match height of standard form controls.bootstrap.less file to place glyphicons.less closer to the top of our imports to avoid specificity issues.padding on .radios and .checkboxs to their immediate <label>s to avoid the no-click deadzone caused by negative margin.z-index to the form control feedback icons so input groups don't render on top of them.max-width: 100%; to <label> elements so IE8 wraps text properly..form-control-feedback position when labels have the .sr-only class applied. This makes it super easy to use optional feedback icons with no visible label.position: absolute; and an IE8-9 hack to fix checkbox and radio line-height problems (and the vertical alignment) that were introduced after #13003..disabled class to set not-allowed cursor on disabled radio and checkbox labels..form-group-sm and .form-group-lg..form-control-static for proper vertical alignment..open button state in .button-variant() mixin to immediate children..opacity() mixin on button group inputs for IE8 support..btn-block.overflow: hidden; from .panel-group > .panel because it apparently serves no purpose and cuts off nested dropdown menus.@panel-heading-padding and @panel-footer-padding variables for panels..panel-bodys only.@list-group-link-hover-color variable to customize the text color when hovering on linked list items.<small>/.small within active list group headings.max-height on all .navbar-collapse elements, we only apply it to fixed top and bottom navbars. Also adds a shorter max-height for landscape views to ensure scrolling still works..btn-link colors in a navbars.text-align: left; to .dropdown-menu to avoid inheritance from any parent that might reset that property (e.g., our .modal-footer).white-space: nowrap; to .dropdown-header to match dropdown links.@border-radius-large variable.z-index values on tooltips and popovers to always be in front of modals..modal-footer. All spacing is addressed by padding on the .modal-body, and the .modal-header never had any margin on it.15px all around. Previously was 15px in the header and 20px everywhere else.trs and tbodys.background-color and background-image on disabled theme buttons.noConflict() mode not working in 3.0.x..noConflict() mode.shown event.scrollheight of <body> in IE10 and lower.scrollheight changes.maxScroll.removeBackdrop() call from hideModal() into backdrop()..focus() event aliases from modal and dropdown plugins.Modal.hide()<body> content to the left.modal.js.closed.bs.alert event after (instead of before) alert has been detached from the DOM.target option to the Affix plugin.affix-bottom positioning.viewport option, respect bounds of the viewport.document.body.scrollTop, because it's deprecated.role="tooltip" to tooltips & popovers by default to improve accessibility.append.aria-describedby attribute to tooltips and popovers to improve accessibility.item.direction & relatedTarget properties to slid.bs.carousel event.$.collapse() from overriding original dimensions of the collapsed element when uncollapsing.position: relative; for Scrollspy plugin.input[readonly]..container-fluid in the CSS overview docs.table tweak to browser support table.sitemap.xml and robots.txt files.role="alert" to alert examples to improve accessibility._data file.template option of tooltip & popover plugins.content parameter is called with the element as an argument..progress-* contextual classes in the migration guide.show() tooltips and popovers on hidden elements.direction & relatedTarget properties of Carousel events.:visible) scrollspy targets are ignored..close buttons in docs examples.role="menu" attrs to .dropdown-menus.config.json.utilities.less inclusion mandatorymargin-bottom from last <p> of .blog-footer in the Blog example.border-bottom from navbar in Dashboard example for easier customization of navbar content.box-shadow from the <body> to the .site-wrapper so it surrounds content of all lengths.build-raw-files Grunt task.package.json cleanup.docs.css to the CSSComb task.description field to bower.json/test-infra/ from Bower installs.bootstrap.less in Bower for easier installs.replace entry to composer.json.npm-shrinkwrap.json generationWe've started tracking unresolved browser bugs that currently impact Bootstrap's development in some way. We call it the Wall of browser bugs. We've also documented a few new bugs with this release:
max-width: 100%) in table cells. No other browsers are affected. See https://bugzilla.mozilla.org/show_bug.cgi?id=975632. Until a fix is shipped, add width: 100%; to your responsive images in table cells.display: table-cell;. See https://code.google.com/p/chromium/issues/detail?id=346051..btn-group, just like the button groups using <button> elements.General bug fix and documentation release.
General bug fix and documentation release.
.btn:focused styles to .btn.active:focused for improved accessibility.margin on .list-inlines so we don't override the padding-left on the first list item.@navbar-height instead on .navbar-brand to prevent element from being shorter than navbar height. Corrects a change introduced in v3.1.0.border-radius to tables when in panels for proper rounding with all background settings.:-moz-placeholder styles.carousel.less for the Glyphicon classes.:extend(.img-responsive) instead of mixin in thumbnail and carousel.-webkit-appearance: none;.-o-user-select.@blockquote-font-size variable for calculated text size.@popover-arrow-width for popover offsets.border colors to use computed values rather than static ones.scale mixin Sass compatibility issue.container-fluid.data-toggle="dropdown"..bs-docs-.csslint task./docs/dist/ to the clean task.csscomb task.grunt runs properly in Bower installations.Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →