Tactical playbook · Factor 7 of 7 · AUG v3

How to improve SaaS performance in 2026

Core Web Vitals as growth multiplier. The 5 CWV metrics, 10 tactics ranked by lift, the measured cross-AAERA-stage compound, and worked examples from Linear (Performance 10), Plausible (10), Vercel (9).

The short answer

Performance is the only AUG factor that multiplies every other factor simultaneously. A 4s → 1.5s LCP improvement typically lifts bounce -20%, Activation +15%, pages-per-session +0.4 (Engagement +25%), ad-viewable +15% (Monetization +8%). One ship, five compounding factors. The single highest-leverage tactic for 2026: static export (Next.js output:'export' or Astro) deployed to Cloudflare Pages or Vercel. Sub-1.5s LCP becomes table-stakes; product feels native rather than web.

Diagnostic — is your Performance below 8?

On the GrowthFriction 1-10 rubric, you're below 8 if any of:

Performance is the most measurable AUG factor — every metric is objective and tooled for measurement. If you're below 8, the compound effect across every other factor means the ROI of fixing Performance is higher than the ROI of fixing any other single factor.

The 5 Core Web Vitals (instrument all of these)

Measured AAERA impact per Performance improvement

Every Performance ship lifts multiple downstream factors simultaneously. Empirical deltas from large-scale CWV-improvement studies (Google, Akamai, Cloudflare, Vercel):

The 10 tactics ranked by Performance lift

  1. Static export (Next.js output:'export') (LCP -60%, TTFB -80%). The single largest Performance lever in 2026 for content-heavy SaaS. Generates HTML-and-CSS-only pages that load in 200-400ms. Deploy to Cloudflare Pages or Vercel for edge-distribution. GrowthFriction runs this stack.
  2. Cloudflare Pages / Workers / Vercel edge deployment (TTFB -70% globally). Static files served from edge POPs near users. 200+ POPs worldwide. TTFB drops to 80-150ms even in Tier-3 geos.
  3. Critical CSS inlined, rest lazy (LCP -30%). Inline the CSS needed for above-fold render in <head>. Defer the rest. Removes render-blocking CSS dependency.
  4. Font stack without custom fonts (LCP -20%, CLS -80%). Use system-ui or web-safe stack. If custom fonts required, use font-display: optional + preload + WOFF2. Most SaaS marketing sites do not need custom fonts; the trade for the LCP+CLS lift is rarely worth it.
  5. Image dimensions + decoding=“async” + AVIF(CLS -90%, LCP -25%). Every img has explicit width/height. AVIF format (50% smaller than WebP). Decoding async. Lazy-load below-fold.
  6. Defer all non-critical JS (INP -50%). Move analytics, third-party scripts, non-interactive widgets to defer or async. Critical-path JS only what's needed for first interaction.
  7. Zero above-fold images (CSS gradients instead) (LCP <800ms achievable). For hero sections that don't require photographic imagery, CSS gradients + SVG graphics outperform image-based heroes. LCP becomes the H1 text, not an image.
  8. Resource hints (preconnect, dns-prefetch) (TTFB -100ms). For third-party domains (analytics, fonts, CDN), preconnect to establish connection before resource is needed.
  9. Remove heavy libraries (jQuery, lodash, moment.js) (Page weight -70%). Modern browsers don't need jQuery. Replace lodash with native ES methods. Replace moment with date-fns (10× smaller) or Intl.DateTimeFormat (zero bytes).
  10. content-visibility: auto for below-fold (Paint time -40% on long pages). Tells browser to skip rendering below-fold content until scrolled into view. Massive improvement on long-form content pages.

Worked example — Linear (Performance 10, composite 42)

Linear scores Performance 10 — the engineering polish IS the brand:

  1. Sub-100ms interactions across the entire surface. Keystroke-to-paint feels native, not web.
  2. Real-time sync without page reloads. CRDT-based collaborative state.
  3. Initial app load <1.5s on broadband. Cold-start optimized via aggressive code-splitting + tree-shaking.
  4. Performance is integral to the product promise. “The faster way to ship software” — implies speed of the tool itself.

Result: Performance 10 is the floor that allows every other factor to compound. Without sub-100ms interactions, Linear's Engagement 9 + Activation 9 wouldn't be possible — slow tools don't get used daily. Lesson: Performance is the infrastructure-level factor that compounds across all others.

Worked example — Notion (Performance 6, composite 27)

Notion shows the inverse pattern. 7-factor profile: 10 Acquisition, 7 Activation, 9 Engagement, 9 Retention, 10 Advocacy, 8 Monetization, 6 Performance. The Performance 6 is the diagnostic — Notion lags on large workspaces, edits feel laggy, page-load can take 2-4s on complex pages.

