Version 2 of NodeBB using the Persona theme (and many child themes based off of Persona) used Bootstrap 3 as its front-end CSS framework.
As part of the upgrade to version 3, we are upgrading to Bootstrap 5, whose migration comes with a number of updates and changes, many of which are incompatible with previous versions of Bootstrap.
If your theme or child theme updates the templates folder, you will need this guide to update your templates to use Bootstrap 5 components and classes.
If your templates are based off of an older version of Persona (that is, you copied an existing template and modified it), you simply need to copy the latest template from Persona and re-apply your changes.
The main migration docs for migrating from Bootstrap 3 to 5 can be found on the Bootstrap website:
... however, they are exhaustively complete and likely contain a lot of content that does not necessarily pertain to your theme. We have distilled some of the common migration steps below for easier consumption.
Please see our other articles related to v3:
pull-left changed to float-startpull-right changed to float-endtext-right changed to text-endimg-responsive changed to img-fluid
<div> <button type="button">Button</button> <button type="button">Button</button> </div>
btn-xs removed use btn-smbtn-default removed use btn-outline-secondarycol-xs-<n> changed to col-<n>inline-block changed to d-inline-block<div>
<div>
image
</div>
<div>
text
</div>
</div>
navbar-toggle changed to navbar-toggler... have all been removed in favour of the "card" component.
To convert a panel into a card:
<div class=”card”> <div class=”card-header”>header</div> <div class=”card-body”>body</div> <div class=”card-footer”>footer</div> </div>
<div> changed to <div><select> changed to <select>form-label class to labels form-check-input to checkboxes. Sample checkbox with label:<div> <input type="”checkbox”" /> <label>a checkbox</label> </div>
form-group, .form-row, or .form-inline are removed use spacing utilitieshelp-block changed to form-textdata-toggle="dropdown" changed to data-bs-toggle="dropdown"dropdown-item to dropdown list item Item 1dropdown-menu-right changed to dropdown-menu-enddropdown-dividerdata-toggle="collapse" changed to data-bs-toggle="collapse"data-target=".classname" changed to data-bs-target=".classname"data-dismiss="modal" changed to data-bs-dismiss="modal"Instead of using media queries using old Bootstrap 3 variables (e.g. @media (max-width: @screen-sm-max) { ... }), Bootstrap 5 introduces a new mixin for breakpoints.
Read more about it in Bootstrap 5's article re: responsive breakpoints.