---
title: "Vue 2 to 3 and Nuxt 2 to 4 migrations, Laravel and PHP upgrades | Liviu.dev"
description: "Migrate Vue 2 to Vue 3 and Nuxt 2 to Nuxt 4, upgrade old Laravel and PHP apps or move WordPress to Nuxt, in small tested steps. Projects from €3,000."
canonical_url: "https://liviu.dev/services/legacy-migrations"
locale: en
meta:
  "og:description": "Migrate Vue 2 to Vue 3 and Nuxt 2 to Nuxt 4, upgrade old Laravel and PHP apps or move WordPress to Nuxt, in small tested steps. Projects from €3,000."
  "og:image": "https://liviu.dev/_og/d/c_Default%2Ctitle_~VnVlIDIgdG8gMyBhbmQgTnV4dCAyIHRvIDQgbWlncmF0aW9ucywgTGFyYXZlbCBhbmQgUEhQIHVwZ3JhZGVz%2Cdescription_~TWlncmF0ZSBWdWUgMiB0byBWdWUgMyBhbmQgTnV4dCAyIHRvIE51eHQgNCwgdXBncmFkZSBvbGQgTGFyYXZlbCBhbmQgUEhQIGFwcHMgb3IgbW92ZSBXb3JkUHJlc3MgdG8gTnV4dCwgaW4gc21hbGwgdGVzdGVkIHN0ZXBzLiBQcm9qZWN0cyBmcm9tIOKCrDMsMDAwLg%2Ceyebrow_~TGl2aXUuZGV2IMK3IExlZ2FjeSBtaWdyYXRpb25z%2Cprice_~RnJvbSDigqwzLDAwMA%2Cp_Ii9zZXJ2aWNlcy9sZWdhY3ktbWlncmF0aW9ucyI.png"
  "og:image:height": "600"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "Vue 2 to 3 and Nuxt 2 to 4 migrations, Laravel and PHP upgrades"
  "twitter:image": "https://liviu.dev/_og/d/c_Default%2Ctitle_~VnVlIDIgdG8gMyBhbmQgTnV4dCAyIHRvIDQgbWlncmF0aW9ucywgTGFyYXZlbCBhbmQgUEhQIHVwZ3JhZGVz%2Cdescription_~TWlncmF0ZSBWdWUgMiB0byBWdWUgMyBhbmQgTnV4dCAyIHRvIE51eHQgNCwgdXBncmFkZSBvbGQgTGFyYXZlbCBhbmQgUEhQIGFwcHMgb3IgbW92ZSBXb3JkUHJlc3MgdG8gTnV4dCwgaW4gc21hbGwgdGVzdGVkIHN0ZXBzLiBQcm9qZWN0cyBmcm9tIOKCrDMsMDAwLg%2Ceyebrow_~TGl2aXUuZGV2IMK3IExlZ2FjeSBtaWdyYXRpb25z%2Cprice_~RnJvbSDigqwzLDAwMA%2Cp_Ii9zZXJ2aWNlcy9sZWdhY3ktbWlncmF0aW9ucyI.png"
---

