The New Default. Your hub for building smart, fast, and sustainable AI software

See now
Vue 3 Migration challenges

Vue 3 Migration: Challenges, Solutions & Case Studies

Joanna Staromiejska-Drwięga
|   Updated Nov 8, 2026

A Vue 3 migration moves your application from Vue 2, which reached end of life on December 31, 2023, to Vue 3, the only version the Vue team still patches and maintains. Almost three years later, many production apps haven't made the move: over 35% of developers surveyed for the State of Vue.js Report 2025 had used Vue 2 in a project in the previous 12 months. Below you'll find the five challenges that keep teams on Vue 2, the practices that get them moving, and how Storyblok, GitLab and Booksy handled their own migrations.

Executive Summary

The safest way to migrate from Vue 2 to Vue 3 is incrementally: audit dependencies first, run old and new code side by side with Vue's migration build or a parallel app, and move one module at a time while feature work continues. A big-bang rewrite looks faster on paper but puts delivery and stability at risk. The real cost usually sits in unsupported third-party libraries and in rewriting tests, not in the framework changes themselves. Storyblok finished in about eight months; GitLab, held back by a component library that never supported Vue 3, is still in a hybrid state years later.

Why Does Vue 3 Migration Still Matter in 2026?

Vue 2 hasn't received a security patch or bug fix from the Vue team since the end of 2023, yet a large share of production apps still run on it. On paper, the case for Vue 3 is clear: ongoing support, better performance, first-class TypeScript and access to the libraries the ecosystem is building now.

35%+

25%+

of developers used Vue 2 in a project in the last 12 months.

reported difficulties migrating from Vue 2 to Vue 3.

What holds teams back is the complexity of migrating a production app. For bigger companies, moving to Vue 3 is much more than a framework upgrade. It's a strategic decision that affects delivery speed, developer onboarding and long-term maintainability, and it competes for the same engineers who ship your roadmap.

What Are the Biggest Challenges of Migrating from Vue 2 to Vue 3?

The respondents to the State of Vue.js Report 2025 who struggled with migration pointed to breaking changes, dependency updates and a lack of automated tools. In practice, these five hurdles come up most often.

1. Breaking Changes in APIs and Lifecycle Hooks

Vue 3 isn't a drop-in replacement. It renamed lifecycle hooks (beforeDestroy became beforeUnmount), replaced the global Vue object with an app instance created by createApp, removed filters and the event bus API, and changed how v-model and render functions work. In a large codebase, each of these small differences ripples through dozens of components.

2. Third-Party Library Support and Ecosystem Gaps

Core libraries such as Vue Router, Pinia (the recommended replacement for Vuex) and the major UI toolkits have stable Vue 3 versions. The gaps are in niche plugins, internal tools and libraries that were abandoned before Vue 3 arrived. GitLab's component library, for example, was built on BootstrapVue, which never supported Vue 3.

Almost 22% of developers in the State of Vue.js survey named ecosystem gaps as something Vue still lacks, often the absence of official component libraries comparable to MUI or Radix. To make finding maintained alternatives easier, we curated the Vue.js Plugins Collection, around 100 tools now linked from the official Vue.js website.

3. Developer Readiness and Composition API Adoption

The Composition API is powerful but requires a different way of organizing code than the Options API. Teams deeply invested in the old syntax lose velocity at first. Without training and shared conventions, this becomes a productivity and morale problem as well as a technical one.

4. Legacy Code Complexity in Large Apps

Incremental migration works best in modular applications. Many businesses still run large monoliths with legacy state management and thin test coverage, and introducing Vue 3 there can feel like open-heart surgery. The cost of untangling that technical debt becomes part of the migration budget.

5. Business Risk of Migration vs. Feature Delivery

Migration competes with product delivery. In sectors like e-commerce, healthcare or logistics, downtime and regressions have direct financial consequences, so leadership often postpones migration until it's unavoidable, while still carrying the security and compliance risk of an unsupported framework.

How Do You Migrate from Vue 2 to Vue 3 Safely?

Based on our experience helping companies migrate, these practices work:

  1. Audit dependencies early. Unsupported plugins are usually the first blocker, so list every third-party library, check its Vue 3 status and choose a replacement, fork or rewrite before touching application code.

  2. Upgrade to Vue 2.7 first. Vue 2.7 backports the Composition API and <script setup>, so your team can learn the new patterns on the old framework. Hack The Box took this route before moving to Vue 3.

  3. Use the migration build. Vue's official migration build (@vue/compat) runs most Vue 2 code on Vue 3 and warns about every deprecated behavior, so you can fix issues one at a time.

  4. Build new modules in Vue 3 and move old ones gradually. Adding a new module? Create it as a Vue 3 application. Code sharing between the two apps will cause friction, but solving it early pays off. If you maintain shared libraries, Vue Demi lets one codebase support both versions, though newer releases of some popular libraries, such as VueUse, have dropped Vue 2 support.

  5. Budget for tests, not just code. At Storyblok, updating unit tests took more effort than changing the application. When we helped Gradido migrate its digital currency platform, the team rewrote more than 1,000 tests and updated over 400 files.

  6. Phase the roadmap. Start with low-risk, high-impact components before core business modules, so migration milestones fit around product launches instead of delaying them.

