Introduction
At the beginning, there was a simple requirement - to upgrade a small web blog from Laravel 8 to Laravel 11. In general, problems with upgrading Laravel versions are well known, but solutions for two areas:
- using the Tinymce editor for the admin dashboard
- CSS solution for the frontend application with Vite 5 and CoreUI 5 proved to be challenging. It is the second area, using the new versions of CoreUI and Vite, that we will discuss in the following text.
Structural issues rooted in the Laravel architecture
-
Laravel provides only basic part of (web) application - framework, but without extensive support of parts for frontend UI
-
Missing compact building parts for custom funcionality (aka plugins). Composer packages and Vite modules cannot replace clear bondaries of plugins; modules sometimes conflict with each other and require custom ad hoc configurations
-
Time-consuming updates - Laravel's update process often overwhelms admins and consumes a lot of time. In many cases, admins must consider the readiness and compatibility of their current sites, because older modules can lose functionality after updates. Additionally, administrators must manually check prepared updates, which can consume considerable time and disrupt workflows.
-
Compatibility breaks at every major Laravel version jump. This creates a cascading compatibility problem: any contributed module that directly uses Laravel APIs must also be updated to reflect the new Laravel version, or it will simply block the entire site upgrade.
-
As seen repeatedly in practice, any module not compatible with the new Laravel major version will block the upgrade entirely, and developers are left having to either remove the module, find an alternative, or wait for the maintainer to release a compatible version.
-
Problem with Composer: package / module version pinning in Laravel core frequently produces unresolvable Composer / NPM dependency trees when contributed modules lag behind.
-
Semantic versioning chaos for contributed Packages / Modules
Details of migration with examples from real live project are included here:
Breaking Changes in CoreUI ver 3 → ver 5
Bootstrap ver 4 → ver 5 Compatibility Layer
Laravel Mix to Vite 5 Migration
Some included solutions in the project as well as creating of basic code overview were done with support of Anthropic AI models (Claude Sonnet 4.5, Claude Opus 4.6)