Blog · web · 10 min read
Core Web Vitals in 2026: Why SaaS Marketing Sites Lose Rankings (and How to Fix It)
Google now uses INP, LCP, and CLS as direct ranking signals. Most SaaS marketing sites fail INP because of marketing JS bloat. Here's a practical playbook to fix it.
Published 2026-04-28 by Milton Acosta III
The state of Core Web Vitals in 2026
Google's Core Web Vitals — Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) — are direct ranking signals. Pages failing the "good" threshold for these metrics are deprioritized in mobile search results, where most B2B research now happens.
INP replaced First Input Delay in March 2024 and is the metric most SaaS marketing sites silently fail. INP measures the longest interaction-to-paint delay across the entire session, not just the first interaction. Heavy marketing JavaScript — Google Tag Manager, intercom-style chat widgets, video players, A/B testing frameworks, multiple analytics platforms — all contribute INP debt that surfaces only when users scroll, click menus, or engage forms.
The thresholds Google enforces
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP | ≤ 2.5s | 2.5-4.0s | > 4.0s |
| INP | ≤ 200ms | 200-500ms | > 500ms |
| CLS | ≤ 0.1 | 0.1-0.25 | > 0.25 |
Why SaaS marketing sites fail INP specifically
Three culprits dominate:
- Marketing tag stack loading synchronously — GTM, GA4, Hotjar, Mixpanel, Intercom, Drift, Calendly, and 8+ other scripts can each parse 100-300KB of JavaScript on the main thread.
- Chat widgets injecting iframes on first paint — instead of after meaningful interaction.
- A/B testing flicker prevention — hides content until variants load, blocking LCP.
The 2026 playbook
1. Defer all tracking to lazyOnload
Next.js Script with strategy="lazyOnload" is the safest default for GTM/GA/Clarity/etc. Even afterInteractive blocks the main thread during hydration; lazyOnload waits for the browser idle window.2. Self-host or eliminate web fonts
Google Fonts requires a third-party DNS lookup, TLS handshake, and additional roundtrip. Self-host with next/font or use system fonts. Both LCP and CLS improve.3. Add preconnect for unavoidable third parties
For tools you can't lazy-load, preconnect early in : . Removes the TCP/TLS overhead from the critical path.4. Mark hero images priority
The LCP element on most pages is the hero image. next/image with priority and proper sizes preloads it before render-blocking resources.5. Eliminate render-blocking CSS
Inline above-the-fold critical CSS, defer the rest. Modern Tailwind builds with PurgeCSS and content-aware bundling do this well; check your bundle size with @next/bundle-analyzer.6. Reduce framer-motion / heavy animation library use
Animation libraries are large. Use CSS animations or Motion One for simple cases; reserve framer-motion for genuinely complex orchestrated motion.7. Code-split aggressively per route
Next.js App Router splits per-route by default; verify with the build output. Components imported but used only on certain pages should be dynamic-imported.8. Replace third-party iframes with façades
Chat widgets, embedded videos, calendar embeds — replace with a static placeholder until the user clicks. Cuts INP and LCP simultaneously.9. Run weekly Lighthouse CI on the deploy pipeline
Catch regressions before they hit production. Treat a 5-point performance drop as a build failure.10. Monitor real-user metrics, not lab metrics
Lighthouse and PageSpeed Insights give synthetic results. Real-user CWV (via web-vitals JS library reporting to GA4 or your own pipeline) reflects actual user experience and is what Google ranks against.Empire325's web development practice routinely ships sites with median mobile Lighthouse 95+ at launch. The combination of Next.js architecture, image optimization, deferred tracking, self-hosted fonts, and continuous Lighthouse CI makes Core Web Vitals a non-issue rather than a chronic project.
Share this article
Ready to talk strategy?
Empire325 partners with enterprise companies on the engagements we write about. Schedule a call to discuss your situation.
Schedule a strategy call