Mobile CWV regression confirmed — 1,280 poor URLs, +106% since March
May 1 code deployment degraded mobile performance site-wide. GSC shows poor URLs growing from ~620 → 1,280 while desktop holds flat at 224 poor URLs (recovery from Apr 23 fix). The 28-day CrUX rolling average crystallised on Jun 1, triggering simultaneous CPA collapse across all 5 markets on both Google and Meta. Every day without the mobile fix extends the recovery window by one day.
Mobile performance crisis — desktop has already recovered
GSC confirms 1,280 poor mobile URLs vs 224 poor desktop URLs as of Jun 15. Desktop poor URLs have been flat since the Apr 23 fix. Mobile has worsened every week since the May 1 regression. Scores below 50 trigger Google Quality Score degradation — 4 of 5 PSI-tracked pages are in this zone. With ~73% of paid traffic on mobile, this directly suppresses CVR across all high-spend pages.
1,280 poor mobile URLs — more than double March levels · Desktop flat at 224
GSC confirms the divergence: mobile worsening every week post May 1 regression while desktop held flat after the Apr 23 fix. 568 URLs "need improvement" and only 37 are "good" on mobile. The chart below maps this against campaign events from your campaign log.
| Date | Event | Markets | Data Signal | Implication |
|---|---|---|---|---|
| Mar 1 | US (Southern) Meta Advantage+ live | US | New Meta campaign structure | Baseline CPM established for US before regression |
| Mar 15 | UK Mother's Day campaign off | UK | Normal seasonal switch-off | UK spend reduces temporarily |
| Mar 16 | UK Meta Advantage+ live | UK | Meta Advantage+ structure for UK | UK Meta CPM baseline established |
| Apr 1 | CA Meta Advantage+ live | CA | CA Meta campaign goes live | CA CPM baseline — note CA later shows +59% CPM spike Jun 1 |
| Apr 13 | NZ Meta Advantage+ live · Mother's Day global live | NZ, All | Global Mother's Day campaign activates | Increased spend across all markets masks early CWV signal |
| Apr 23 | Desktop CWV fixed ✓ | All | CPA stable. Desktop QS recovering. | Fix applied desktop only — mobile branch missed. Desktop poor URLs begin declining. |
| Apr 30 | NCA live on Demand Gen & Meta Advantage+ | AU | $301.9K campaign goes live | NCA launches 1 day before regression into clean environment — then immediately affected |
| May 1 | Code regression deployed 🚨 | All | CPA calm. Mobile LCP/TBT/CLS degrade silently. | 28 days of clean CrUX data buffers the impact. No visible signal for 4 weeks. |
| May 1 | US (Northern) Meta Advantage+ live | US | Northern US Meta campaign activates | Launches same day as regression — all US Meta spend now on degraded pages |
| May 10 | Mother's Day global switches off | All | CPA drops — normal post-peak. AU CPA ~$45–47. | Budget reduction masks early CWV penalty. Appears campaign-driven, not technical. |
| May 11–14 | Flash Sale AU | AU | AU CPA dips — promotional lift | Flash sale masks degraded performance. AU appears healthy while CWV worsens unseen. |
| May 19 | NCA a/b audience test on Meta live | AU | Additional NCA spend layer added | All NCA audience data collected on degraded pages — invalidates learnings |
| May 25 | Father's Day live | US, CA, UK | FD page recording zero GA4 conversions | Launched 4 days before full CrUX collapse. ROAS 0.50x on $11.2K spend. |
| May 29 | CrUX 28-day window fully degraded | All | Rolling average now 100% post-regression data | Quality Score collapses across all landing pages simultaneously. CPA spike imminent. |
| Jun 1 | CPA collapse — all 5 markets 🚨 | All | US +51%, CA +39%, UK +29%, AU +14%, NZ +11% | Simultaneous cross-platform spike on Google AND Meta rules out creative/seasonal/bidding causes. |
| # | URL Path | Total Spend | G / M Split | Sessions | Eng. Sessions | Eng. Rate | Bounce | Purchases | Revenue | CVR% | CPA | AOV | ROAS | CPS | CWV Mobile | Clarity |
|---|
| # | URL Path | Total Spend | G / M Split | Sessions | Eng. Sessions | Eng. Rate | Bounce | Purchases | Revenue | CVR% | CPA | AOV | ROAS | CPS | CWV Mobile | Clarity |
|---|
| # | URL Path | Traffic | Sessions | Eng. Sessions | Eng. Rate | Bounce | Purchases | Revenue | CVR% | CWV |
|---|
All 5 tracked pages show degraded CWV — scores 12–47, LCP up to 4.32s
Real PSI data from the uploaded CWV file (4 data points per page, Jun 12–15). LCP values of 4.28–4.32s on 3 pages are critically above the 2.5s Good threshold. INP values of 145–161ms are at the Needs Improvement boundary (200ms). Only CLS is within range on most pages. The pattern is consistent across all pages — systemic, not page-specific.
| URL | LCP (Good <2.5s) | INP (Good <200ms) | CLS (Good <0.1) | Perf Score | Ad Spend | ROAS | Priority Action |
|---|---|---|---|---|---|---|---|
| /promo/aus/mystery-picnic | 2.40s avg ⚠ | 147ms avg ⚠ | 0.01 ✓ | 11–12 🔴 | $91,114 | 2.80x | Image lazy load, script defer, INP JS audit |
| /promo/new-customer | 2.11s avg ⚠ | 154ms avg ⚠ | 0.03 ⚠ | 12–47 🟡 | $301,863 | 0.05x 🚨 | CLS fix (layout shift source), INP JS audit, also review offer/audience match |
| /promo/picnic-ideas/mystery-picnics | 4.29–4.32s ✗ | 160–161ms ⚠ | 0.00–0.01 ✓ | 12–41 🔴 | $8,135 | 2.11x | Hero image optimisation, CDN, script defer |
| /promo/us/mystery-picnic/date-ideas-usa | 4.28–4.32s ✗ | 160–161ms ⚠ | 0.00–0.01 ✓ | 37–41 🔴 | $7,516 | 0.84x | Same template as Gen Picnic — fix once applies to both |
| /promo/lp/us-fathersday | 4.28–4.32s ✗ | 160–161ms ⚠ | 0.00–0.01 ✓ | 37–43 🔴 | $11,182 | 0.50x | LP template: lazy video, font preload. Also swap URL — 0 GA4 conversions |
Google degrades Ad Quality Score. CPC bids increase 20–40%. Users see blank/partial page and bounce before engaging.
NCA is right at the threshold. Small LCP improvement could unlock the Quality Score floor — critical at $301K spend.
Target state. Google rewards good CWV with Ad Rank boosts and lower CPCs. Est. $100–200K efficiency gain on HIGH spend at 80+ score.
Only 5 of top 30 spend URLs are tracked in PageSpeed Insights automation
URLs ranked by total ad spend (Google + Meta, UTMs stripped). Green = already tracked. Recommend adding all 30 for daily monitoring. Priority is pages with highest spend and lowest ROAS — those are where CWV degradation is costing the most.
Google's gTech team audited 3 key paid landing pages using real CrUX field data (75th percentile, June 2026). While the audit found LCP, CLS and INP are technically within "Good" thresholds on the AU mystery picnic page (LCP 0.8s, INP 79ms, CLS 0), the US mystery picnic and NCA pages show INP at 152–154ms — borderline Needs Improvement. The audit identified two primary root causes causing the PSI lab score gap (scores 12–47 despite good CrUX field values): long-running JavaScript tasks blocking the main thread, and unoptimised above-fold image delivery. Fixing these will close the lab/field gap, push PSI scores above 50, and restore Google Quality Score.
🚨 Immediate: Audit & Diagnosis
Run comprehensive Lighthouse CI audit on all 5 tracked URLs + queue the 25 new PSI URLs. Identify top 3 LCP contributors per template. Chrome DevTools Performance panel is the starting point recommended by Google gTech to identify specific long tasks blocking INP.
- Add all 30 recommended URLs to PageSpeed Insights automation
- Run WebPageTest on /promo/aus/mystery-picnic (lab score 12 — critical, despite good CrUX field LCP of 0.8s)
- Use Chrome DevTools Performance tab to record a mobile session and identify tasks running >50ms
- Confirm if poor PSI scores are template-wide (likely) or page-specific
- Set up CrUX field data monitoring in Search Console for all 30 PSI URLs
CrUX field data shows AU mystery picnic LCP is already 0.8s — good. The PSI lab score of 12 is driven by JavaScript execution blocking interactivity in the lab environment, not slow image delivery per se. Tools: Chrome DevTools, WebPageTest, PageSpeed Insights.
🔧 Phase 1: LCP Image Optimisation — Preload Above-Fold Images
Highest ROI fixes shippable without major refactors. Focus entirely on mobile above-fold content delivery. Google gTech specifically recommends preloading the LCP hero image as a priority fix for the NCA page.
- Preload LCP hero image: Add
<link rel="preload" as="image" href="/hero.webp" fetchpriority="high">in<head> - Responsive image preloading: Use
imagesrcsetandimagesizesattributes to preload only the mobile viewport version - Convert hero images: WebP/AVIF format, set explicit
widthandheightto prevent layout shift - Critical path CSS: Inline above-fold styles, defer non-critical stylesheets
- Fix NCA CLS (0.03): Identify layout shift source — likely ad slot or dynamic banner injecting content after paint
<link
rel="preload"
as="image"
href="/hero-mobile.webp"
media="(max-width:600px)"
/>
</head>
Preloading the LCP image instructs the browser to fetch it sooner than it normally would. Use sparingly — when everything is prioritised, nothing is. Preload only the mobile viewport version of the hero using media queries. Do not preload multiple types of the same resource.
⚙️ Phase 2: Break Up Long Tasks + Optimise JS Execution
Google gTech identified a 445ms long task blocking the main thread on the mystery picnic pages — visible in Chrome DevTools as an XHR Load → Function Call → onSuccess chain. This is the primary driver of INP scores at 150–154ms and the poor lab performance scores (12–47) despite good CrUX field data.
- Profile main thread: Chrome DevTools Performance panel → record page load → look for red-flagged tasks >50ms (Google gTech found one at 445ms)
- Break long tasks into chunks: Refactor tasks to run in <50ms segments — use
setTimeout()to defer sequential functions off the critical path - Move non-UI work to Web Workers: Data sorting, analytics processing, and pixel scripts that don't need DOM access should run on a background thread
- Minimise client-side data processing: Handle heavy operations server-side before sending to browser. For SSR, generate content at build time and avoid hydrating unused components
- Third-party script audit: Delay chat widgets, tag managers, and Meta/Google pixels until after page interactive — these are prime long-task candidates
- Defer React hydration: Do not hydrate components the user cannot yet see — beware of hydrating unused components blocking the main thread
const worker = new Worker("sort-worker.js");
worker.postMessage(dataToProcess);
// Main thread stays free
worker.addEventListener("message", (evt) => {
// Worker done — update UI
renderResults(evt.data);
});
function runInChunks(tasks) {
const task = tasks.shift();
if (!task) return;
task();
// Yield to browser between tasks
setTimeout(() => runInChunks(tasks), 0);
}
A 445ms long task was observed in the DevTools trace running as an XHR Load → Function Call → onSuccess chain. Break this into chunks under 50ms each. Move computational tasks that don't need DOM access (analytics, sorting, data transforms) to Web Workers using the comlink library. Handle data post-processing on the server before sending to the browser wherever possible.
🎯 Phase 3: Target 90+ PSI Score — Field Data Validation + Pipeline Gates
Close the lab/field gap fully. Ensure all high-spend templates meet Good threshold consistently in real CrUX data, then lock it in with automated pipeline checks to prevent any future regression.
- CrUX monitoring: Validate 75th-percentile field data improvement 28 days post-fix in Search Console. CrUX takes 28 days to fully re-average — check weekly.
- Above-fold layout restructure: Address 10–16% scroll depth (Clarity data). Surface booking CTA, key content, and social proof above the fold — most users never scroll past the partially-rendered hero
- A/B test mobile vs desktop layouts to validate CVR uplift from CWV improvements with a controlled experiment before full rollout
- Lighthouse CI in deployment pipeline: Use
lighthouse-cito gate new builds — fail deployments that don't meet the performance budget. This would have caught the May 1 regression before production. - web-vitals npm package: Instrument real user metrics and pipe to your analytics endpoint for ongoing field data visibility beyond Search Console
Scroll Depth Problem — Clarity
75% of mobile users cite page load speed as the #1 factor in their experience. Users form a first impression in just 50ms. A 0.1s speed improvement increases CVR by 8.4% for retail and 10.1% for travel sites (Google/Deloitte, 2019).