2014-12-17 05:31:36 +01:00
---
2015-08-15 07:45:55 +02:00
layout: docs
2019-05-03 19:52:58 +02:00
title: Migrating to v5
description: Track and review changes to the Bootstrap source files, documentation, and components to help you migrate from v4 to v5.
2015-08-06 02:47:45 +02:00
group: migration
2019-01-08 17:33:28 +01:00
aliases: "/migration/"
2017-05-29 21:01:04 +02:00
toc: true
2014-12-17 05:31:36 +01:00
---
2019-05-03 19:52:58 +02:00
## Browser support
2018-01-18 02:29:28 +01:00
2019-05-03 19:52:58 +02:00
See the browser and devices page for details on what is currently supported in Bootstrap 5. Since v4, here's what's changed to our browser support:
2018-01-18 02:29:28 +01:00
2019-05-03 19:52:58 +02:00
- Dropped support for Internet Explorer NN
- Dropped support for Firefox NN - MM
- Dropped support for Safari NN
- Dropped support for iOS Safari NN
- Dropped support for Chrome NN
- Dropped support for Android NN
2018-01-18 02:29:28 +01:00
2019-05-03 19:52:58 +02:00
## Sass
2018-01-18 02:29:28 +01:00
2019-05-03 19:52:58 +02:00
Changes to our source Sass files and compiled CSS.
2018-01-18 02:29:28 +01:00
2018-09-18 01:10:07 +02:00
- Removed `hover` , `hover-focus` , `plain-hover-focus` , and `hover-focus-active` mixins. Use regular CSS syntax for these moving forward. [See #28267 ](https://github.com/twbs/bootstrap/pull/28267 ).
2019-08-21 10:33:26 +02:00
- Remove previously deprecated mixins
2019-05-03 19:52:58 +02:00
- `float()`
- `form-control-mixin()`
2019-08-21 10:33:26 +02:00
- `nav-divider()`
2019-05-03 19:52:58 +02:00
- `retina-img()`
- `text-hide()` (also dropped the associated utility class, `.text-hide` )
- `visibility()`
2019-12-14 14:27:59 +01:00
- `form-control-focus()`
2019-05-03 19:52:58 +02:00
- **Todo:** New variables?
- **Todo:** Rearrange forms source files (under `scss/forms/` )
- **Todo:** Rearrange grid source files (under `scss/grid/` )
2019-05-09 07:57:59 +02:00
- Removed print styles and `$enable-print-styles` variable. Print display classes, however, have remained intact. [See #28339 ](https://github.com/twbs/bootstrap/pull/28339 ).
2019-07-25 09:41:13 +02:00
- Dropped `color()` , `theme-color()` & `gray()` functions in favor of variables. [See #29083 ](https://github.com/twbs/bootstrap/pull/29083 )
- The `theme-color-level()` function is renamed to `color-level()` and now accepts any color you want instead of only `$theme-color` colors. [See #29083 ](https://github.com/twbs/bootstrap/pull/29083 )
2019-08-30 09:42:41 +02:00
- Line heights are dropped from several components to simplify our codebase. The `button-size()` and `pagination-size()` do not accept line height parameters anymore. [See #29271 ](https://github.com/twbs/bootstrap/pull/29271 )
2019-10-12 10:21:22 +02:00
- The `button-variant()` mixin now accepts 3 optional color parameters, for each button state, to override the color provided by `color-yiq()` . By default, these parameters will find which color provides more contrast against the button state's background color with `color-yiq()` .
- The `button-outline-variant()` mixin now accepts an additional argument, `$active-color` , for setting the button's active state text color. By default, this parameter will find which color provides more contrast against the button's active background color with `color-yiq()` .
2017-10-22 21:22:22 +02:00
2019-05-03 19:52:58 +02:00
## JavaScript
2017-10-22 21:22:22 +02:00
2019-05-03 19:52:58 +02:00
Changes to our source and compiled JavaScript files.
2017-12-23 01:13:01 +01:00
2019-05-03 19:52:58 +02:00
- Dropped jQuery dependency and rewrote plugins to be in regular JavaScript.
2019-07-29 11:17:42 +02:00
- Removed underscore from public static methods like `_getInstance()` → `getInstance()` .
2017-12-23 01:13:01 +01:00
2019-05-03 19:52:58 +02:00
## Grid and layout
2017-12-23 01:13:01 +01:00
2019-05-03 19:52:58 +02:00
Changes to any layout tools and our grid system.
2017-12-23 01:13:01 +01:00
2019-05-08 20:45:24 +02:00
- Dropped `.media` component as it can be built with utility classes. [See #28265 ](https://github.com/twbs/bootstrap/pull/28265 ).
2019-05-03 19:52:58 +02:00
- **Todo:** Remove `position: relative` from grid columns
- **Todo:** Integrate CSS grid into our grid system
2017-12-23 01:13:01 +01:00
2019-05-03 19:52:58 +02:00
## Content, Reboot, etc
2017-12-23 01:13:01 +01:00
2019-05-03 19:52:58 +02:00
Changes to Reboot, typography, tables, and more.
2017-12-23 01:13:01 +01:00
2019-11-01 11:22:29 +01:00
- [RFS ]({{< docsref "/getting-started/rfs" >}} ) enabled for automated font size rescaling. [See #29152 ](https://github.com/twbs/bootstrap/pull/29152 )
2019-07-15 18:31:50 +02:00
- Reset default horizontal `padding-left` on `<ul>` and `<ol>` elements from browser default `40px` to `2rem` .
2019-07-15 18:53:10 +02:00
- Simplified table styles (no more 2px border on `thead > th` elements) and tightened cell padding.
2019-07-25 18:12:14 +02:00
- Dropped `.pre-scrollable` class. [See #29135 ](https://github.com/twbs/bootstrap/pull/29135 )
2019-08-17 20:19:00 +02:00
- `.text-*` utilities do not add hover and focus states to links anymore. `.link-*` helper classes can be used instead. [See #29267 ](https://github.com/twbs/bootstrap/pull/29267 )
2017-10-22 21:22:22 +02:00
2019-05-03 19:52:58 +02:00
## Forms
2017-12-31 01:38:09 +01:00
v5: Forms update (#28450)
* Initial spike of consolidated form checks
* Stub out forms rearrangement
- Prepping to drop non-custom file and range inputs
- Prepping to merge custom and native checks and radios (with switches)
- Prepping to merge custom select with form select
- Moving docs arround so forms has it's own area given volume of CSS
* Move input group Sass file to forms subdir
* Start to split and move the docs around
* Simpler imports
* Copyediting
* delete overview file
* Remove commented out code
* remove the custom-forms import
* rewrite flex-check as form-check, replace all custom properties
* Remove old forms doc
* stub out new subpage link section
* update migration guide
* Update nav, forms overview in page nav, and descriptions
* fix check bg position
* fix margin-top calculation
* rename .custom-select to .form-select
* Update validation styles for new checks
* add some vertical margin, fix inline checks
* fix docs examples
* better way to do this contents stuff, redo the toc while i'm at it
* page restyle for docs while here
* un-callout that, edit text
* redo padding on toc
* fix toc
* start to cleanup checks docs
* Rewrite Markdown tables into HTML
* Redesign tables, redo their docs
* Replace Open Iconic icons with custom Bootstrap icons
* Redesign the docs navbar, add a subheader, redo the sidebar
* Redesign docs homepage a bit
* Simplify table style overrides for docs tables
* Simplify docs typography for page titles and reading line length
* Stub out icons page
* Part of sidebar update, remove migration from nav.yml
* Move toc CSS to separate partial
* Change appearance of overview page
* fix sidebar arrow direction
* Add footer to docs layout
* Update descriptions
* Drop the .form-group class for margin utilities
* Remove lingering form-group-margin-bottom var
* improve footer spacing
* add headings to range page
* uncomment form range css
* Rename .custom-range to .form-range
* Drop unused docs var
* Uncomment the comment
* Remove unused variable
* Fix radio image sizing
* Reboot update: reset horizontal ul and ol padding
* de-dupe IDs
* tweak toc styles
* nvm, fix dropdown versions stuff
* remove sidebar nav toggle for now
* broken html
* fix more broken html, move css
* scss linting
* comment out broken helper docs
* scope styles
* scope styles
* Fixes #25540 and fixes #26407 for v5 only
* Update sidebar once more
* Match new sidenav order
* fix syntax error
* Rename custom-file to form-file, update paths, update migration docs for previous changes in #28696
* rename back
* fix size and alignment
* rename that back too
2019-07-12 23:52:33 +02:00
- Rearranged form documentation under its own top-level section.
- Split out old Forms page into several subpages
- Moved input groups docs under new Forms section
- Rearranged source Sass files under `scss/forms/` , including moving over input group styles.
- Combined native and custom checkboxes and radios into single `.form-check` class.
- New checks support sizing via `em` /`font-size` or explicit modifier classes now.
2019-07-15 18:43:59 +02:00
- New checks now appear larger by default for improved usability.
v5: Forms update (#28450)
* Initial spike of consolidated form checks
* Stub out forms rearrangement
- Prepping to drop non-custom file and range inputs
- Prepping to merge custom and native checks and radios (with switches)
- Prepping to merge custom select with form select
- Moving docs arround so forms has it's own area given volume of CSS
* Move input group Sass file to forms subdir
* Start to split and move the docs around
* Simpler imports
* Copyediting
* delete overview file
* Remove commented out code
* remove the custom-forms import
* rewrite flex-check as form-check, replace all custom properties
* Remove old forms doc
* stub out new subpage link section
* update migration guide
* Update nav, forms overview in page nav, and descriptions
* fix check bg position
* fix margin-top calculation
* rename .custom-select to .form-select
* Update validation styles for new checks
* add some vertical margin, fix inline checks
* fix docs examples
* better way to do this contents stuff, redo the toc while i'm at it
* page restyle for docs while here
* un-callout that, edit text
* redo padding on toc
* fix toc
* start to cleanup checks docs
* Rewrite Markdown tables into HTML
* Redesign tables, redo their docs
* Replace Open Iconic icons with custom Bootstrap icons
* Redesign the docs navbar, add a subheader, redo the sidebar
* Redesign docs homepage a bit
* Simplify table style overrides for docs tables
* Simplify docs typography for page titles and reading line length
* Stub out icons page
* Part of sidebar update, remove migration from nav.yml
* Move toc CSS to separate partial
* Change appearance of overview page
* fix sidebar arrow direction
* Add footer to docs layout
* Update descriptions
* Drop the .form-group class for margin utilities
* Remove lingering form-group-margin-bottom var
* improve footer spacing
* add headings to range page
* uncomment form range css
* Rename .custom-range to .form-range
* Drop unused docs var
* Uncomment the comment
* Remove unused variable
* Fix radio image sizing
* Reboot update: reset horizontal ul and ol padding
* de-dupe IDs
* tweak toc styles
* nvm, fix dropdown versions stuff
* remove sidebar nav toggle for now
* broken html
* fix more broken html, move css
* scss linting
* comment out broken helper docs
* scope styles
* scope styles
* Fixes #25540 and fixes #26407 for v5 only
* Update sidebar once more
* Match new sidenav order
* fix syntax error
* Rename custom-file to form-file, update paths, update migration docs for previous changes in #28696
* rename back
* fix size and alignment
* rename that back too
2019-07-12 23:52:33 +02:00
- Dropped `.custom-control` and associated classes.
2019-07-15 18:43:59 +02:00
- Renamed most `$custom-control` variables to `$form-control` ones.
v5: Forms update (#28450)
* Initial spike of consolidated form checks
* Stub out forms rearrangement
- Prepping to drop non-custom file and range inputs
- Prepping to merge custom and native checks and radios (with switches)
- Prepping to merge custom select with form select
- Moving docs arround so forms has it's own area given volume of CSS
* Move input group Sass file to forms subdir
* Start to split and move the docs around
* Simpler imports
* Copyediting
* delete overview file
* Remove commented out code
* remove the custom-forms import
* rewrite flex-check as form-check, replace all custom properties
* Remove old forms doc
* stub out new subpage link section
* update migration guide
* Update nav, forms overview in page nav, and descriptions
* fix check bg position
* fix margin-top calculation
* rename .custom-select to .form-select
* Update validation styles for new checks
* add some vertical margin, fix inline checks
* fix docs examples
* better way to do this contents stuff, redo the toc while i'm at it
* page restyle for docs while here
* un-callout that, edit text
* redo padding on toc
* fix toc
* start to cleanup checks docs
* Rewrite Markdown tables into HTML
* Redesign tables, redo their docs
* Replace Open Iconic icons with custom Bootstrap icons
* Redesign the docs navbar, add a subheader, redo the sidebar
* Redesign docs homepage a bit
* Simplify table style overrides for docs tables
* Simplify docs typography for page titles and reading line length
* Stub out icons page
* Part of sidebar update, remove migration from nav.yml
* Move toc CSS to separate partial
* Change appearance of overview page
* fix sidebar arrow direction
* Add footer to docs layout
* Update descriptions
* Drop the .form-group class for margin utilities
* Remove lingering form-group-margin-bottom var
* improve footer spacing
* add headings to range page
* uncomment form range css
* Rename .custom-range to .form-range
* Drop unused docs var
* Uncomment the comment
* Remove unused variable
* Fix radio image sizing
* Reboot update: reset horizontal ul and ol padding
* de-dupe IDs
* tweak toc styles
* nvm, fix dropdown versions stuff
* remove sidebar nav toggle for now
* broken html
* fix more broken html, move css
* scss linting
* comment out broken helper docs
* scope styles
* scope styles
* Fixes #25540 and fixes #26407 for v5 only
* Update sidebar once more
* Match new sidenav order
* fix syntax error
* Rename custom-file to form-file, update paths, update migration docs for previous changes in #28696
* rename back
* fix size and alignment
* rename that back too
2019-07-12 23:52:33 +02:00
- Combined native and custom selects into `.form-select` .
- Dropped `.custom-select` and associated classes.
2019-07-15 18:43:59 +02:00
- Renamed most `$custom-select` variables to `$form-select` ones.
- Updated file input component with same overall design, but improved HTML.
- Refactored `.form-file` markup to resolve some visual bugs while allowing translation and button text changes via HTML instead of CSS.
- Dropped native `.form-control-file` and `.form-control-range` components entirely.
- Renamed `.custom-file` to `.form-file` (including variables).
- Added support for `:focus` and `:disabled` styles.
v5: Forms update (#28450)
* Initial spike of consolidated form checks
* Stub out forms rearrangement
- Prepping to drop non-custom file and range inputs
- Prepping to merge custom and native checks and radios (with switches)
- Prepping to merge custom select with form select
- Moving docs arround so forms has it's own area given volume of CSS
* Move input group Sass file to forms subdir
* Start to split and move the docs around
* Simpler imports
* Copyediting
* delete overview file
* Remove commented out code
* remove the custom-forms import
* rewrite flex-check as form-check, replace all custom properties
* Remove old forms doc
* stub out new subpage link section
* update migration guide
* Update nav, forms overview in page nav, and descriptions
* fix check bg position
* fix margin-top calculation
* rename .custom-select to .form-select
* Update validation styles for new checks
* add some vertical margin, fix inline checks
* fix docs examples
* better way to do this contents stuff, redo the toc while i'm at it
* page restyle for docs while here
* un-callout that, edit text
* redo padding on toc
* fix toc
* start to cleanup checks docs
* Rewrite Markdown tables into HTML
* Redesign tables, redo their docs
* Replace Open Iconic icons with custom Bootstrap icons
* Redesign the docs navbar, add a subheader, redo the sidebar
* Redesign docs homepage a bit
* Simplify table style overrides for docs tables
* Simplify docs typography for page titles and reading line length
* Stub out icons page
* Part of sidebar update, remove migration from nav.yml
* Move toc CSS to separate partial
* Change appearance of overview page
* fix sidebar arrow direction
* Add footer to docs layout
* Update descriptions
* Drop the .form-group class for margin utilities
* Remove lingering form-group-margin-bottom var
* improve footer spacing
* add headings to range page
* uncomment form range css
* Rename .custom-range to .form-range
* Drop unused docs var
* Uncomment the comment
* Remove unused variable
* Fix radio image sizing
* Reboot update: reset horizontal ul and ol padding
* de-dupe IDs
* tweak toc styles
* nvm, fix dropdown versions stuff
* remove sidebar nav toggle for now
* broken html
* fix more broken html, move css
* scss linting
* comment out broken helper docs
* scope styles
* scope styles
* Fixes #25540 and fixes #26407 for v5 only
* Update sidebar once more
* Match new sidenav order
* fix syntax error
* Rename custom-file to form-file, update paths, update migration docs for previous changes in #28696
* rename back
* fix size and alignment
* rename that back too
2019-07-12 23:52:33 +02:00
- Renamed `.custom-range` to `.form-range` (including variables).
- Dropped `.form-group` for margin utilities (we've replaced our docs examples with `.mb-3` ).
- Dropped support for `.form-control-plaintext` inside `.input-group` s.
2017-12-23 00:29:49 +01:00
2019-05-03 19:52:58 +02:00
## Components
2017-12-23 00:29:49 +01:00
2019-05-03 19:52:58 +02:00
### Alerts
2017-12-23 00:29:49 +01:00
2019-05-03 19:52:58 +02:00
- **Todo:** Remove auto-darkening of `<hr>` elements in `.alert-*` class variants. `<hr>` s use `rgba()` for their color, so these should naturally blend anyway.
2017-12-23 00:29:49 +01:00
2019-05-03 19:52:58 +02:00
### Badges
2017-09-26 13:50:35 +02:00
2019-05-03 19:52:58 +02:00
Badges were overhauled to better differentiate themselves from buttons and to better utilize utility classes.
2017-08-20 22:54:12 +02:00
2019-05-03 19:52:58 +02:00
- **Todo:** Removed and replaced `.badge` modifier classes with background utility classes (e.g., use `.bg-primary` instead of `.badge-primary` )
- **Todo:** Removed `.badge-pill` for the `.rounded-pill` utility class
- **Todo:** Removed badge's hover and focus styles for `a.badge` and `button.badge` .
2017-08-22 19:56:04 +02:00
2019-06-30 15:59:58 +02:00
### Cards
- Removed the card columns in favor of a Masonry grid [See #28922 ](https://github.com/twbs/bootstrap/pull/28922 ).
2019-06-07 13:44:26 +02:00
### Jumbotron
- The jumbotron component is removed in favor of utility classes like `.bg-light` for the background color and `.p-*` classes to control padding.
2019-10-28 04:26:52 +01:00
### Navbars
- All navbars now require a container within. This drastically simplifies spacing requirements and removes the need for extensive CSS overrides we added for responsive containers in v4.
2019-08-03 16:27:33 +02:00
### Pagination
- Pagination links now have customizable `margin-left` that are dynamically rounded on all corners when separated from one another.
2019-05-12 10:01:13 +02:00
### Popovers
- Renamed `.arrow` to `.popover-arrow`
### Tooltips
- Renamed `.arrow` to `.tooltip-arrow`
2019-05-20 10:03:51 +02:00
## Accessibility
- `.sr-only-focusable` does not require `.sr-only` anymore. [See #28720 ](https://github.com/twbs/bootstrap/pull/28720 ).
2019-05-03 19:52:58 +02:00
## Utilities
2017-08-20 22:54:12 +02:00
2019-06-04 17:51:36 +02:00
- Renamed `.text-monospace` to `.font-monospace`
2019-06-18 07:02:14 +02:00
- Decreased the number of responsive order utilities per breakpoint. The highest order utility with a number now is `.order-5` instead of `.order-12` . [See #28874 ](https://github.com/twbs/bootstrap/pull/28874 ).
2019-08-30 09:42:41 +02:00
- New `line-height` utilities: `.lh-1` , `.lh-sm` , `.lh-base` and `.lh-lg` . See [here ]({{< docsref "/utilities/text#line-height" >}} ).
2019-10-10 20:18:19 +02:00
- Added `.bg-body` for quickly setting the `<body>` 's background to additional elements.
2019-05-03 19:52:58 +02:00
- **Todo:** Drop `.text-hide` as it's an antiquated method for hiding text that shouldn't be used anymore
- **Todo:** Split utilities into property-value utility classes and helpers
2017-08-22 19:56:04 +02:00
2019-08-27 07:44:35 +02:00
## Docs
- Removed "Wall of browser bugs" page because it has become obsolete
2019-05-03 19:52:58 +02:00
## Build tools