The right overall strategy depends on how modular your app is and how much risk you can absorb:

Strategy

How it works

Best for

Main trade-off

Migration build (@vue/compat)

Run the existing app on Vue 3 in compatibility mode and fix warnings gradually

Large apps with good test coverage

Long hybrid period; some libraries break even in compat mode

Parallel app

New Vue 3 app grows next to the old one and takes over module by module

Modular apps, teams shipping features weekly

Shared code and state between two apps

Full rewrite

Rebuild the frontend on Vue 3 from scratch

Small apps, or apps due for a redesign anyway

Highest delivery risk and cost

Stay on Vue 2.7 with paid extended support

Buy security patches (e.g. HeroDevs Never-Ending Support) while you plan

Buying time when migration can't start yet

Cost without progress; the ecosystem keeps moving on

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.

How Did Storyblok, GitLab and Booksy Migrate to Vue 3?

All three companies shared their migration stories in the State of Vue.js Report 2025. None of them did it in one go.

How Did Storyblok Migrate to Vue 3 Without Disrupting Users?

Storyblok, the headless CMS, moved its frontend from Vue 1 to Vue 2 and then to Vue 3 over six years. For Vue 3, the team chose a "soft migration": the codebase changed, the user interface didn't. Users resisted change, so keeping the experience familiar was a requirement, not a nice-to-have.

The work covered the design system, outdated dependencies, developer training and the Visual Editor, which the team prioritized as the most critical component, with the migration build and scripts doing much of the mechanical work. Testing turned out to be the hardest part. Lisi Linhart, Storyblok's former Principal Frontend Architect, said updating unit tests took more effort than the application changes, and it needed three weeks of work with the QA team.

The rollout used blue/green deployment: a small share of traffic went to the Vue 3 version first, and the team monitored it for a week before rolling it out further. The whole transition took about eight months.

How Is GitLab Migrating to Vue 3 at Enterprise Scale?

GitLab, the DevSecOps platform with more than 50 million registered users, shows how long a Vue 3 migration can take in a large, old codebase. The team chose compatibility mode: running the existing code on Vue 3 through @vue/compat instead of rewriting it.

The biggest obstacle was GitLab UI, the company's component library, built on BootstrapVue, which never supported Vue 3. An engineer ported it to work with the compat build, and the team contributed fixes back to Vue itself. Supporting libraries such as vue-draggable lagged behind too, and the old codebase brought legacy state management and unit tests that failed under Vue 3. In late 2024, Natalia Tepluhina, Principal Engineer and Vue core team member, reported a few projects on Vue 3, the main project in progress, and over 70% of tests passing. "Overall, the process is not as smooth as we imagined," she said.

By October 2026, GitLab's migration tracker listed 384 entry points with a Vue 3 migration in progress, most of them rolling out behind feature flags, while the main bundle still ran on Vue 2. Feature flags let GitLab switch each page to Vue 3 gradually without freezing development, at the cost of a very long hybrid period.

How Did Booksy Migrate a 650,000-Line Vue App?

Booksy, a booking platform for beauty, wellness and health professionals, runs two main apps: Booksy Marketplace for customers, built with Nuxt, and Booksy Biz for service providers, built with Vue. Booksy Biz alone has about 650,000 lines of code, and the team had to keep shipping features while migrating it.

Some constructs in the codebase were too complex to bring into Vue 3 directly. Rather than rewrite the whole app, Łukasz Lewandowski, Principal JavaScript Developer, and his team rewrote only those parts so they worked in both Vue 2 and Vue 3. That hybrid step took a full year. At the time of the report, Booksy Biz was running on Vue 3 in pre-production, with Marketplace next in line.

Key Takeaways

  • Vue 2 has had no official security patches since December 31, 2023, yet over a third of Vue developers still worked with it in 2024.

  • Unsupported third-party libraries are the most common blocker, so audit dependencies before touching application code.

  • Test rework often costs more than the code changes; Storyblok's QA effort alone took three weeks.

  • Incremental migration, through the migration build or a parallel app, lets you keep shipping features.

  • Paid extended support for Vue 2 buys time, not progress.

How Can You Plan a Successful Vue 2 to Vue 3 Migration?

Storyblok, GitLab and Booksy all chose incremental migration over a rewrite, and their stories show what it takes: an early dependency audit, a realistic budget for test rework, and a rollout you can monitor and reverse. The timelines differ, from eight months to several years, mostly because of library support and codebase age.

At Monterail, we've guided Vue teams through this process. If you're planning your own migration, let's talk about a roadmap that fits your product and your delivery commitments.

Vue 3 Migration FAQ

Joanna Staromiejska avatar
Joanna Staromiejska-Drwięga
Marketing Strategy Specialist
Linkedin
Joanna Staromiejska-Drwięga is a T-shaped marketer with over 10 years of experience in B2B tech marketing. As a Marketing Strategy Specialist at Monterail, she drives growth through multi-platform campaigns and cross-functional collaboration. Joanna holds a degree in International Business and Management. Her work spans landing pages, ebooks, and in-depth guides, including the well-known State of Vue reports.