The State of Vue.js Report 2025 is now available! Case studies, key trends and community insights.
Table of Contents
- Why Vue 3 Migration Matters in 2025
- Top 5 Challenges Companies Face When Migrating from Vue 2 to Vue 3
- Proven Solutions & Best Practices for Vue 3 Migration
- Real-Life Vue 3 Migration Case Studies
- Storyblok: Gradual Migration to Vue 3 for Long-Term Scalability
- GitLab: Incremental Vue Evolution at Enterprise Scale
- Booksy: Phased, Hybrid Approach to Vue 3 Migration
- Ready for a Successful Vue 2 to Vue 3 Migration?
Migration to Vue 3 means moving your application from Vue 2, the previous version of the framework, to Vue 3, which is now the officially supported standard. Migration is about keeping your application secure, scalable, and easier to maintain. It involves adapting codebases to account for breaking changes in APIs, lifecycle hooks, and render functions, while also leveraging new features such as the Composition API, improved TypeScript integration, better performance, and smaller bundle sizes.
Why Vue 3 Migration Matters in 2025
Despite Vue 2’s end-of-life almost two years ago, 35% of developers still rely on it according to the State of Vue.js 2025. On paper, the benefits of Vue 3 are clear. Vue 3 offers long-term security and support, better performance, which improves user experience and faster development cycles thanks to modern features and better tooling. So why are so many teams still running production apps on Vue 2?
35% | 25% |
have still used Vue 2.7x version in their projects in the last 12 months. | reported experiencing challenges when migrating from Vue 2 to Vue 3. |
The answer lies in the real-world complexity of migration. For many bigger companies, migrating to Vue 3 is much more than a framework upgrade. It’s a strategic decision that impacts delivery speed, developer onboarding, and long-term maintainability.
In this article, we’ll take a closer look at the biggest roadblocks teams face when migrating from Vue 2 to Vue 3, along with proven approaches and practical solutions that can help overcome them. We’ll also share real-life case studies of companies from the State of Vue.js Report 2025 that successfully navigated the transition, highlighting what worked and why. Expect GitLab, Storyblok and Booksy stories.
Whether you’re a CTO, tech lead, principal engineer, or a developer tackling migration challenges firsthand, this piece will give you a deep dive into Vue 3 migration and what it takes to do it right—so you can avoid common pitfalls, accelerate your migration, and leverage Vue 3 to the fullest.
Top 5 Challenges Companies Face When Migrating from Vue 2 to Vue 3
While Vue 3 is now the ecosystem standard, many teams face hurdles that delay migration. The most common ones include:
1. Breaking changes in APIs & Lifecycle Hooks
The migration isn’t a drop-in replacement. Vue 3 introduced breaking changes in lifecycle hooks, adjustments in global API usage, and changes in render functions. For large codebases, these seemingly small differences can ripple through dozens of components.
2. Third-Party Library Support & Ecosystem Gaps
A major challenge in migration today is dependency ecosystem maturity. While core Vue 2 libraries (e.g. Vue Router, Pinia as a replacement for Vuex, many UI toolkits) now offer stable Vue 3 versions, gaps remain in less mainstream or niche plugins, internal tools, and domain-specific modules.
Developers point to some ecosystem gaps as one of the most important things missing still in Vue 3 (as of March 2025 Developer Survey). Specifically, 22% of respondents mentioned the lack of robust, official component libraries.
We can’t fill the gap of all missing tools but we can help you find relevant, updated plugins that already exist. We curated Vue.js Plugins Collection, including almost 100 useful tools, which is now part of the official documentation.
3. Developer Readiness & Composition API Adoption
The Composition API is powerful but requires a mindset shift from the Options API. Teams deeply invested in the old syntax may find migration slows velocity at first. Without proper training and onboarding, this becomes a cultural and productivity challenge, not just a technical one.
4. Legacy Code Complexity in Large Apps
Incremental migration works best in modular applications. But many businesses still run large monoliths with legacy or poorly tested code. Introducing Vue 3 here can feel like open-heart surgery. The cost of untangling technical debt becomes part of the migration budget.
5. Business Risk of Migration vs. Feature Delivery
Beyond technical challenges, migration competes with product delivery. In sectors like e-commerce, healthcare, or logistics, downtime or regressions have direct financial consequences. Leadership often delays migration until it’s unavoidable, even while acknowledging the risks of staying on Vue 2.
Proven Solutions & Best Practices for Vue 3 Migration
The good news? Every challenge has a proven path forward. Based on our experience helping companies migrate, here’s what works:
Audit dependencies early. Since plugins and dependencies are highlighted as first blockers, identify which third-party libraries are unsupported and explore alternatives or forks.
Use migration build. Vue’s official Migration Build allows teams to run Vue 2 code within Vue 3, providing compatibility warnings, it’s one of the safest ways to start migrating incrementally.
Use vue demi to share code between Vue 2 and Vue 3 apps. Vue Demi is a developer tool that allows you to write code using the universal Vue API, which can run in both Vue 2 and Vue 3 applications.
Create new pages/modules within the new Vue 3 application and gradually move the old ones. Introducing a new module in your application? Create it as a new application with Vue 3. You will encounter difficulties here (particularly related to code sharing), but addressing issues now can pay off sooner than you think. You may find it beneficial to slowly move previous parts of the application here as you go.
Phase migration roadmap. Start with low-risk, high-impact components before tackling core business modules. It will enable you to align migration with delivery commitments, ensuring that product launches are not delayed.
As our Engineering Manager at Monterail, Szymon Licau, puts it:
At Monterail, we prioritize minimizing risk for your end users. That’s why we recommend an incremental migration approach. Instead of a single, large-scale migration, we break the process into smaller, manageable milestones. This allows for more frequent deployments, better control over which parts of the application are affected, and reduced risk at every step. By migrating gradually, you gain better visibility into required effort, potential unknowns, and time estimates for each phase—making the entire process more predictable and less disruptive.
For a detailed step-by-step framework, check out our Monterail Vue 3 Migration Guide.
Real-Life Vue 3 Migration Case Studies
Theories are good, but results matter. Here are three cases from our experience and the broader Vue community.
Storyblok: Gradual Migration to Vue 3 for Long-Term Scalability
Storyblok — a headless CMS platform that empowers developers and marketers to create and manage content for websites and applications. The company undertook a multi-phase migration of its front-end interface, transitioning from Vue 1 to Vue 2 and subsequently to Vue 3 over a six-year period.
Problem:
Storyblok’s frontend and internal tools were originally built on Vue 2.
With Vue 2 reaching end-of-life, the team needed to ensure long-term maintainability and compatibility for their platform.
Migration was particularly challenging because of the platform’s scale and global user base, they couldn’t risk downtime or instability.
Solution:
The team adopted a gradual migration strategy to move from Vue 2 to Vue 3.
They prioritized critical components first, ensuring stability for customer-facing features while migrating less essential parts in parallel.
By relying on Vue’s official migration tools and selectively refactoring, Storyblok balanced modernization with business continuity.
Key takeaways:
The phased approach allowed Storyblok to reduce risk, avoid feature delivery slowdowns, and maintain platform stability during migration.
Vue 3’s support for both Options API and Composition API gave the team flexibility in how to approach refactoring.
Migration unlocked better performance and TypeScript support, which aligned with Storyblok’s long-term scaling goals.
GitLab: Incremental Vue Evolution at Enterprise Scale
GitLab — the most comprehensive open-source DevSecOps platform for automating software delivery, boosting productivity, and securing the end-to-end software supply chain for over 30 million users.
Problem:
GitLab was built on Rails + Vue, but over time, they accumulated fragmented Vue applications, multiple entry points, and legacy state management patterns.
They needed a more consistent, integrated frontend architecture to improve maintainability, share components, and move toward a more SPA-like structure.
Dealing with legacy state solutions and multiple Vue “islands” made it hard to evolve the UI progressively.
Solution:
GitLab adopted an incremental migration strategy. Instead of rewriting everything, they:
Gradually merged fragmented Vue applications into a more unified architecture.
Introduced shared state management and a single Vue Router configuration.
Leveraged Vue 3 features like Teleport, replacing older workarounds such as vue-portal, to modernize the UI without disrupting existing functionality.
Maintained compatibility between old and new code during the transition.
Key takeaways:
Incremental evolution avoided large rewrites, lowering risk in a core, high-traffic product.
Teleport and modular architecture let GitLab progressively replace portions of UI while keeping them interconnected.
The shift to shared state and unified routing improved maintainability and reduced fragmentation.
Because the evolution was gradual, GitLab could continue feature development and avoid large disruptions.
Booksy: Phased, Hybrid Approach to Vue 3 Migration
Booksy — a large booking platform in wellness, beauty, and health, with two main apps: Booksy Marketplace (customer-facing, built with Nuxt) and Booksy Biz (provider-facing, built with Vue.js).
Problem:
The codebase was huge, around 650,000 lines of code, while still needing to deliver new features in parallel.
Some existing functionalities were too complex to integrate seamlessly with Vue 3.
They encountered setbacks and had to rewrite portions in a hybrid way to maintain compatibility with both Vue 2 and Vue 3 for a period.
Solution:
Gradually merging separate Vue applications, introducing shared state management and a unified Vue Router architecture over time.
Leveraging Teleport (and replacing older “vue-portal” patterns) to incrementally modernize UI in parts of the application without full rewrites.
Maintaining compatibility between new and old pieces, allowing them to evolve the architecture while preserving existing functionality.
Key takeaways:
By selectively rewriting only the problematic parts rather than attempting a full rewrite at once, they managed risk and complexity.
They balanced migration with ongoing feature development, which is crucial in real-world business settings.
As of their report, the largest app is already running in Vue 3 (pre-production), showing that a staged migration can succeed even in large systems.
Ready for a Successful Vue 2 to Vue 3 Migration?
Migrating from Vue 2 to Vue 3 is no longer a question of if but how. As the case studies from Storyblok, GitLab and Booksy show, the safest and most effective path isn’t a risky all-at-once rewrite, it’s incremental migration, aligning technical upgrades with business priorities.
This approach minimizes risk, preserves delivery speed, and creates space to modernize at a pace that fits your roadmap. Every company’s journey will look a little different, but the principle remains the same. Migrate gradually, plan strategically, and let the transition unlock long-term scalability and developer efficiency.
At Monterail, we’ve guided teams through this process. If you’re planning your own migration, let’s talk about how we can help you design a roadmap that fits your business while ensuring a smooth, future-proof move to Vue 3.
Vue.js FAQ
:quality(90))