The cause: Notion's database-on-frontend architecture loads all data into the client and renders dynamically. Powerful but slow. The compound: Performance 6 drags Activation 7 (users wait for empty page, bounce) and Retention 9 (would be 10 if speed felt native).

Notion shipped a 2025 performance rewrite. If Performance 6 → 8 ships, composite 27 → ~32. The Performance fix is the highest-leverage single factor for Notion in 2026.

Performance anti-patterns (forbidden per AUG framework)

Measurement — what to track

The 30-day Performance sprint plan

  1. Week 1: Diagnose. Run PageSpeed Insights on 10 representative pages. Identify the worst page. Profile in Chrome DevTools Performance tab. Identify LCP blocker.
  2. Week 2: Ship the top-3 highest-lift tactics that match your stack. For most Next.js SaaS: static export, critical CSS inlining, AVIF images, font-display: optional.
  3. Week 3: Defer non-critical JS. Audit third-party scripts. Remove anything not core (or load on user interaction only).
  4. Week 4: Measure. Re-run PSI. Check field data in GSC (real-user CrUX). Compute new Performance score. The compound to Activation + Engagement usually shows within 14-21 days as new cohorts experience the faster site.

The framework lesson

Performance is the multiplicative infrastructure factor. Every CWV improvement compounds across every AAERA stage. The math: Performance 6 → 9 with same other scores lifts AUG composite by 50%+ via the multiplier chain.

The 2026 standard has moved. Sub-1.5s LCP is table-stakes for content SaaS. Sub-200ms INP is table-stakes for interactive SaaS. The Linear standard (sub-100ms interactions) is the new aspiration. Static export + edge deployment + careful critical-path management get you to the standard.

For founders: Performance is also the most measurable factor. Every other factor requires interpretation; Performance is numbers. That makes it the easiest to ship improvements against — but also means competitors who ship Performance well have objective advantage that's hard to dispute.

Related resources

Frequently asked questions

What are Core Web Vitals and why do they matter for SaaS growth?

Core Web Vitals (CWV) are Google's three primary user-experience metrics: LCP (Largest Contentful Paint, main content visible), INP (Interaction to Next Paint, input responsiveness), CLS (Cumulative Layout Shift, visual stability). Plus TTFB (Time to First Byte, server response) and page weight as supporting. They matter because Google ranks pages partially on CWV, and every CWV improvement compounds across every AAERA stage — better LCP lifts Activation, better INP lifts Engagement, better CLS lifts both ad-viewability and trust. A LCP improvement from 4s to 1.5s typically drops bounce rate 20%+ AND lifts pages-per-session 0.4.

Why is performance a growth multiplier rather than just a hygiene factor?

Because each CWV improvement compounds across every AAERA stage simultaneously. LCP 4s → 2s: bounce -20%, Activation +15%, pages-per-session +0.4 (Engagement +25%), ad-viewable +15% (Monetization +8%). One Performance ship lifts five other factors. The AUG composite is multiplicative, so a Performance 7 → 9 lift with 25% improvements on every other factor translates to a 50-80% composite increase. No other single factor has this cross-stage multiplier effect.

What is the right LCP target for SaaS in 2026?

LCP under 1.5 seconds at p75 (75th percentile of real users on real devices on real networks). Google considers 2.5s the "good" threshold, but the leaderboards have moved — Linear, Vercel, Stripe all measure p75 LCP under 1.2s. The compound: every 1 second improvement below 4s reduces bounce rate ~5-8%. The marginal value increases at lower targets — getting from 2s to 1s lifts Activation more than getting from 4s to 3s, because users start to perceive the product as native.

How does performance affect SaaS revenue specifically?

Three compound paths: (1) Acquisition — Google rewards CWV in rankings, higher CWV → more organic traffic. (2) Activation + Engagement — faster loads + responsive interactions reduce bounce, lift pages-per-session, which directly raises AdSense pRPM (more pages × ads + better viewable rate × iRPM). (3) Conversion — every additional second of LCP costs 7-12% of conversion rate on commerce/SaaS sign-up flows. The math: 4s → 1.5s LCP improvement on a $50K MRR SaaS often translates to $5-10K MRR lift within 60 days from improved conversion alone.

Should I use Next.js static export for performance?

Yes, for most SaaS marketing surfaces. Static export (Next.js output: 'export' or Astro or Eleventy) produces HTML-and-CSS-only pages that load in 200-400ms vs 1-3s for SSR. The trade: dynamic content requires JS or edge-functions. For 80%+ of SaaS sites (marketing pages, content, documentation, audit catalogs), static-export is the right default. Use SSR/SPA only for authenticated app surfaces where dynamic personalization is required. GrowthFriction itself runs static-export Next.js on Cloudflare Pages.

Cite this playbook: GrowthFriction. (2026). How to improve SaaS performance in 2026. https://growthfriction.com/how-to/improve-performance/. License CC-BY 4.0. Published 2026-05-18 · Methodology AUG v3.