Why a site that feels fine on a fast laptop can still lose customers on a phone, and the fixes that move Core Web Vitals.
Performance work has a reputation for being invisible: weeks of effort, no visible design change. The numbers still move, and they correlate directly with conversion, bounce rate, and what a paid campaign costs per click. Most of the damage comes from a short list of fixable causes.
A Next.js build is not automatically fast. Most slow sites we audit share the same three problems: unoptimized images, blocking third-party scripts, and layouts that shift as content loads. Fixing those three usually cuts load times by more than half.
The usual suspects: images, fonts, and third-party scripts
In nearly every audit, the largest contentful paint is an image, the biggest layout shift is a late-loading banner or font, and the longest blocking task comes from an analytics or chat widget. The framework is rarely the bottleneck.
The three issues we find most often:
Images served at desktop resolution on mobile, in legacy formats, with no width or height attributes to reserve space.
Fonts loaded after first paint, causing text to reflow and the page to shift while the user is already reading.
Third-party scripts loaded eagerly in the head, blocking rendering for tools that could wait until after interaction.
A practical performance checklist
Rather than chasing a perfect score, we work through a prioritized checklist against real device data:
1. Measure on real devices:
We pull field data from analytics to see what real visitors experience on mid-range phones and slow connections, then prioritize the pages that carry the most traffic and revenue.
2. Fix the heavy assets first:
Responsive images in modern formats, explicit dimensions, font preloading with a local fallback, and deferred loading for anything below the fold. This usually produces the largest single improvement.
3. Audit every third-party script:
Each widget gets a job: does it support a business goal? If not, it is removed. If it stays, it loads after interaction, runs from a tag manager, and is reviewed quarterly.

KEY INSIGHT
"Performance is a product decision, not a cleanup task. Every script you add is weight every future visitor carries."
Engineering Lead, Edgeless

Before and after a performance pass
Results from a recent marketing site rebuild, measured on mobile field data over 30 days:
What to do first
Start with the assets: images, fonts, and video are usually the heaviest and easiest wins. Fixing them rarely requires touching application logic.
Then treat third-party scripts like dependencies. If a tool cannot justify its weight against a business goal, remove it or load it lazily.
Compress and resize images per breakpoint
Preload critical fonts and defer the rest
Load analytics and chat widgets after interaction
A faster site is a set of constraints you keep in place: a performance budget, a script review process, and field monitoring that catches regressions before customers do.
Performance
Next.js
Web Development