> Index of every page on this site: [llms.txt](https://liviu.dev/llms.txt)

# Vue 2 to 3 and Nuxt 2 to 4 migrations, Laravel and PHP upgrades

Vue 2 to 3, Nuxt 2 to 4, Laravel and PHP upgrades, or WordPress to Nuxt, without freezing your roadmap.

**Starting price**

**From €3,000**

The final price depends on scope. You get a fixed quote or a day-rate estimate before any work starts.

[Get a quote](https://liviu.dev/hire-me?service=legacy-migrations) [See my work](https://liviu.dev/portfolio)

## Is your app stuck on an old version?

Vue 2 reached end of life at the end of 2023 and Nuxt 2 followed in mid-2024. Neither gets security fixes anymore, new libraries stop supporting them, and the gap to current versions grows every month. The same happens to Laravel apps left several major versions behind and to servers running PHP releases that are out of support.

I help founders, CTOs and product teams in one of these situations:

- A Vue 2 or Nuxt 2 app that still works, but nobody wants to touch it
- A Laravel or plain PHP app several versions behind, with abandoned packages
- A codebase inherited from a previous developer or agency, with no tests and little documentation
- A WordPress site you want to move to Nuxt for speed and a custom front end

## How I approach a migration

I start by reading and running the code, not by estimating from the outside. The result is a written plan: what blocks the upgrade, which packages to replace and in what order to do the work. Then I upgrade in small, tested steps that keep the app releasable, so your team can keep shipping while the migration happens.

For Vue and Nuxt this usually means moving from Vuex to Pinia and from Webpack to Vite, adding TypeScript where it helps and replacing plugins that never got a Vue 3 version. For Laravel it means one major version at a time, a supported PHP release and tests around the flows that bring in revenue. For WordPress to Nuxt, every old URL gets a redirect, so the search rankings you built over the years are not thrown away.

I use AI coding tools such as Claude Code and Cursor for the repetitive parts of an upgrade, and I review and test every change myself.

## Proof

In 2024 I took over WithMaslow.com, a personality assessment platform, from its previous developers and rebuilt the API in Laravel 13 on PostgreSQL, behind a Nuxt 4 front end, so the stack you are moving to is one I work with every day. This site, liviu.dev, started on Nuxt 3 in 2022 and runs on Nuxt 4 today. Details are in my [portfolio](https://liviu.dev/portfolio).

## What affects the price

Projects start from €3,000; you get a fixed quote after a short scoping call. The price depends on the size of the codebase, the number of abandoned dependencies, whether tests exist and how much of the app needs rebuilding rather than upgrading. For new features on the upgraded app, I offer [Nuxt development](https://liviu.dev/services/nuxt-development) and [Vue.js development](https://liviu.dev/services/vue-development) by the hour, and a [maintenance plan](https://liviu.dev/services/maintenance-support) keeps you on current versions so you do not end up here again.

Send me a short description of your stack and its versions, and I will tell you what the upgrade involves. [Get a quote](https://liviu.dev/hire-me?service=legacy-migrations) and I will reply within one working day.

## **How we work**

1. **1**### **Code review**

   I read and run your code, then list what blocks the upgrade, from deprecated APIs to packages that will never support the new version.
2. **2**### **Migration plan and quote**

   You get a written plan with a fixed price or a day-rate estimate, and we agree the order of work with your team.
3. **3**### **Upgrade in small steps**

   I upgrade behind tests in short-lived branches, with weekly demos on staging, so the app stays releasable throughout.
4. **4**### **Release and handover**

   We release in an agreed window and watch for errors, then I hand over notes on what changed and how to keep the app current.

## **Related work**

- [![With Maslow logo, personality assessment platform built by Liviu Zachin](https://liviu.dev/img/portfolio/withmaslow-com-light.svg)<h3>**With Maslow**</h3>

  Enneagram, Big Five and 16 Personalities assessments with friends-and-family perspectives, teams, AI insights and an MCP server. Took over the codebase in 2024 and rebuilt the API in Laravel.](https://withmaslow.com)
- [![Liviu.dev logo, personal website built by Liviu Zachin](https://liviu.dev/img/portfolio/liviu-dev-light.svg)<h3>**Liviu.dev**</h3>

  This website, a bilingual Nuxt site with a blog, mentorship plans, lead forms and structured data for search engines and AI assistants.](https://liviu.dev)

## **Frequently asked questions**

<details>

<summary>

### How much does a Vue 2 to Vue 3 or Nuxt 2 to Nuxt 4 migration cost?

</summary>

Migrations start from €3,000 for a small app. The price depends on the size of the codebase, how many abandoned plugins need replacing and whether tests already exist. After I review the code you get a fixed price or a day-rate estimate at €480/day.

</details>

<details>

<summary>

### How long does it take to migrate from Nuxt 2 to Nuxt 4?

</summary>

A small app usually takes one to three weeks. Apps with many modules, a large Vuex store or plugins that never got a Vue 3 version take longer, and I give you a timeline after reviewing the code.

</details>

<details>

<summary>

### Do we have to stop building features during the migration?

</summary>

Usually not. I work in small branches, merge often and keep the app releasable, so your team can keep shipping. For a few steps, such as switching the build tool, we agree a short freeze window in advance.

</details>

<details>

<summary>

### Should we rewrite the app from scratch instead of upgrading?

</summary>

Rarely the whole app. A rewrite throws away years of fixed bugs and handled edge cases. I upgrade in place where the code is sound and rebuild only the parts that are not worth saving. On WithMaslow.com, for example, I took over the existing codebase and rebuilt the API in Laravel 13 on PostgreSQL.

</details>

<details>

<summary>

### Can you upgrade an old Laravel app to Laravel 13?

</summary>

Yes. I upgrade one major version at a time, move PHP to a supported release, replace abandoned packages and add tests around the critical paths. Laravel 13 is what I run in production on WithMaslow.com.

</details>

<details>

<summary>

### Can you move our WordPress site to Nuxt without losing SEO?

</summary>

Yes, if the move is planned. I map every old URL to its new address with a redirect, keep titles, meta descriptions and structured data, and move the content into Nuxt Content or a headless CMS. After launch I check Search Console for any URLs that were missed.

</details>

## **Related services**

[<h3>**Nuxt development**</h3>Fast, SEO-friendly Nuxt 4 sites and apps with SSR, content, i18n and dashboards, from a developer who works in Nuxt every day.**From €60/hour****Details **](https://liviu.dev/services/nuxt-development) [<h3>**Vue.js development**</h3>Vue 3 front ends, component libraries and dashboards in TypeScript, with Pinia and tests that keep them maintainable.**From €60/hour****Details **](https://liviu.dev/services/vue-development) [<h3>**Maintenance & support**</h3>Updates, security patches, monitoring, backups and small improvements on a monthly plan, from a developer who knows your code.**From €400/month****Details **](https://liviu.dev/services/maintenance-support)

## **Let's talk about your project**

Send me a few lines about what you need. I reply within one working day with questions or a first estimate.

[Get a quote](https://liviu.dev/hire-me?service=legacy-migrations)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://liviu.dev/#website","@type":"WebSite","description":"Hire Liviu Zachin, a freelance full-stack developer for Nuxt, Vue, Laravel and AI integration. 15+ years of shipping web products for teams across the EU and US.","inLanguage":"en-US","name":"Liviu.dev","url":"https://liviu.dev/","publisher":{"@id":"https://liviu.dev/#identity"},"workTranslation":{"@id":"https://liviu.dev/ro#website"}},{"@id":"https://liviu.dev/services/legacy-migrations#webpage","description":"Migrate Vue 2 to Vue 3 and Nuxt 2 to Nuxt 4, upgrade old Laravel and PHP apps or move WordPress to Nuxt, in small tested steps. Projects from €3,000.","name":"Vue 2 to 3 and Nuxt 2 to 4 migrations, Laravel and PHP upgrades","url":"https://liviu.dev/services/legacy-migrations","@type":["WebPage","FAQPage"],"breadcrumb":{"@id":"https://liviu.dev/services/legacy-migrations#/schema/breadcrumb-list/#breadcrumb"},"isPartOf":{"@id":"https://liviu.dev/#website"},"mainEntity":[{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/1"},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/2"},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/3"},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/4"},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/5"},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/6"}],"potentialAction":[{"@type":"ReadAction","target":["https://liviu.dev/services/legacy-migrations"]}]},{"@id":"https://liviu.dev/#identity","@type":"Person","alternateName":"Liviu Mihai Zachin","description":"Freelance full-stack developer with 15+ years of experience building Nuxt, Vue, Laravel and AI-powered web products for teams across the EU and US.","email":"contact@liviu.dev","jobTitle":"Freelance Full-Stack Web Developer","name":"Liviu Zachin","url":"https://liviu.dev","address":{"addressCountry":"RO"},"image":{"@id":"https://liviu.dev/#/schema/image/1"},"knowsAbout":["Nuxt","Vue.js","Laravel","TypeScript","PHP","React","Next.js","WordPress","AI integration","Large language models","Model Context Protocol","Technical SEO","Web performance"],"sameAs":["https://github.com/liviuzachin","https://www.linkedin.com/in/liviuzachin","https://x.com/liviuzachin","https://www.youtube.com/c/Webmaster_ro","https://www.facebook.com/liviuzachin","https://www.instagram.com/luigindahouse"]},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/breadcrumb-list/#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Home","item":"https://liviu.dev/","position":1},{"@type":"ListItem","name":"Services","item":"https://liviu.dev/services","position":2},{"@type":"ListItem","name":"Legacy migrations","item":"https://liviu.dev/services/legacy-migrations","position":3}]},{"@id":"https://liviu.dev/services/legacy-migrations#service","@type":"Service","description":"Migrate Vue 2 to Vue 3 and Nuxt 2 to Nuxt 4, upgrade old Laravel and PHP apps or move WordPress to Nuxt, in small tested steps. Projects from €3,000.","name":"Legacy migrations","serviceType":"Legacy migrations","areaServed":["European Union","United States","United Kingdom"],"availableChannel":{"@type":"ServiceChannel","serviceUrl":"https://liviu.dev/hire-me?service=legacy-migrations"},"brand":{"@id":"https://liviu.dev/#identity"},"image":{"@id":"https://liviu.dev/#/schema/image/2"},"mainEntityOfPage":{"@id":"https://liviu.dev/services/legacy-migrations#webpage"},"offers":{"@type":"Offer","availability":"https://schema.org/InStock","priceCurrency":"EUR","price":3000,"description":"From €3,000","priceSpecification":{"@type":"UnitPriceSpecification","priceCurrency":"EUR","minPrice":3000},"priceValidUntil":"2027-12-30T00:00:00.000Z"},"provider":{"@id":"https://liviu.dev/#identity"}},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/1","@type":"Question","inLanguage":"en-US","name":"How much does a Vue 2 to Vue 3 or Nuxt 2 to Nuxt 4 migration cost?","acceptedAnswer":{"@type":"Answer","text":"Migrations start from €3,000 for a small app. The price depends on the size of the codebase, how many abandoned plugins need replacing and whether tests already exist. After I review the code you get a fixed price or a day-rate estimate at €480/day."}},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/2","@type":"Question","inLanguage":"en-US","name":"How long does it take to migrate from Nuxt 2 to Nuxt 4?","acceptedAnswer":{"@type":"Answer","text":"A small app usually takes one to three weeks. Apps with many modules, a large Vuex store or plugins that never got a Vue 3 version take longer, and I give you a timeline after reviewing the code."}},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/3","@type":"Question","inLanguage":"en-US","name":"Do we have to stop building features during the migration?","acceptedAnswer":{"@type":"Answer","text":"Usually not. I work in small branches, merge often and keep the app releasable, so your team can keep shipping. For a few steps, such as switching the build tool, we agree a short freeze window in advance."}},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/4","@type":"Question","inLanguage":"en-US","name":"Should we rewrite the app from scratch instead of upgrading?","acceptedAnswer":{"@type":"Answer","text":"Rarely the whole app. A rewrite throws away years of fixed bugs and handled edge cases. I upgrade in place where the code is sound and rebuild only the parts that are not worth saving. On WithMaslow.com, for example, I took over the existing codebase and rebuilt the API in Laravel 13 on PostgreSQL."}},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/5","@type":"Question","inLanguage":"en-US","name":"Can you upgrade an old Laravel app to Laravel 13?","acceptedAnswer":{"@type":"Answer","text":"Yes. I upgrade one major version at a time, move PHP to a supported release, replace abandoned packages and add tests around the critical paths. Laravel 13 is what I run in production on WithMaslow.com."}},{"@id":"https://liviu.dev/services/legacy-migrations#/schema/question/6","@type":"Question","inLanguage":"en-US","name":"Can you move our WordPress site to Nuxt without losing SEO?","acceptedAnswer":{"@type":"Answer","text":"Yes, if the move is planned. I map every old URL to its new address with a redirect, keep titles, meta descriptions and structured data, and move the content into Nuxt Content or a headless CMS. After launch I check Search Console for any URLs that were missed."}},{"@id":"https://liviu.dev/#/schema/image/1","@type":"ImageObject","contentUrl":"https://liviu.dev/img/liviu-zachin.jpg","inLanguage":"en-US","url":"https://liviu.dev/img/liviu-zachin.jpg"},{"@id":"https://liviu.dev/#/schema/image/2","@type":"ImageObject","contentUrl":"https://liviu.dev/_og/d/c_Default%2Ctitle_~VnVlIDIgdG8gMyBhbmQgTnV4dCAyIHRvIDQgbWlncmF0aW9ucywgTGFyYXZlbCBhbmQgUEhQIHVwZ3JhZGVz%2Cdescription_~TWlncmF0ZSBWdWUgMiB0byBWdWUgMyBhbmQgTnV4dCAyIHRvIE51eHQgNCwgdXBncmFkZSBvbGQgTGFyYXZlbCBhbmQgUEhQIGFwcHMgb3IgbW92ZSBXb3JkUHJlc3MgdG8gTnV4dCwgaW4gc21hbGwgdGVzdGVkIHN0ZXBzLiBQcm9qZWN0cyBmcm9tIOKCrDMsMDAwLg%2Ceyebrow_~TGl2aXUuZGV2IMK3IExlZ2FjeSBtaWdyYXRpb25z%2Cprice_~RnJvbSDigqwzLDAwMA%2Cp_Ii9zZXJ2aWNlcy9sZWdhY3ktbWlncmF0aW9ucyI.png","inLanguage":"en-US","url":"https://liviu.dev/_og/d/c_Default%2Ctitle_~VnVlIDIgdG8gMyBhbmQgTnV4dCAyIHRvIDQgbWlncmF0aW9ucywgTGFyYXZlbCBhbmQgUEhQIHVwZ3JhZGVz%2Cdescription_~TWlncmF0ZSBWdWUgMiB0byBWdWUgMyBhbmQgTnV4dCAyIHRvIE51eHQgNCwgdXBncmFkZSBvbGQgTGFyYXZlbCBhbmQgUEhQIGFwcHMgb3IgbW92ZSBXb3JkUHJlc3MgdG8gTnV4dCwgaW4gc21hbGwgdGVzdGVkIHN0ZXBzLiBQcm9qZWN0cyBmcm9tIOKCrDMsMDAwLg%2Ceyebrow_~TGl2aXUuZGV2IMK3IExlZ2FjeSBtaWdyYXRpb25z%2Cprice_~RnJvbSDigqwzLDAwMA%2Cp_Ii9zZXJ2aWNlcy9sZWdhY3ktbWlncmF0aW9ucyI.png"}]}
```

## Sitemap

See the full [sitemap](https://liviu.dev/sitemap.md) for all pages.
