The Ancillary Guide to Dark Mode and Bootstrap 5

    A continuation of the v4 Dark Mode POC, but this time for v5

    This is a follow up to The Definitive Guide to Dark Mode and Bootstrap 4 body of work, and pertains to Bootstrap 5 (Github repo.).

    If you're after the same work for Bootstrap 4 please visit the vinorodrigues/bootstrap-dark repo.

    NOTE:   A note on current state (Feb 2022):

    Development efforts back at Bootstrap 5's core repository are currently geared at converting all color to CSS Variables. Obviously this greatly modifies the methodologies used in this POC and would in essence require a major re-write of the code. The addition of CSS variables also brings in some additional complexity in some of the variants (this project shows 6 methods of attaining dark mode with Bootstrap 5) - specifically the -nightshade and -backbox variants have major issues in accomodating for CSS variables. (Not impossible, but complex nevertheless.)

    As such - I will not be updating this project (thus it remains tied to the v5.1.3 release) until such time as it becomes clear in what direction Mark Otto are gearing their project towards. The intent is clear - with CSS variables (for the color elements) - theming is much simpler. Dark Mode capability, in essence a dual theme driven by browser/OS preference, remains to be seen.

    In the meantime, any CSS Variable conversion pulls to the core repo will be documented as a "to do" via the issues page of this project.


    This code will make little sense if you don't read The Definitive Guide to Dark Mode and Bootstrap 4 first.

    What do you get?

    The code compiles the four methods (and variants - six in total) of the original body of work, but compiled for and sourcing Bootstrap 5. These are:

    Method 1

    (link to original)

    • bootstrap-night: This is simply a dark bootstrap theme. It can however be used with the Bootstrap core CSS to deliver a 2-file dark mode functionality.

    Method 2

    (link to original)

    • bootstrap-nightfall: This is simply the "color only" CSS of all the components of Bootstrap core, but dark, and is intended to be used as an add-on. It can also, with a simple media query, drive automatic dark mode switching.

    Method 3

    (link to original)

    • bootstrap-nightshade: This is a modification of the Bootstrap core and adds dark color CSS for all the components, but dark, nested in a html.dark class wrapper. By itself it cannot offer dark mode switching, but add the included darkmode.js library and you have an interactive dark mode switching variant of Bootstrap with built in "toggle" button support.

    • bootstrap-blackbox: New This variant is essentially the same as the "nightshade" variant, but instead of using a HTML tag class, it uses a HTML tag data attribute; data-bs-color-scheme. The same darkmode.js library drives this one, all you need to do is add the data attribute to your HTML tag.

    Method 4

    (link to original)

    • bootstrap-dark: This is the recommended method; one CSS with both light and dark themes, toggle-able only with the OS or browser prefers-color-scheme media query.

    • bootstrap-unlit: This variant is essentially the same as the "dark" variant, but with "dark" scheme as the primary/fallback and "light" as optioned in color scheme.

    Get started

    1. bootstrap-night 2. bootstrap-nightfall 3. bootstrap-nightshade 3b. bootstrap-blackbox 4. bootstrap-dark 4b. bootstrap-unlit
    Quick Start Guide Quick Start Guide Quick Start Guide Quick Start Guide Quick Start Guide Quick Start Guide
    darkmode.js Reference darkmode.js Reference
    See Example See Example See Example

    The Proof is in the Pudding

    Some of the test pages have been set up at

    Can you use this?


    Licence is MIT. i.e. use as you whish as long as you credit the original authors and leave the copyright in situ.

    If you're a theme builder or want to use its principles in your own project you'll need to have Git and Node installed.

    1. Fork or download the repository: git clone
    2. Install Node dependencies: npm install (See note below.)
    3. Modify _variables.scss and _variables-alt.scss in the scss sub-folder.
    4. Run npm run build to build your theme.
    5. The compiled code will be in the dist folder.

    NOTE: The build system is based on NPM Scripts. Most of the build tools (NPM modules) will need to be installed as "global" to ensure the scripts are executable from the command line.

    npm i -g  autoprefixer  documentation browser-sync  clean-css-cli  cross-env  eslint  eslint-config-xo  eslint-plugin-import  eslint-plugin-unicorn  find-unused-sass-variables  imagemin-cli  nodemon  npm-run-all  postcss-cli  rtlcss  sass  stylelint  stylelint-config-twbs-bootstrap  svgo  terser typescript

    Note 1:

    This code is just a rehash of Bootstrap 5 core code to add "dark mode" functionality and is declared as a "Proof of Concept" (PoC) - that means it's not intended as a production source, but merely an exercise to prove that dark-mode is attainable via various methods, i.e. it is an educative piece. It also means that it's author (Vino Rodrigues) is not compelled to support it.

    Note 2:

    This project will not compile with Node-Sass. Refer to the original Bootstrap 5 docs, especially here (, and you'll note that they have deprecated the use of Node-Sass in favour of Dart-Sass.

    They in turn cite this ( article wherein the Sass curators state they will no longer support LibSass, that Node-Sass is dependant on.


    Developers can include the scss and dist folders into your own project with:

    npm install bootstrap-dark-5


    You can also hotlink the theme via CDN with

    You can access the theme CSS file from the GitHub release:

    Further Reading

    Must reads for all developers wanting to write for dark mode:


    If you have useful feedback drop me an "Issue" on the GitHub Issues page.

    © 2022


    The Ancillary Guide to Dark Mode and Bootstrap 5 - A continuation of the v4 Dark Mode POC. >>> Bootstrap 5.2 is in the dev/v1.2.0 branch <<<

    🚀 Github 镜像仓库 🚀


    发行版本 13

    v1.1.3 Release


    贡献者 8


    • SCSS 86.3 %
    • TypeScript 7.7 %
    • HTML 4.5 %
    • JavaScript 1.6 %