Web Quality Audit: Sweet Dreams (S D Retail Ltd.)

Website: https://www.sweetdreams.in | Date: 2026-08-27 | Platform: Shopify (theme ID 178585075959, custom "SD" theme) + Cloudflare | Industry: Family Sleepwear / Loungewear (D2C + Retail, NSE: SDREAMS)

Business context applied: This is a mobile-first, India consumer D2C store for a listed, profitable, offline-led sleepwear brand. 75 EBO stores (FY26, +111% YoY revenue), 1,055 SKUs, 180 collections, mass-to-mid pricing (₹479–₹3,699). Online is a minority but strategically growing channel (per business-analysis.md). Therefore mobile Core Web Vitals, conversion-blocking UX, and SEO discoverability are the highest-leverage quality investments — not desktop polish.

Executive Summary

Sweet Dreams ships a technically well-structured, SEO-foundationally-strong Shopify store (correct technical SEO, rich JSON-LD schema, full Open Graph/Twitter cards, solid accessibility baseline of 91–95). The site is safe and crawlable. The two real problems are:

  1. Mobile Core Web Vitals are failing in the field — driven entirely by a Cumulative Layout Shift regression (CLS 0.15–0.16, "Needs Improvement") that spiked from 0.01 in late 2025. Interaction (INP) is also drifting toward the 200 ms threshold. Desktop field data is fully passing (LCP 1.9s, INP 84ms, CLS 0.05).
  2. A large mobile lab performance gap: under Lighthouse throttling the homepage LCP is 14.5s (vs 1.97s real-world) and total page weight is ~30 MB (30,003 KiB) — caused by render-blocking resources, unused JavaScript (721 KiB), and a 30MB payload. This is a lab artifact of heavy assets on a throttled Moto G, but it signals real bloat that hurts low-end-device users (Sweet Dreams' core mass-market India audience).

Net: Fix the CLS regression and trim the mobile payload and this becomes a strong-performing store. The SEO/security/a11y base is already better than most Shopify stores.

CategoryMobile ScoreDesktop ScoreGrade
Performance4066🔴 / 🟡
Accessibility9591🟢
Best Practices6569🟡
SEO9292🟢
Overall (weighted field + lab)🟡 Needs Improvement (mobile field CWV)
Mobile vs desktop gap ratio: Performance 40 vs 66 = 1.65×. The bigger story is lab-vs-field on mobile (LCP 14.5s lab vs 1.97s field) — see §1.4.

1. Performance Audit

1.1 CrUX Real-World Field Data (phones)

Source: CrUX Vis (cruxvis.withgoogle.com), origin https://www.sweetdreams.in, report dated 2026-08-22. CrUX is available for this origin (the site is in the dataset). Only the phone form factor is surfaced by the public UI (no API key); the business-analysis.md parent task confirmed CrUX availability but could not extract the full Phone/Desktop/Tablet split — this audit re-confirms the phone-only field view.

Core Web Vitals Assessment (phone): Needs Improvement. Three metrics, three statuses:

MetricLatest (2026-08-22)Threshold (Good)Threshold (Poor)RatingTrend
LCP (Loading)1,966 ms≤ 2,500 ms> 4,000 msGoodImproving (2,436→1,967 ms over 10 mo) ✅
INP (Interactivity)178 ms≤ 200 ms> 500 msGood (near threshold)Regressing — bottomed at 122 ms (Jan'26), now climbing back toward 200 ms ⚠️
CLS (Visual Stability)0.15≤ 0.10> 0.25Needs ImprovementSevere regression — 0.01 (Oct'25) → 0.12 (May'26) → 0.15–0.16 (Jul–Aug'26) 🔴

CLS trend detail (the headline regression): From Oct 2025 through Apr 2026 CLS held at 0.01–0.04. In the 2026-05-03 → 2026-05-30 window it jumped to 0.12, then 0.14, 0.15, 0.16 and has stayed at 0.15–0.16 through Aug 2026. This is a 15× layout-shift regression that coincided with a site/theme change in early May 2026 (consistent with the "recently refreshed storefront" + "2026 blog dates" noted in business-analysis.md). On a phone-first D2C store, layout shift during load = mis-taps, accidental cart adds, and abandoned sessions.

INP trend detail: INP improved to a best of 122 ms (Jan 2026) but has climbed back to 178 ms by Aug 2026 — still "Good" but on a clear upward (worsening) trajectory. Combined with the CLS regression, interactivity + stability on mobile are both degrading after the May 2026 refresh. This is the most business-critical finding in the audit.

Desktop field data (from PageSpeed Insights "Origin" phone-vs-desktop view): Desktop Core Web Vitals Assessment = Passing. LCP 1.9s, INP 84 ms, CLS 0.05 — all Good. The field problem is mobile-only.

1.2 Core Web Vitals (Lighthouse Lab Data)

Lighthouse 13.4.1, captured 2026-08-27 14:18 UTC. Mobile = emulated Moto G Power, Slow 4G throttling. Desktop = emulated desktop, custom throttling.

MetricMobile (lab)RatingDesktop (lab)Rating
First Contentful Paint (FCP)6.0 sPoor0.8 sGood
Largest Contentful Paint (LCP)14.5 sPoor1.0 sGood
Total Blocking Time (TBT)730 msNeeds Improvement750 msNeeds Improvement
Cumulative Layout Shift (CLS)0.011Good0.103Good
Speed Index (SI)8.3 sPoor1.9 sGood

Critical interpretation — lab vs field gap: The mobile lab LCP (14.5s) is ~7.4× the field LCP (1.97s). This gap is the signature of (a) a heavy asset payload being brutalised by Lighthouse's Slow 4G emulation, and (b) render-blocking CSS/JS + font-display swap delaying first paint. Real low-end Indian 4G users sit somewhere between these — but the field CLS regression proves the live experience is already fragile. The lab result is a stress test that exposes the bloat; the field result proves the CLS bug is already shipping.

1.3 LCP Phase Breakdown (Mobile)

Lighthouse headline mobile opportunities (estimated savings):

InsightEst. Savings
Render-blocking requests1,360 ms
Font display (font-display: swap late)780 ms
Use efficient cache lifetimes305 KiB
Legacy JavaScript52 KiB
Improve image delivery344 KiB
Reduce unused JavaScript721 KiB
Avoid enormous network payloads (total 30,003 KiB ≈ 30 MB)— (diagnostic)
Reduce unused CSS70 KiB

The two largest levers (render-blocking 1,360 ms + font-display 780 ms = ~2.1s) are pre-resource-delay issues: the browser is blocked from discovering/painting the LCP element because of blocking CSS/JS and FOUT on the Poppins web font (fonts.googleapis.com/css2?family=Poppins). This is the classic JS-rendered Shopify theme pattern flagged in the skill.

1.4 Performance Issues by Impact

🔴 Critical

  • CLS regression to 0.15–0.16 (field, mobile). Evidence: CrUX 2026-08-22 (0.15), trend 0.01→0.16 since May'26. Impact: mis-taps / abandoned mobile sessions on the brand's primary device. Fix: audit the May-2026 theme refresh for late-injected banners/carousels without reserved space (the homepage announcement bar "Cash On Delivery Available" + injected promo banners are prime suspects); add width/height or aspect-ratio to all hero/category images; set font-display: optional or preload the font. Effort: Medium.
  • 30 MB total page payload (mobile lab). Evidence: Lighthouse "Avoid enormous network payloads — Total size was 30,003 KiB." Impact: kills low-end-device + poor-network users (core India mass-market audience). Fix: lazy-load + srcset/AVIF non-hero images, defer non-critical JS (variant-swatch app, GTM), trim above-the-fold assets. Effort: High.

🟡 High

  • Render-blocking resources (1,360 ms). Evidence: §1.3. Fix: inline critical CSS, defer/async non-critical, preload LCP image. Effort: Medium.
  • Font-display late paint (780 ms). Evidence: §1.3. Fix: font-display: optional or <link rel="preload"> the Poppins font; self-host. Effort: Low.
  • Reduce unused JavaScript (721 KiB) + 114 scripts on homepage. Evidence: DOM count (114 <script>), Lighthouse diagnostic. Fix: defer app JS (Variant Image Swatch King extension, storefront-agent), remove dead theme JS. Effort: Medium.
  • INP regressing toward 200 ms (field). Evidence: CrUX 122ms→178ms. Fix: break up long tasks (15 found), reduce main-thread work (6.1s). Effort: Medium.

🟢 Medium / Low

  • More than 4 preconnect connections (warning) — reduce to 2–3 critical origins (cdn.shopify.com, fonts). Effort: Low.
  • "Image elements do not have explicit width and height" (diagnostic) — contributes to CLS; add dimensions. Effort: Low.
  • Minify JS (2 KiB), Reduce unused CSS (70 KiB) — marginal. Effort: Low.
  • Efficient cache lifetimes (305 KiB) — set long-cache on static CDN assets. Effort: Low.

1.5 Resource Transfer Summary (Mobile, lab)

CategoryApprox.Notes
Imageslarge (improve-image-delivery 344 KiB opportunity)hero/category PNGs up to 1280×1920; many ?width=320 thumbnails — verify real served size
JavaScript~721 KiB unused + 114 script tagsvariant-swatch app, storefront-agent, GTM, theme
CSS~70 KiB unusedtheme.css + custom.css
3rd-partyShopify CDN, Cloudflare, Google Fonts, storefront-agent-server.shopify.aipreconnect warnings

2. Accessibility Audit

2.1 Critical Issues

None. lang="en" set, viewport set, HTTPS enforced, no images missing alt entirely (0 of 70).

2.2 High Priority Issues

  • 41 of 70 images have empty alt="" — but the bulk are legitimately decorative or redundant: logos (BLACK-LOGO/WHITE-LOGO), category banner PNGs (Website_Women.png, Rest_Her_mobile.png, Frame_.png), and duplicate 0x0 preload images. However, several product carousel images in the "BEST SELLERS" and collection rails also use empty alt (e.g. sweet_dreams_navy_half_sleeve_...png, SS_26_-_FINAL_.png) — these are content/product images that should carry descriptive alt for image search + screen readers. Product card images on the homepage did have descriptive alt ("A woman stands in a blue and yellow floral print pajama set…"); the empty-alt product images are the secondary variant/related rail images. Fix: add descriptive alt to product/content images; keep alt="" only on true decoration. Effort: Medium (bulk, theme-level).
  • "Heading elements are not in a sequentially-descending order" (Lighthouse a11y, mobile). The DOM shows the nav uses <button> + nested <listitem level=1/3> and the announcement bar; an <h3> brand logo appears above <h2> section headings in some renders. Fix: enforce single logical H1 → H2 → H3 order; the homepage H1 should be the primary keyword heading, not a nested brand mark. Effort: Low.
  • "Links do not have a discernible name" (Lighthouse a11y). Some icon-only links (account, cart, search) have only an image child with no aria-label/text. The cart/account links render <image> with no accessible name. Fix: add aria-label to icon-only nav links. Effort: Low.

2.3 Positive Findings

  • Single <h1> present on homepage and PDP; logical H2/H3 structure mostly.
  • lang="en", viewport configured, <meta charset="UTF-8"> — mobile-first indexing ready.
  • Product PDP has full keyboard-accessible size/color radiogroups with labels.
  • Alt attributes present (descriptive) on primary product imagery.
  • Breadcrumb navigation present (visual + BreadcrumbList schema) on PDP.
  • Trust badges on PDP ("Free & Fast Shipping", "Secure Payment", "COD Available", "Easy Return") — good for conversion + E-E-A-T.

3. SEO Audit

3.1 Technical SEO

CheckStatusEvidence
robots.txt✅ StrongDisallows admin/cart/checkout/account; includes Sitemap: directive; disallows sort/filter variant params (/collections/sort_by, filter&filter); even has LLM-bot rules (GPTBot/ClaudeBot/GeminiBot/PerplexityBot) — ahead of most stores
XML Sitemap✅ Presentsitemap.xml index → products (×2), pages, collections, blogs, sitemap_agentic_discovery.xml (good LLM-SEO touch)
Canonical URLs✅ Self-referencingHomepage canonical = /; PDP canonical = /products/... (strips collection prefix — correct); collection canonical = /collections/...
Indexation✅ No noindex on key pagesrobots meta = index, follow, max-image-preview:large
URL structure✅ Clean/collections/women-pyjama-sets/products/navy-pyjama-set-ocw-4560 — descriptive, hyphenated, keyword-rich
HTTPS✅ Enforcedstrict-transport-security: max-age=7889238, upgrade-insecure-requests, block-all-mixed-content
Mobile-friendly✅ Responsiveviewport + responsive theme
Page speed (CWV)⚠️ Mobile failing (CLS)see §1

3.2 On-Page SEO Issues

ItemStatusDetail
Homepage title✅ Good"Sweet Dreams | Sleepwear for Sleepy Nights" — 39 chars, keyword "Sleepwear" present, brand first (acceptable for homepage)
Meta description (home)✅ Good160-char, keyword-rich, compelling
PDP title✅ Excellent"TruCotton™ Blossom Burst Pyjama Set | Women Pyjama Set | Sweet Dreams" — keyword-targeted
PDP meta description✅ ExcellentUnique, descriptive, ~200 chars
Collection title/desc✅ Good"Women Sleepwear & Loungewear Online | Sweet Dreams" + unique description
Open Graph / Twitter✅ StrongFull OG (og:title/description/image 1200×628/url/type/site_name/locale) + twitter:card: summary_large_image on homepage AND PDP
Heading structure⚠️ MinorH1 present but "heading order not sequential" flagged (see §2.2)
Keyword targeting✅ GoodCollections segmented by mood/fabric/character — strong long-tail cover

No missing-meta-description pattern (the most common Shopify failure) — collections, pages, and PDPs all carry hand-set descriptions. This is above-average hygiene.

3.3 Schema Markup

TypePresent?Key fieldsNotes
Organizationname, logo, sameAs, hasMerchantReturnPolicy⚠️ sameAs Instagram = https://www.instagram.com/sweetdreams.zzz/.zzz is not a valid TLD (typo; should be .in or .com). Breaks the social-entity signal.
WebSitename, url, potentialAction (SearchAction)Enables sitelinks search box — good
WebPage / CollectionPagename, breadcrumb
BreadcrumbList✅ (home + PDP)itemListElementGood
ProductGroup / Product / Offer✅ (PDP)name, image, offers.price (₹1,499), priceSpecification, audience, hasVariantStrong — but missing aggregateRating / review
AggregateRating / Review❌ MissingNo star-rating rich result. Business-analysis.md flags weak review/UGC depth; schema confirms no reviews surfaced.
FAQPage❌ Missing (PDP has an FAQ section but no schema)The PDP "FAQs" accordion is not marked up → misses FAQ rich results
LocalBusiness❌ MissingNo store-locator / LocalBusiness schema (75 EBO stores could surface local SEO)
ItemList❌ (on collections)Collection pages don't emit ItemList of products

Schema verdict: Best-in-class for a Shopify store except the missing review/FAQ markup and the broken Instagram sameAs URL.

3.4 Content Quality (E-E-A-T)

  • Experience/Expertise: Proprietary 14-fabric library (Lazyloop™, Airloom™, etc.), character licensing (Snoopy/Garfield/Minions) — strong differentiators, surfaced in nav.
  • Authoritativeness: Listed NSE company (SDREAMS), investor-relations page, RHP — trust signals present.
  • Trustworthiness: care@sweetdreamsindia.com, phone +91 9327957803, COD, return policy, refund policy linked in schema — strong.
  • Content depth: Blog present (sitemap_blogs_1.xml); PDP has "Product Details / Why You'll Love This / Shipping / FAQs" accordions — good depth.
  • Gap: No visible customer reviews/ratings on PDP (conversion + E-E-A-T gap, corroborated by business-analysis.md).

3.5 Internal Linking / Image SEO

  • 495 links on homepage; nav + footer + collection rails present. Anchor text mostly descriptive.
  • Image SEO: primary product images have descriptive alt; many rail/banner images lack alt (§2.2); filenames are mostly descriptive (sweet_dreams_navy_half_sleeve_t_shirt_pyjama_set...) — good. Some CDN filenames are UUID-based (Frame_8_513408fe...png) — non-descriptive but unavoidable for theme assets.

4. International SEO

Not applicable / low priority. The store targets India only (content-language: en-IN, INR pricing, COD). No hreflang, no /fr/ /en/ locales, no multilingual sitemap. Correct for a single-market India brand — do not add hreflang (would be wasted effort). The only international-SEO note: ensure sitemap_agentic_discovery.xml and sameAs entity signals are India-accurate.


5. Best Practices & Security

5.1 Security Headers

HeaderValue FoundAssessment
HSTSmax-age=7889238 (~91 days)⚠️ Weak — missing includeSubDomains and preload. For a payments/checkout brand, raise to max-age=31536000; includeSubDomains; preload
X-Frame-OptionsDENY
X-Content-Type-Optionsnosniff
CSPblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests;⚠️ No script-src — only a baseline CSP. Add script-src (even 'self' + Shopify CDN) to harden against XSS. frame-ancestors 'none' is good (clickjacking protection)
X-XSS-Protection1; mode=block✅ (legacy, harmless)
Referrer-Policynot set🟡 Minor — add strict-origin-when-cross-origin
Permissions-Policy / COOP / COEPnot set🟢 Low — add COOP same-origin if isolating
Cloudflarepresent (server: cloudflare)✅ DDoS/WAF baseline

5.2 Modern Standards

  • ✅ Valid HTML5 (lang, charset), no document.write observed, HTTPS enforced, no mixed content (block-all-mixed-content).
  • x-permitted-cross-domain-policies: none, x-download-options: noopen — good hardening.
  • 🟡 Source maps: not verified (Shopify minifies by default; acceptable).
  • 🟡 114 <script> tags + 8 stylesheets on one page — modern but heavy (ties to §1.4).

Best-Practices score 65/69 is dragged down by: insecure CSP (no script-src), weak HSTS, plus the 30 MB payload / render-blocking diagnostics counted under "performance" but surfaced in this category's "Uses HTTPS"/trust checks.


6. Content Quality Assessment

6.1 Image Quality & Authenticity

  • No AI-generated image patterns detected in filenames (no Gemini_Generated_Image_, ChatGPT_Image_, ai0_.png, unnamed_1.png, Picsart-AiImageEnhancer). Product imagery is real model photography (descriptive alt like "A woman stands in a blue and yellow floral print pajama set"). Good — no artisan-authenticity mismatch for this mass-market brand.
  • Hero/category banners are flat graphic/PNG assets (e.g. Rest_Her_mobile.png) — on-brand, not AI-slop.

6.2 Trust Signals

  • ✅ Phone, email, COD, return/exchange, shipping policy, refund policy (schema-linked).
  • ✅ Listed-company credibility (NSE: SDREAMS) surfaced via investor-relations link.
  • ❌ No customer reviews/ratings on PDP (see §3.3) — the single biggest content-quality + conversion gap.

6.3 UX Issues

  • CLS-causing injected banners (announcement bar + likely promo carousel) — mobile mis-tap risk (§1.1). Highest-UX-priority fix.
  • Icon-only nav links without accessible names (§2.2).
  • Variant parameter pollution: PDP renders /collections/women-pyjama-sets/products/... — canonical correctly strips it, but collection-prefixed product URLs create minor duplicate-content surface; canonical handles it. Low risk.
  • No quick-commerce/app (per business-analysis.md) — not a quality defect, a strategic gap.

7. Priority Recommendations

🔴 Immediate (This Week) — mobile field CWV + broken entity

#IssueImpactEffort
1Fix CLS regression (0.15→0.10): reserve space for announcement bar + injected promo banners; add width/height or aspect-ratio to hero/category images; font-display: optional or preload PoppinsStops mobile mis-taps / abandoned sessions (primary device)Medium
2Fix broken Instagram sameAs (sweetdreams.zzz → real handle) in Organization schemaRestores social-entity + knowledge-graph signalLow
3Add aria-label to icon-only account/cart/search linksAccessibility (Lighthouse a11y) + screen-reader UXLow

🟡 Short-Term (This Month) — mobile lab performance + schema depth

#IssueImpactEffort
4Eliminate render-blocking resources (1,360 ms): inline critical CSS, defer/async theme + app JS, preload LCP imageCuts mobile lab LCP from 14.5s toward field 2sMedium
5Trim 30 MB payload: lazy-load + srcset/AVIF non-hero images, defer variant-swatch + storefront-agent JSLow-end-device + poor-network conversionHigh
6Reduce unused JS (721 KiB) + consolidate 114 scriptsMain-thread work, INP stabilityMedium
7Add AggregateRating/Review + FAQPage schema to PDPsStar-rating + FAQ rich results (conversion)Medium
8Strengthen CSP (script-src) + HSTS (includeSubDomains; preload)Security hardening for payments brandLow
9Add descriptive alt to product rail images (currently empty)Image search + a11yMedium

🟢 Long-Term (This Quarter)

#IssueImpactEffort
10Add customer reviews/UGC on PDP (app or native)Conversion + E-E-A-T (biggest content gap)Medium
11LocalBusiness schema + store locator for 75 EBOsLocal SEO / omnichannel discoveryMedium
12Reduce preconnect to 2–3; add Referrer-PolicyPerformance hygieneLow
13ItemList schema on collectionsProduct rich results in SERPsLow

Summary Score Card

CategoryScoreGrade
Performance (Mobile)40/100🔴 (lab) — field CWV Needs Improvement (CLS)
Performance (Desktop)66/100🟡 — field CWV Passing
Accessibility95/91🟢
Best Practices65/69🟡
SEO92/92🟢
Content Quality~80/100🟢 (real photography, strong E-E-A-T; missing reviews)
UX~70/100🟡 (CLS mis-tap risk on mobile)
Security~75/100🟡 (weak HSTS, no script-src CSP)
Overall~72/100🟡 Needs Improvement (mobile-field-CWV driven)

8. Sources & Citations

#SourceData extracted
1https://www.sweetdreams.in/ (HTTP headers, curl -sI)HSTS max-age=7889238, CSP block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests;, X-Frame-Options DENY, X-Content-Type-Options nosniff, X-XSS-Protection, 5 preconnect targets, Shopify + Cloudflare, content-language: en-IN
2https://www.sweetdreams.in/ (browser DOM, browser_console)70 images (41 empty-alt), 114 scripts, 8 stylesheets, 3,655 elements, 1 H1, 15 H2, 495 links; lang="en", viewport set; JSON-LD = Organization/WebSite/WebPage/BreadcrumbList
3https://www.sweetdreams.in/ (static HTML, curl)title "Sweet Dreams | Sleepwear for Sleepy Nights", meta description, full OG/Twitter, self-canonical, robots index/follow
4https://www.sweetdreams.in/robots.txtdisallows admin/cart/checkout/account; Sitemap: directive; sort/filter param disallows; LLM-bot rules
5https://www.sweetdreams.in/sitemap.xmlindex → products_1/2, pages_1, collections_1, blogs_1, sitemap_agentic_discovery.xml
6PDP …/products/navy-pyjama-set-ocw-4560 (browser + curl)title "TruCotton™ Blossom Burst Pyjama Set | Women Pyjama Set | Sweet Dreams", unique meta, ProductGroup/Product/Offer schema (₹1,499), breadcrumbs, no AggregateRating/FAQPage; sameAs Instagram typo .zzz found in Organization block
7https://www.sweetdreams.in/collections/women (curl)title "Women Sleepwear & Loungewear Online | Sweet Dreams", unique description, self-canonical
8CrUX Vis https://cruxvis.withgoogle.com/#/ (origin https://www.sweetdreams.in, report 2026-08-22, phone)LCP 1,966 ms (Good, improving), INP 178 ms (Good, regressing from 122 ms), CLS 0.15 (Needs Improvement, 0.01→0.16 since May'26). 46-week timeseries extracted
9PageSpeed Insights https://pagespeed.web.dev/ (Lighthouse 13.4.1, 2026-08-27 14:18 UTC)Mobile lab: FCP 6.0s, LCP 14.5s, TBT 730ms, CLS 0.011, SI 8.3s; Desktop lab: FCP 0.8s, LCP 1.0s, TBT 750ms, CLS 0.103, SI 1.9s. Scores — Mobile: Perf 40 / A11y 95 / BP 65 / SEO 92 / Agentic 3-4; Desktop: Perf 66 / A11y 91 / BP 69 / SEO 92 / Agentic 2-4. Field desktop CWV = Passing (LCP 1.9s, INP 84ms, CLS 0.05). Opportunities: render-blocking 1,360ms, font-display 780ms, unused JS 721 KiB, payload 30,003 KiB
10business-analysis.md (parent task t_e2daf92c, this workspace)Business context: Shopify+Cloudflare, 1,055 SKUs, 180 collections, mobile-first India D2C, 75 EBO stores, CLS/INP regression pre-flagged, review depth gap, social-handle ambiguity

Methodology notes:

  • Shopify is JS-rendered; meta tags, canonical, OG, and JSON-LD were verified via both curl (server HTML) and browser_console (client DOM) per skill guidance — no false "missing" reports.
  • CrUX public UI exposes phone-only field data without an API key; desktop field figures sourced from PSI's Origin phone/desktop toggle. Full Phone/Desktop/Tablet split not extractable (no CrUX API key) — flagged honestly, not fabricated.
  • PageSpeed Insights API returned HTTP 429 (quota 0) for the default project, consistent with prior tasks; lab data was obtained via the browser UI instead (per skill §1.2).
  • Lighthouse mobile lab LCP (14.5s) is a Slow-4G throttled stress test; the field LCP (1.97s) is the real-user number. The gap is reported, not averaged.