Skip to content

Own project · Documented technical case

A Nuxt 4 portfoliowith measurable acquisition foundations

I used my own production site to move from Nuxt 3.7 to Nuxt 4 and build the search, measurement and contact foundations around it.

Documented scope

Facts before conclusions

The figures below come from dated repository, production and Search Console observations, with their limits stated alongside them.

Framework upgrade
3.7 → 4
Declared Nuxt version
Languages retained
3
English, Spanish and Catalan
URLs already discovered
18
Search Console before this case was published
Priority Spanish pages indexed
4/4
Four ES routes checked on 14 September 2026

The search data is an early observation, not proof that the implementation caused growth. Publishing this case expands the technical sitemap from 18 to 21 localised URLs; Search Console will continue to show the earlier 18 until Google processes the updated sitemap. This is a small portfolio project, not a claim of enterprise migration scale.

The starting point

A real system, with honest boundaries

This is not a client story or a borrowed testimonial. It is the product I own and operate, so its architecture, code, deployment and measurement can be examined together.

Project type
Own multilingual portfolio running in production
My role
Product owner and current evolution lead: scope, technical direction, implementation and verification. The repository retains earlier contributions
Boundary
Evidence of applied Nuxt work on a portfolio; not a fictional client project or an enterprise-scale claim

What changed

Four reviewable layers

The framework upgrade was one step. Search visibility, contact reliability and ongoing observation were treated as separate pieces of the system.

  1. 01

    20 April 2026

    Nuxt 4 and multilingual foundation

    The project moved from Nuxt 3.7 to a Nuxt 4 codebase while its three-language structure was reorganised for the newer i18n module.

    • Updated Nuxt, i18n, gtag, Tailwind, VueUse and Swiper together.
    • Moved locale configuration into the current i18n structure and retained English, Spanish and Catalan routes.
    • The visual redesign and dependency upgrade happened in the same change, so I do not claim an isolated performance uplift.
  2. 02

    19 August 2026

    Search and acquisition layer

    The site gained a focused Nuxt 3 to 4 service page and a deliberate technical SEO contract for every locale.

    • Added server-rendered migration pages with localised titles, descriptions and service/FAQ structured data.
    • Validated canonical URLs, hreflang groups, robots rules, redirects and a curated sitemap that grew from 15 to 18 URLs.
    • Added privacy-conscious CTA, form-start and contact-intent events plus real-user performance collection.
  3. 03

    7 September 2026

    A contact route that can be verified

    The mailto-only journey was extended with a server endpoint and an explicit distinction between user intent, provider acceptance and a real lead.

    • Added input validation, a honeypot, body-size and origin checks, idempotency and a basic per-instance limit; the platform firewall rule remains in observation mode.
    • Connected Resend and recorded technical acceptance without sending personal data to Analytics.
    • Kept provider acceptance separate from a received, qualified or won lead.
  4. 04

    Weekly

    Observation before optimisation

    A read-only review compares search, traffic, contact signals and real-user performance before proposing the next change.

    • Search Console is the source of truth for impressions, clicks and indexation.
    • Vercel Analytics separates content engagement from contact intent; tests are not counted as clients.
    • Core Web Vitals are interpreted only with their p75 sample size, not as a score without context.

Reusable approach

The migration checklist behind the work

A Nuxt upgrade is safer when compatibility and business-critical behaviour are made explicit before changing code.

  1. 01

    Inventory the runtime

    Record Nuxt, Node, modules, integrations, build settings and test coverage before choosing a migration sequence.

  2. 02

    Protect routes and locales

    Map public URLs, redirects and language variants so a structural upgrade does not create silent 404s or duplicate pages.

  3. 03

    Compare rendered behaviour

    Check server rendering, hydration, data fetching and client-only code on the journeys users actually rely on.

  4. 04

    Treat SEO as an interface

    Verify titles, rendered content, canonical links, hreflang, robots, structured data and sitemap output.

  5. 05

    Exercise critical flows

    Build successfully, then test navigation, forms, validation, analytics and deployment-specific configuration.

  6. 06

    Observe after release

    Watch errors, 5xx responses, indexation, real-user performance and commercial signals before declaring success.

Dated observation

Early search visibility, not a victory lap

The first comparable Search Console window after the acquisition work covers 5–11 September 2026 versus the previous seven days.

  • 58 impressions and 2 clicks

    The previous window recorded 8 impressions and 0 clicks. The increase is directional; the volume is still too small for a reliable trend.

  • Relevant Nuxt migration queries appeared

    Search Console showed terms around Nuxt migration services and moving from Nuxt 3 to Nuxt 4, which supports continuing to test this offer.

  • The on-site contact journey is observable

    CTA clicks, form starts, contact intent and provider acceptance are distinct events, so a technical test is not silently reported as a customer.

For another project

What transfers

The reusable result is the method: inventory, migrate, protect discoverability, verify the journey and observe the business signal.

For a company application, I would adapt the same sequence to its modules, integrations, release process, traffic risk and critical user journeys. Scope and proof would come from that system, not from this portfolio.

See how I approach a Nuxt 3 to Nuxt 4 migration →

Do you have an older Nuxt application?

Start with a clear technical review

Tell me the Nuxt version, important modules and what cannot afford to break. I will suggest the clearest next step without inflating the scope.