Open your website on a mid-range Android phone, on a 4G connection, from a basement office in Nehru Place. Count how long you wait before you can read anything. That wait is what Google measures. It's also what your customers feel before they hit the back button and call the next name in the search results.
Most Delhi business owners have never looked at this number. The ones who do usually find the same thing: a site that scores fine on the agency's fibre connection and falls apart on real phones.
This post covers what Core Web Vitals are, how much they actually move rankings, and how a Next.js build fixes the problems that WordPress themes and page builders keep creating.
What Core Web Vitals Measure
Google tracks three numbers, taken from real Chrome users visiting your site. It looks at the 75th percentile, so your slowest quarter of visits counts too.
| Metric | What it measures | Good | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | How long the main content takes to appear | 2.5 s or less | Over 4 s |
| INP (Interaction to Next Paint) | How quickly the page reacts to taps and clicks | 200 ms or less | Over 500 ms |
| CLS (Cumulative Layout Shift) | How much the layout jumps while loading | 0.1 or less | Over 0.25 |
INP replaced the old FID metric in 2024. If a report still talks about FID, it's out of date.
Do They Really Affect Rankings?
Honestly: they're a tiebreaker, not a magic switch. A thin page with great speed will not outrank a useful page with average speed. Content relevance and links still do most of the work.
But look at where Delhi NCR competition actually sits. Search "web development company in Noida" or "interior designer in Gurgaon" and the top ten results all have decent content. When ten pages are close on relevance, the ones that load fast and don't jump around win the close calls. And the speed gain pays you back twice: users who don't bounce also send Google better engagement signals.
The bigger effect is on revenue. A visitor who came from a Google Ads click at ₹40 a click and left after four seconds of blank screen has cost you money for nothing.
Why Delhi Sites Fail These Tests
We run audits on local business sites often. The same causes show up again and again:
- Hero images straight from a phone camera. A 4 MB JPEG as the banner image kills LCP on its own.
- Page builders loading 800 KB of JavaScript for a page that is mostly text and three photos.
- Five tracking scripts (Analytics, Meta Pixel, a heat-map tool, a chat widget, a WhatsApp plugin) all fighting for the main thread. This is the usual INP killer.
- Fonts that swap late, so the text shifts when the real font arrives.
- Banners and cookie bars injected after load, pushing content down. Classic CLS.
- Cheap shared hosting with a 1.5 second server response before the browser even starts.
Your users aren't on office broadband either. Think of someone in Dwarka on a ₹12,000 phone with the signal bouncing between 4G and 3G on the Metro. Test for that person.
How Next.js Fixes Each One
Next.js doesn't make a site fast by itself. It makes the fast choice the default one.
- Image component. Serves WebP or AVIF, resizes per device, lazy loads below the fold, and reserves space so images can't shift the layout.
- Font loading.
next/fontself-hosts the font and sets size adjustments, so there's no flash and no layout jump. - Server rendering and static generation. The HTML arrives ready to read. No waiting for JavaScript to build the page first.
- Automatic code splitting. Each page ships only the JavaScript it needs.
- Script control.
next/scriptlets you push analytics and chat widgets until after the page is interactive.
For a deeper look at why this matters for search, see our post on why Next.js suits SEO-focused corporate sites.
A Practical Setup You Can Copy
Here's the core of a landing page layout. The hero image is preloaded because it's the LCP element. Everything else is deferred.
// app/layout.tsx
import type { ReactNode } from "react";
import { Inter } from "next/font/google";
import Script from "next/script";
import { WebVitals } from "./web-vitals";
const inter = Inter({ subsets: ["latin"], display: "swap" });
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="en-IN" className={inter.className}>
<body>
<WebVitals />
{children}
{/* Loads after the page is interactive, so it can't hurt INP at startup */}
<Script
src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"
strategy="lazyOnload"
/>
</body>
</html>
);
}
// app/page.tsx
import Image from "next/image";
export default function Home() {
return (
<section>
<h1>Interior Design in Gurgaon</h1>
{/* width and height reserve the space, so CLS stays near zero */}
<Image
src="/hero-living-room.jpg"
alt="Finished living room project in DLF Phase 3"
width={1200}
height={700}
sizes="(min-width: 1024px) 1200px, 100vw"
preload
/>
</section>
);
}
On Next.js 16 the old priority prop is deprecated. Use preload for the one image that is your LCP element, and leave everything else lazy.
Measure Real Users, Not Just Lighthouse
Lighthouse is a lab test on a simulated phone. It's useful, but your ranking depends on field data. Collect it yourself so you know what Delhi users actually experience:
// app/web-vitals.tsx
"use client";
import { useReportWebVitals } from "next/web-vitals";
function report(metric: {
id: string;
name: string;
value: number;
rating: string;
}) {
const body = JSON.stringify({
id: metric.id,
name: metric.name,
value: metric.value,
rating: metric.rating,
path: window.location.pathname,
});
// sendBeacon survives page unloads, which is when LCP and CLS often finalise
navigator.sendBeacon("/api/vitals", body);
}
export function WebVitals() {
useReportWebVitals(report);
return null;
}
Point /api/vitals at a small route handler that writes to your database or your analytics tool. After a few days you'll see which pages are slow, on which devices, and whether a change helped.
Cross-check with the free Core Web Vitals report in Google Search Console. It uses Chrome's own field data and is the closest thing to what Google sees.
A Before and After You Can Expect
These are typical ranges from rebuilds of brochure and lead-gen sites, not promises. Your starting point and hosting will change the result.
| WordPress with page builder | Next.js rebuild | |
|---|---|---|
| LCP on mid-range Android, 4G | 4 to 6 s | 1.5 to 2.5 s |
| JavaScript shipped on a landing page | 600 KB to 1 MB | 80 to 200 KB |
| CLS | 0.15 to 0.4 | Under 0.05 |
| Lighthouse mobile performance | 35 to 60 | 90 to 100 |
For stores, the gap shows up in sales. We covered the numbers in how Next.js commerce can improve speed and sales.
What To Do Next
Start with a free check. Open PageSpeed Insights, paste your homepage URL, and look at the "Discover what your real users are experiencing" section on top, not the score below it. If LCP is over 2.5 seconds or INP is over 200 ms, you're losing both rankings and enquiries.
If you'd like a proper audit and a clear plan, INDOTREX builds fast Next.js websites for businesses across Delhi, Noida and Gurgaon, and we can tell you in one call whether a fix or a rebuild makes more sense. Talk to our team and bring your PageSpeed report with you.




