---
title: Upgrade to 1.5
summary: Move a project from Tabler 1.4 to 1.5. Every breaking change is listed with a before and after example for markup, JavaScript and Sass.
description: Upgrade guide from Tabler 1.4 to 1.5 with all breaking changes, renamed classes and Sass updates.
added-in: '1.5.0'
order: 2
related: [/ui/getting-started/rtl]
---
Most projects only use the compiled CSS and JavaScript from `dist/`. If that is you, the upgrade is short: update the package, remove Bootstrap, and check the [color mode default](#color-mode-defaults-to-auto) and the [visual changes](#visual-changes). Projects that compile Tabler from the Sass sources have more work to do - see [Sass changes](#sass-changes).
## Overview
Use this table to find the changes that affect you.
If you…|You need to…
---|---
Load `dist/css` and `dist/js`|Remove Bootstrap's CSS and JS - Tabler now ships them
Load `bootstrap.bundle.min.js`|Remove it, or components will start twice
Use `window.bootstrap.Modal`|Use `window.tabler.Modal`
Compile `scss/tabler.scss` yourself|Switch to `@use … with ()` and add the PostCSS prefix step
Override Sass variables|Check the [list of removed variables](#removed-sass-variables)
Use `.badges-list` or `.tags-list`|Rename to `.badge-list` and `.tag-list` (old names still work)
Use ApexCharts|Update to ApexCharts 7
Use Turbo with Tabler|The built-in integration is gone - see [Turbo](#turbo-integration-removed)
Load `tabler-theme.js`|Pages follow the OS color scheme now - see [Color mode](#color-mode-defaults-to-auto)
Use payment provider icons|Check the [removed providers](#removed-payment-providers)
Link files inside `dist/libs`|Check the [moved paths](#smaller-distlibs-folder)
Load `tabler.rtl.css`|You can drop it - plain `tabler.css` now handles RTL
Have `.text-gray-*` classes in your markup|They color the text now - see [Gray text utilities](#gray-text-utilities)
## Update the package
Install the new version:
```sh
npm install --save @tabler/core@1.5.0
```
Or update the CDN links:
```html
```
## Bootstrap is now part of Tabler
Bootstrap is no longer a dependency. Its JavaScript and Sass sources live inside `@tabler/core`, based on Bootstrap 5.3.8.
Remove Bootstrap from your project:
```sh
npm uninstall bootstrap
```
Then remove the separate Bootstrap files from your pages:
```diff
-
-
```
If you leave `bootstrap.bundle.min.js` on the page, every component starts twice. You will see modals that close at once, or dropdowns that never open.
### JavaScript imports
Bootstrap components are exported from `@tabler/core`:
```diff
- import { Modal, Tooltip } from 'bootstrap'
+ import { Modal, Tooltip } from '@tabler/core'
```
The sources under `js/` are TypeScript now: `js/tabler.js` became `js/tabler.ts` and `js/src/*.js` became `js/src/*.ts`. Import from the package root or from `dist/js/`, not from the source files.
### Global variable
The UMD build puts everything under `tabler`:
```diff
- const modal = new bootstrap.Modal(element)
+ const modal = new tabler.Modal(element)
```
`tabler.bootstrap.Modal` also works. You can replace `bootstrap.` with `tabler.bootstrap.` across your project as a quick fix.
### Data attributes
Every component now reads `data-tblr-*` as well as `data-bs-*`. Both prefixes work, so you do not need to change your markup:
```html
```
Dark mode still uses `data-bs-theme="dark"`.
## Turbo integration removed
The built-in `@hotwired/turbo` integration is gone, together with the `.turbo-progress-bar` styles. You can keep using Turbo, but install it yourself and style the progress bar in your own CSS:
```css
.turbo-progress-bar {
height: 3px;
background-color: var(--tblr-primary);
}
```
## Color mode defaults to auto
`tabler-theme.js` used `light` as its default color mode. It now defaults to `auto`: with no stored choice, the script reads `prefers-color-scheme` and sets `data-bs-theme` on `` to `light` or `dark`. Visitors whose operating system is set to dark will see your pages in dark mode after the upgrade.
To keep light as the starting point, render the attribute on the server; the script only replaces it with a stored choice or a URL parameter:
```html
```
A visitor can still pick a mode with `?theme=light` or `?theme=dark` in the URL, and the choice is stored in `localStorage`. See [Color modes](/ui/getting-started/color-modes) for all theme settings.
## Removed payment providers
The payment icons now come from the [Tabler Payments](/payments) set, which adds 74 providers and drops 12 that no longer operate. Their `.payment-provider-*` classes and `dist/img/payments/*.svg` files are gone:
`clickandbuy`, `dotpay`, `laser`, `ogone`, `okpay`, `paymill`, `payza`, `sage`, `solo`, `switch`, `ukash`, `verisign`
If you still show one of them, copy its SVG from the 1.4 package into your project.
## Smaller dist/libs folder
`dist/libs` now holds only the runtime files each library needs, instead of a full copy of every package. If you link straight to a file inside `dist/libs`, check that the path still exists after the upgrade. These are the paths most likely to break:
Removed|Use instead
---|---
`tom-select/dist/js/tom-select.complete.min.js`|`tom-select/dist/js/tom-select.base.min.js`
`tom-select/dist/css/tom-select.min.css`|`tom-select/dist/css/tom-select.bootstrap5.min.css`
`countup.js/dist/countUp.min.js`|`countup.js/dist/countUp.umd.js`
`signature_pad/dist/signature_pad.min.js`|`signature_pad/dist/signature_pad.umd.min.js`
`star-rating.js/dist/star-rating.esm.min.js`|`star-rating.js/dist/star-rating.min.js`
`plyr/dist/plyr.polyfilled.min.js`|`plyr/dist/plyr.min.js`
`litepicker/dist/bundle.js`|`litepicker/dist/litepicker.js`
`jsvectormap/dist/jsvectormap.min.css`|`jsvectormap/dist/jsvectormap.css`
`@hotwired/turbo/`|Install `@hotwired/turbo` yourself, see [Turbo](#turbo-integration-removed)
The base build of Tom Select ships without plugins, so load any plugin you use from npm. The unminified builds are gone as well, such as `apexcharts/dist/apexcharts.js` or `clipboard/dist/clipboard.js`: link the `.min.js` file next to them. Anything else that is no longer shipped can be loaded from your own `node_modules` or from a CDN. The list of shipped files is in [libs.json](https://github.com/tabler/tabler/blob/dev/core/libs.json).
## Sass changes
Skip this section if you use the compiled CSS from `dist/css`.
### Sass module system
The Sass sources now use the module system (`@use` and `@forward`). Setting variables before an `@import` no longer changes them. Use `@use … with ()` instead:
```diff
- $primary: #f11d46;
- $font-family-sans-serif: 'Inter', sans-serif;
- @import '@tabler/core/scss/tabler';
+ @use '@tabler/core/scss/tabler' with (
+ $primary: #f11d46,
+ $font-family-sans-serif: ('Inter', sans-serif)
+ );
```
Last updated 3 hours ago
+Last updated 3 hours ago
``` For muted text, `.text-secondary` follows the theme and keeps enough contrast in dark mode. ## RTL The Sass sources use logical properties and a `--tblr-dir` multiplier, so plain `tabler.css` works in both directions. Set `dir` on the document and drop the RTL stylesheet: ```diff - + ``` The `*.rtl.css` files are still published, so nothing breaks if you keep them. See the [RTL support](/ui/getting-started/rtl) page for the full list of RTL builds and which utilities flip automatically. ## Third party libraries - **ApexCharts** moved from 3.54 to 7.0. If you install ApexCharts yourself, update it too and read the [ApexCharts changelog](https://github.com/apexcharts/apexcharts.js/releases) - the major versions renamed several options. Charts also read `--chart-{id}-color-{index}` variables now. - **Tabler Icons** moved to 3.46, and **Tabler Illustrations** to 1.16. - **Tom Select** cannot be compiled from its Sass sources against Tabler anymore. Its `tom-select.bootstrap5.scss` reads Bootstrap variables such as `$border-color` and passes them to `color.adjust()`, but in Tabler these are now CSS variables like `var(--gray-200)`, which is not a color to Sass. Use the compiled `tom-select.bootstrap5.css` instead, or set the two variables Tom Select adjusts to plain colors before importing it: ```scss // `as *` keeps Tabler's variables visible to the @import below @use '@tabler/core/scss/tabler' as *; $select-color-text: #182433; $select-color-item-border: #e6e7e9; @import 'tom-select/dist/scss/tom-select.bootstrap5'; ``` ## Browser support Tabler 1.5 relies on `light-dark()`, `color-mix()`, `@property` and `:has()` with no fallback. This raises the minimum browser versions: Browser|Minimum version ---|--- Chrome|123 Edge|123 Firefox|128 Safari|17.5 iOS Safari|17.5 Older browsers still render the layout, but colors fall back to unstyled values. See [Browser support](/ui/getting-started/browser-support) for the full list. ## What is new in 1.5 Besides the changes above, 1.5 adds: - New components: `.btn-ghost`, `.card-gradient`, progress steps, progress background, `.progress-lg` and `.progress-xl`, background pattern utilities, `.text-gray-*` utilities, and a `.bg-blur` utility. - A folded sidebar (`navbar-folded`, `navbar-folded-hover`) with `nav-section-title` labels and a `navbar-footer` zone. - An `auto` color mode that follows the system `prefers-color-scheme` setting. - Print styles: `d-print-*` utilities and a `media-print` mixin, see [Printing](/ui/utilities/printing). - A language selector in the navbar and a new structure for the `navbar-side` component. - New preview pages: CRM dashboard, crypto dashboard, task list, onboarding, pay, card gradients, all elements, and several new modals. - [Framework integration guides](/ui/getting-started/frameworks) for Laravel, React, Next.js, Vue, Angular, Nuxt, Symfony, Django, Rails, SvelteKit and Astro. The full list is in the [changelog](https://github.com/tabler/tabler/blob/dev/core/CHANGELOG.md).