Migrating from v3
Upgrade to Kiaalap 4 while adapting Chart.js, Day.js, configuration and stylesheet checks.
Last updated October 13, 2026
Kiaalap 4 retains Bootstrap 5, its education pages and the main layout. The major version documents changes to the module API and supported development runtime.
Runtime and install
Use Node.js 24.8+ or 22.22+, with npm 10+. .nvmrc selects Node 24.
nvm use
npm ci
npm run check
Keep your application-specific changes in version control before integrating an update.
Chart.js and Day.js
| v3 integration | v4 integration |
|---|---|
window.Chart available on every page |
Available on detected chart demo pages; load explicitly for charts added later |
window.dayjs |
Import Day.js or use await Kiaalap.load('dayjs') |
Chart/Day.js exports from src/js/main.js |
Import from their packages or use Kiaalap.load(...) |
const Chart = await Kiaalap.load('chart');
const dayjs = await Kiaalap.load('dayjs');
Existing chart demos keep their global Chart constructor before DOMContentLoaded. The shared shell no longer pays for Chart.js on forms, tables or other pages without charts.
Configuration and pages
Move page titles, breadcrumbs and sidebar-group mappings from vite.config.js to src/config/pages.js. Shared metadata/user values live in src/config/site.js. Theme variables live in src/scss/_theme.scss; extend the Bootstrap with (...) configuration in main.scss as needed.
Use npm run page:new -- name for new pages. Vite inputs are discovered automatically. Keep names containing template or -new out of production pages.
Stylesheet tooling
Stylelint and its config were removed because of the unpatched braces/glob chain. npm run lint:css now checks handwritten CSS with ESLint, SCSS syntax/formatting with Prettier, and SCSS entry points with Dart Sass. These checks replace Stylelint-specific SCSS rules; add your preferred extra conventions in your own project if needed.
Terser, cssnano and glob were removed. Sass is a development dependency, and Vite uses native minification and Rolldown configuration.
Behavior fixes
SimpleBar and Tom Select load their styles with their libraries. Lazy hooks can be initialized repeatedly without duplicate instances. The department dialogs are restored, controls/landmarks have accessible names, duplicate search IDs are fixed, and reduced motion is respected.
Quill and audit status
Quill remains at 2.0.2 because 2.0.3 has an unresolved HTML export advisory. Both full and production audits report zero vulnerabilities at release verification. See Release notes for the full dependency table and validation evidence.