Service·Vue 3·Nuxt·Measured before and after

Vue performance optimization for apps that feel slow

Slow pages lose visitors, and slow dashboards waste your customers' day. Our senior engineers measure where your Vue or Nuxt app spends its time, fix the biggest causes first and show you the numbers before and after each change.

  • Core Web Vitals
  • LCP · INP · CLS
  • Bundle analysis
  • Hydration
  • Nuxt SSR
  • Virtual scrolling
  • Vite
$1,499
Part-time senior engineer
per month · 80 hours
$2,499
Full-time senior engineer
per month · 160 hours
48 h
Typical start
in most cases
You approve
Meet the engineer first
before onboarding

Where slow Vue apps usually lose time

A huge first bundle

Every route, chart library and icon set ships on the first load, because nothing is split by route or loaded on demand.

Clicks that feel sticky

A click or keystroke waits behind long JavaScript tasks, often a large reactive update or a list that re-renders in full. That is what a poor INP score looks like.

Long lists and big tables

Thousands of rows render at once, each one reactive. Scrolling stutters, and memory climbs the longer the tab stays open.

Hydration that costs more than it gives

A Nuxt page renders on the server, then the browser hydrates every component, including ones far below the fold. Mismatches add extra work and console warnings.

Deep reactivity on large data

Big API responses wrapped in ref() make Vue track every nested field, even data the screen only reads once.

A spinner on every visit

The app waits for the API before it shows anything, however fast the API is. Nothing is cached between visits or between routes.

What we measure first

  1. Core Web Vitals in the field and in the lab: LCP, INP and CLS
  2. Bundle size per route, and what each chunk contains
  3. Long tasks and component re-renders in the browser profiler and Vue DevTools
  4. Hydration cost and mismatches on server-rendered pages
  5. API waterfalls, payload size and caching headers
  6. Fonts, images and third-party scripts on the critical path

From first call to handover

01

Agree what slow means

We pick the pages and interactions that matter to your business and record a baseline: Core Web Vitals, bundle size and the timings your users notice.

You get
  • A baseline report
  • The pages and flows we'll target
  • How progress will be measured
02

Find the causes

We profile the app and trace each slow moment to a cause, such as a chunk that loads too early, a list that re-renders in full or a hydration mismatch.

You get
  • Causes ranked by impact and effort
  • Evidence for each: traces and bundle maps
  • Quick wins flagged
03

Fix in small changes

Each fix is its own pull request: route-level code splitting, defineAsyncComponent, shallowRef for large read-only data, v-memo on heavy lists or virtual scrolling.

You get
  • One cause per pull request
  • Fixes you can roll back one at a time
  • No feature freeze for your team
04

Measure again

After each change we re-run the same measurements, so you can see which fixes moved the numbers and which didn't.

You get
  • Before and after numbers per fix
  • Changes that didn't help, reverted
  • A clear picture of what is left
05

Keep it fast

Speed tends to slip one feature at a time. We hand over budgets and the checks that guard them, so the next release doesn't undo the work.

You get
  • Bundle size budgets
  • A checklist for new pages
  • Handover notes for your team

What you have at the end

Baseline and after report

Core Web Vitals, bundle sizes and key timings before and after, measured the same way each time.

Ranked causes

What makes the app slow, ordered by impact and effort, with the evidence behind each one.

Pull requests

Reviewable fixes in your repository, one cause per PR, so each can be checked and rolled back on its own.

Bundle map

What ships on each route and why, and what we moved out of the first load.

Rendering notes

For Nuxt apps: which pages render on the server, which are cached with Nitro route rules and which hydrate lazily.

Performance budget

Limits for bundle size and key metrics, plus the checks that warn when a change goes over them.

Pick the model that fits the work

Monthly billing at a flat rate. No onboarding fees, no minimum commitment, and you can pause or cancel anytime. Our hours overlap with US and EU time zones.

Part-Time Senior Vue Engineer

$1,499/ month
80 hours per month

Performance work next to your team: we find the causes and ship the fixes while your developers stay on features.

Full-Time Senior Vue Engineer

$2,499/ month
160 hours per month

A senior engineer focused on speed until the targets are met, then on keeping new features within budget.

Dedicated Vue Squad

Custom
Several engineers + a lead

For large products where performance work spans several apps or teams and needs shared standards.

Short engagement

Scoped
Add-on or one-off

A performance audit on its own: the baseline, the ranked causes and a fix plan your team carries out.

See full pricing and what every plan includes →

When we're not the right call

We'd rather tell you now than sell you the wrong engagement.

  • Your backend is the bottleneck. If most of the wait is a slow API or database, front-end work won't fix it, and we'll show you the evidence.
  • You want a guaranteed Lighthouse score. We measure and report honestly, but we won't promise a number before we've profiled your app.
  • Slowness is a symptom of deeper structural problems. Then a full code review is the better place to start.

Questions buyers ask us

How do you measure Vue performance?

With Core Web Vitals (LCP for loading, INP for responsiveness, CLS for layout shifts), bundle size per route and profiles of the interactions your users complain about. We record a baseline first and measure the same way after every change.

What changed when INP replaced FID?

INP replaced FID as a Core Web Vital in March 2024. FID only measured the delay before the first interaction, while INP looks at responsiveness across the whole visit. Heavy reactive updates and large re-renders now show up in your scores.

Can you speed up a Nuxt app without a rewrite?

Usually, yes. Most gains come from targeted changes: moving heavy components out of the first load, caching routes with Nitro route rules, fixing hydration mismatches and, on Vue 3.5 or later, hydrating async components lazily.

Do you guarantee a Lighthouse score?

No. We can't promise a number before we've profiled your app. We promise to measure honestly, fix the biggest causes first and show you what changed.

How is this different from a code audit?

A performance audit answers one question: why is it slow, and what fixes it. A code audit reviews the whole codebase, including structure, state, data flow and risk. If speed is a symptom of deeper problems, we'll tell you to start with the wider review.

What does performance work cost?

A performance audit is available as a short engagement, scoped with you. Ongoing work runs on our monthly plans: $1,499 a month part-time or $2,499 full-time, with no minimum commitment.

Get started

Is your Vue app slower than it should be?

Send us the URL or the screen that feels slow, the Vue or Nuxt version and what your users complain about. A senior engineer will reply with what we'd measure first.

Matched in 24 hours·48 hours free on every plan·No long-term contract