dino.opij.ac

Vue 3 arrived in 2020. Why are so many apps still on Vue 2?

Vue 3 has been around for years, Vue 2 has reached end of life, and yet a surprising number of applications are still running on Vue 2.

This article marks the beginning of a series where I’ll explore what it actually takes to migrate a real-world Vue 2 application to Vue 3. Before we get into tooling, strategies, and trade-offs, we need to understand how we got here in the first place.

This year marks the 10th anniversary of the release of Vue 2.0. I remember that period fondly, a kind of renaissance for web development, where the goal was to make things simpler. While that goal is never-ending, we are undeniably in a better place today than we were back then.

At the time, I worked as a consultant and dabbled in all sorts of technologies. I vividly remember onboarding a colleague onto a project built with AngularJS. He didn’t struggle per se, but something felt off. The learning curve wasn’t steep, it was wide.

Later that day, during lunch, he told me about this thing called Vue. From my perspective, it looked like a scaled-down version of AngularJS, but with a far more elegant and intentional component model.

Little did I know that a few years later I’d attend a Vue conference and meet Rolf Haug and Alex Kyriakidis, the founders of VueSchool.

Using Vue was simply… fun!

Over time, its ecosystem grew to include first-class solutions for state management, testing, routing, and more. Vue felt cohesive in a way few frameworks did.

The arrival of Vue 3

Then, in September 2020, Vue 3.0 landed.

My recollection is that the community didn’t take it particularly well. Some were excited. Others were cautiously optimistic. Many were frustrated by the sheer number of changes between the two versions. Vue 3 shipped, but the ecosystem lagged behind. In hindsight, that gap likely hurt adoption and migration efforts more than anything else.

At the end of 2023, Vue 2 officially reached end of life. Prior to that, Vue 2.7 was released as a kind of bridge: a compatibility release where some, but not all, Vue 3 features were backported to ease the transition.

But all of that belongs to the past.

Vue 3 is better than its predecessor in virtually every way. We’re almost six years into its lifecycle. Surely, people have moved on?

Out of plain curiosity, I looked at the download numbers for the period between January 16 and January 23, 2026:

  • Vue 3.x: 6,680,552 downloads
  • Vue 2.x: 1,595,906 downloads

Those numbers are … surprising.

Of course, downloads don’t equal active applications. But the signal is still hard to ignore. Vue 2 clearly hasn’t disappeared.

Migrating from Vue 2 to Vue 3 is hard. Migrating a small project is one thing, migrating a large, long-lived application is something else entirely.

Over the course of this series, I’ll walk through how I approach migrating a Vue 2 application to Vue 3. Not toy examples or full-on rewrites, but large codebases with history, constraints, and active development.

In the next part, we’ll start where every successful migration should: with a plan.

← Go back