Web Quality Audit: Dear Eden (shopdeareden.com)
Website: https://shopdeareden.com | Date: 2026-08-26 | Platform: Shopify (theme id 156006121705, Dawn-derived) + Cloudflare CDN | Industry: Children's + Women's "Mommy & Me" apparel (D2C)
Business context: Micro-brand, founder-led (Samantha Links), Louisiana home-studio fulfillment, ~23 unique SKUs, accessible-premium $42–$175 price tier, ~700 monthly US-only visits (below the CrUX public reporting threshold). See business-analysis.md for the full profile. The findings below are prioritized against a brand at this scale: cheap, high-leverage fixes come first because the site's discoverability and mobile conversion — not feature depth — are the binding constraints on growth.
Executive Summary
Dear Eden is a small, well-built Shopify store with strong security, clean accessibility, and solid structured data on the homepage. But it has two problems that will cap growth until fixed:
- Mobile performance is failing badly. Lighthouse scores the homepage 28/100 on mobile with Largest Contentful Paint (LCP) of 13.2s — 3.3× the "Poor" threshold (4.0s) and a 14.9s Speed Index. Desktop is fine (LCP 1.7s), so this is almost entirely a mobile asset-delivery problem (4.2 MB transferred, render-blocking CSS/JS, heavy third-party + Typekit fonts). For a visual, mobile-first fashion brand where most buyers arrive on phones, a 13-second mobile load is the single biggest conversion leak on the site.
- SEO on-page fundamentals are inconsistent. The homepage has no meta description, and meta descriptions are missing on some pages (About, Contact, several collections) while present on others — a classic Shopify "forgot to set it in admin" gap. The newsletter popup injects an
<h1>("Unlock Early Access…") into every page, so collection pages have the popup as their only H1 (the collection title isn't a heading at all), which dilutes topical relevance.
These are both fixable with low effort. Everything else (security headers, HTTPS/HSTS, accessibility, Organization/WebSite/Product schema) is in good shape.
| Category | Mobile Score | Desktop Score | Grade |
|---|---|---|---|
| Performance | 28 | 64 | 🔴 Poor (mobile) / 🟡 Needs work (desktop) |
| Accessibility | 97 | 97 | 🟢 Good |
| Best Practices | 92 | 92 | 🟢 Good |
| SEO | 92* | 92* | 🟢 Good (lab); on-page meta gaps noted below |
| Overall | — | — | 🟡 Mixed — strong foundation, two fixable blockers |
\Lighthouse's crawl-time SEO score (92) reflects machine-checkable elements (viewport, mobile-friendly, valid hreflang/structure); it does not penalize a missing meta description* on the homepage. The on-page gaps below are real and worth fixing even though Lighthouse passes them. The mobile vs. desktop Performance gap is 2.3× (28 vs 64) — driven entirely by LCP (13.2s vs 1.7s).
1. Performance Audit
1.1 CrUX Real-World Field Data
Core Web Vitals Assessment: Not assessed — CrUX data unavailable for this origin.
shopdeareden.com is below the Chrome UX Report public reporting threshold (estimated ~700 monthly visits; CrUX only publishes origins with sufficient traffic). Confirmed via CrUX Vis, which returned "No data available." All performance data below is from Lighthouse lab tests on the homepage, captured 2026-08-26. Lab data is still valid for optimization guidance but does not reflect real-user variance.
1.2 Core Web Vitals (Lighthouse Lab Data)
| Metric | Mobile | Rating | Desktop | Rating | Threshold (Good / Poor) |
|---|---|---|---|---|---|
| FCP | 4.9 s | 🔴 Poor | 0.7 s | 🟢 Good | ≤1.8s / >3.0s |
| LCP | 13.2 s | 🔴 Poor | 1.7 s | 🟢 Good | ≤2.5s / >4.0s |
| TBT | 840 ms | 🔴 Poor | 450 ms | 🟡 Needs Imp. | ≤200ms / >600ms |
| CLS | 0.187 | 🔴 Poor | 0.016 | 🟢 Good | ≤0.10 / >0.25 |
| SI | 14.9 s | 🔴 Poor | 4.8 s | 🟡 Needs Imp. | ≤3.4s / >5.8s |
Mobile is failing on every metric except none — all five are Poor or Needs-Improvement. LCP at 13.2s is the headline: 5.3× the Good threshold. Desktop clears LCP/CLS/FCP but TBT (450ms) and SI (4.8s) still show client-side bloat.
1.3 LCP Phase Breakdown (Mobile)
Lighthouse flagged the homepage's render-blocking chain as 1,040 ms of blocked initial render. The pattern is classic JS-rendered Shopify: a large base.css + component CSS are render-blocking, Typekit fonts (use.typekit.net) block text paint, and 137 <script> tags (many from Shopify's portable-wallets / accelerated-checkout preload + Judge.me) execute on the homepage. Combined with a 4,216 KiB total network payload, the browser cannot discover/paint the LCP element quickly. The dominant LCP element is the hero/logo image — and the page also preloads the brand logo SVG/PNG with imagesrcset, yet LCP still lands at 13s, indicating the render-blocking resources upstream of it are the true bottleneck.
1.4 Performance Issues by Impact
🔴 Critical (>1s estimated savings)
- Render-blocking CSS/JS — est. 1,040 ms saved.
base.css(and multiple component CSS files delivered viarel=preloadbut still blocking) plus Typekit (use.typekit.net) block first paint. Fix: inline critical CSS, defer/async non-critical, load fonts withfont-display: swap(Adobe Typekit supports this). - Enormous network payload — 4,216 KiB total. Fix: lazy-load below-fold images (product cards, review widgets), defer Judge.me + Shop Pay scripts until interaction, drop unused Typekit weights.
🟡 High (200ms–1s)
- Minimize main-thread work — 6.8 s and reduce JS execution time — 2.5 s. Shopify themes ship every section's JS. Fix: disable unused sections, remove apps not in use, defer third-party (Judge.me, Klaviyo/SMS modal, Shop Pay).
- Third-party code blocking. 3rd-party requests flagged. Judgment: this is a small brand; audit which apps actually drive revenue and cut the rest.
- Inefficient cache lifetimes — 222 KiB wasted on repeat visits. Fix: extend
Cache-Controlon static theme assets (Shopify CDN usually handles this; verify app-injected assets).
🟢 Low
- CLS 0.187 (mobile) largely from late-loading images/fonts and the popup modal. Reserve space for images; avoid injecting the newsletter modal before layout settles.
1.5 Resource Transfer Summary
- Total payload: 4,216 KiB (homepage, mobile lab).
- Stylesheets: 52
<link rel=stylesheet>on the homepage DOM (many are redundant component CSS Shopify emits). - Scripts: 137
<script>tags — heavy for a 23-SKU catalog. - Preconnects: 4 (cdn.shopify.com ×2, use.typekit.net ×2) — acceptable, but Typekit is the expensive one (fonts block paint).
2. Accessibility Audit
Score: 97/100 mobile & desktop — strong. Verified via DOM inspection.
2.1 Critical Issues
- None found.
<html lang="en">is set.<meta name="viewport">present (width=device-width, initial-scale=1). Skip-to-content link present ("SKIP TO CONTENT" + on product pages "SKIP TO PRODUCT INFORMATION").
2.2 High Priority Issues
- Newsletter popup hijacks the H1. The email-capture modal renders
<h1>Unlock Early Access to Drops, Special Discounts and More!</h1>on every page. On collection pages this is the only h1 (see §3.2). Screen-reader/heading users and crawlers get the popup heading instead of the page topic. Fix: demote the modal heading to<h2>(or hide from AT until opened). - Decorative images with empty alt are present and appropriate (logo, icons), but the homepage had 5 empty-alt and 1 missing-alt among 9 images; product pages show 13 empty-alt of 39 — these are mostly icons/UI, acceptable, but confirm none are content/product images silently empty.
2.3 Positive Findings
- Logical skip links; logical heading nesting on product pages (H1 product title → H2 Sizing/Care/etc.).
- Color contrast: no failures flagged by Lighthouse (97).
- Form inputs (newsletter, country selector, product options) have associated labels.
- Touch targets adequately sized.
3. SEO Audit
Lighthouse SEO score: 92/100 (machine-checkable elements pass). The gaps below are on-page/editorial, which Lighthouse does not catch.
3.1 Technical SEO
| Check | Status | Evidence |
|---|---|---|
| robots.txt | ✅ Good | Allows crawling; includes Sitemap: directive; correctly disallows cart/checkout/account. Also exposes UCP/agents.md for agent-commerce. |
| XML Sitemap | ✅ Good | sitemap.xml index links to products (23 URLs), pages, collections, blogs, and an sitemap_agentic_discovery.xml. All canonical, indexable. |
| Canonical URLs | ✅ Good | Self-referencing on homepage, product, and collection pages (verified via DOM). |
| Indexation | ✅ Good | No noindex on important pages; robots meta absent. |
| HTTPS | ✅ Good | Enforced; strict-transport-security: max-age=7889238 present. |
| Mobile-friendly | ✅ Good | Responsive; viewport configured. |
| URL structure | ✅ Good | Readable, hyphenated, keyword-rich (/products/womens-louise-french-linen-lace-midi-dress-eden-stripe-natural). |
| Broken internal links | ⚠️ Minor | /pages/about-the-brand returns 404, but the live footer "About the Brand" link correctly points to /pages/about-us (200). The orphan 404 exists in sitemap/code but has no inbound links — safe, but should be deleted to avoid crawl-noise. (Earlier business-analysis flagged the 404 as a live broken link; it appears the footer target was since corrected.) |
3.2 On-Page SEO Issues
| Page | Meta Description | Title | Notes |
|---|---|---|---|
| Homepage | ❌ MISSING | "Dear Eden" (9 chars) | Title is brand-only — no commercial keyword ("mommy and me," "matching dresses"). |
| About Us | ❌ MISSING (curl) | OK | — |
| Contact Us | ❌ MISSING (curl) | OK | — |
| Shipping Policy | ✅ Present | OK | Auto/set. |
| Wholesale | ✅ Present | OK | — |
| Clara Collection | ✅ Present (curl) | OK | — |
| Louise Dress Collection | ❌ MISSING (DOM-confirmed) | "The Louise Dress Collection – Dear Eden" (39 chars, good) | DOM showed metaDesc MISSING though Clara had one — inconsistency across collections = some set in admin, some not. |
| Product pages | ✅ Present (auto-generated from description) | ✅ Good (78 chars, keyword + variant + brand) | Strong. |
Key issues:
- Homepage has no meta description and a brand-only title (9 chars). This is the most valuable page on the site and it's invisible in SERPs beyond the bare brand name. Fix: add a 150–160 char description ("Designer-worthy mother-daughter matching dresses…") and a keyword-rich title ("Matching Mommy & Me Dresses | Dear Eden").
- Meta descriptions set inconsistently across pages/collections — the clearest Shopify-admin hygiene gap. Several collections/pages have none. Fix: bulk-set in admin (low effort, high CTR payoff).
- Heading hierarchy broken by popup. As noted, the newsletter modal's
<h1>is the only H1 on collection pages (e.g., "The Louise Dress Collection" is not wrapped in any heading tag — it's a styled<div>/text node). Fix: make the collection title an<h1>; demote the popup to<h2>. - Homepage H1 is empty (
<h1></h1>present but blank in the DOM) while the visible hero "THE LOUISE DRESS COLLECTION" is an<h2>. The product title H1 only appears on product pages. Fix: give the homepage a real H1 (brand + value prop).
3.3 Schema Markup
| Type | Present | Notes |
|---|---|---|
| Organization | ✅ | On all pages (name, logo, social sameAs). |
| WebSite | ✅ | Homepage, with potential SearchAction. |
| Product (ProductGroup + Product) | ✅ (product pages) | But incomplete — see below. |
| BreadcrumbList | ❌ Missing | No breadcrumb schema on product/collection pages. |
| LocalBusiness (JewelryStore/Store) | ❌ Missing | No store/geo schema despite physical Louisiana studio + phone. |
| Article | ❌ n/a | No blog content observed (blog sitemap exists but appears empty). |
| FAQPage | ❌ Missing | Opportunity on policy/FAQ pages. |
| AggregateRating / Review | ⚠️ Partial | Present in Product JSON-LD (aggregateRating: 5.00, reviewCount: 1) but the Product node is missing brand, offers (no price/currency/availability), and sku. Rich-result eligibility (price + star snippet) is compromised. |
Product schema defect (verified in raw JSON-LD): The Product object contains only name + aggregateRating. It is missing brand.name, offers (price, priceCurrency, availability), and sku. The parent ProductGroup has brand: Dear Eden but the Product-level offer data — which Google needs for price/availability rich results — is absent. Fix: ensure the theme/SEO app emits full Product offers + brand + sku.
3.4 Image SEO
- Filenames: mostly Shopify-generated (
dear_eden._Mocha_Logo_1.png) — not keyword-optimized, minor. - Alt text: decorative images correctly use empty alt; product hero images on PDPs carry the product name. No AI-generated filename patterns detected (no
Gemini_Generated_Image_,ChatGPT_Image_, etc.) — consistent with a real-photo, artisan brand. ✅ brand-authenticity match.
3.5 Internal Linking
- Footer links are descriptive and resolve. Main nav is clear. No variant-parameter pollution observed in collection links (0
?variant=links on the Louise collection; 16 clean product links). ✅ Good — the Shopify variant-pollution pitfall is not present here.
3.6 E-E-A-T Signals
- Experience/Expertise: Strong founder narrative (Samantha Links, "A Note From the Founder"), artisan-partner manufacturing story, material detail (French flax linen, cotton voile). ✅
- Authoritativeness: Junior Style Awards 2026 Nominee (referenced on homepage + linked). Judge.me credibility medals. ✅
- Trustworthiness: Phone (318) 330-2119, email, Louisiana address, shipping/return/privacy/terms policies all linked in footer. ✅ Strong for a micro-brand.
- Gap: No blog/content hub to capture informational queries ("what is mommy and me fashion," "how to style matching dresses") — a missed organic-top-of-funnel opportunity given ~700 visits/mo.
4. International SEO
Not applicable / low priority for this brand. The store is 100% US-traffic, USD-base with worldwide shipping via Shopify Markets (INR and other currencies selectable — observed "India | INR ₹" selector defaulting in some sessions). No hreflang is implemented, which is correct here: there is a single English locale and no translated/content-localized storefront. Adding hreflang without genuine localized content would be harmful (the "shell translation" trap). Recommendation: do not add hreflang until a real second locale (e.g., a translated CA/UK store) exists.
5. Best Practices & Security
Score: 92/100 — good.
5.1 Security Headers (verified via curl -sI)
| Header | Value | Status |
|---|---|---|
| HSTS | max-age=7889238 (~91 days) | ✅ Present. Could add includeSubDomains; preload for full marks. |
| X-Frame-Options | DENY | ✅ |
| X-Content-Type-Options | nosniff | ✅ |
| CSP | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests; | ✅ Solid (no script-src whitelist, but frame-ancestors 'none' blocks clickjacking). |
| X-XSS-Protection | 1; mode=block | ✅ (legacy; harmless). |
| COOP / Referrer-Policy | not set | ⚠️ Minor: add Cross-Origin-Opener-Policy: same-origin and a Referrer-Policy. |
5.2 Modern Standards
- Valid HTTPS/HTTP2; Cloudflare edge. ✅
powered-by: Shopifyheader present (informational, not a risk).- No
document.write, no mixed content, charset UTF-8. ✅ - Agent-commerce readiness: implements
agents.md, UCP (/.well-known/ucp), and Shop skill MCP endpoint — unusually advanced for a micro-brand; forward-looking, no downside. ✅ (Noted as a positive differentiator, not a defect.)
6. Content Quality Assessment
6.1 Image Quality & Authenticity
- No AI-generated imagery detected (no
Gemini_Generated_Image_,ChatGPT_Image_,Picsart-AiImageEnhancer,ai0_.png, orunnamed_1.pngpatterns in filenames/sources). Product and lifestyle imagery appears to be real photography — critical brand-authenticity match for a "heirloom / artisan / small-batch" positioning. ✅ - Hero and product imagery are high-quality and on-brand (romantic, feminine, linen/lace). Strong visual identity.
6.2 Trust Signals
- Phone, email, physical-studio location, Judge.me verified badges (Diamond Authentic/Transparent, Top 10% Trending Shops), Junior Style Awards nominee, full policy set. Above-average trust density for a 23-SKU micro-brand. ✅
6.3 Review / Social Proof
- Judge.me reviews present (homepage shows "23 reviews"; PDP shows 5.00/5 from 1 review). But AggregateRating/Review schema is incomplete (missing offers/brand/sku on the Product node), so star/price rich results may not render in SERPs. Fix: complete Product schema (§3.3).
6.4 UX Issues
- Newsletter/popup modal auto-opens and injects the only H1 on several pages — annoying for returning visitors and an SEO/heading defect. Fix: gate behind exit-intent or a delay; demote its heading.
- Catalog hygiene: duplicate "-copy" SKUs flagged in the business analysis inflate collection counts and can split link equity. Clean in admin.
- No breadcrumb navigation visible on PDPs/collections (and no BreadcrumbList schema) — minor UX/SEO loss.
7. Priority Recommendations
🔴 Immediate (This Week) — cheap, high-leverage
| # | Issue | Impact | Effort | |
|---|---|---|---|---|
| 1 | Fix mobile performance (LCP 13.2s). Inline critical CSS, font-display:swap on Typekit, defer Judge.me/Shop Pay/modal scripts, lazy-load below-fold images, cut the 4.2 MB payload. | Conversion (most mobile shoppers bounce on slow loads) + mobile ranking | Medium (theme dev) | |
| 2 | Add homepage meta description + keyword title ("Matching Mommy & Me Dresses | Dear Eden"). | SERP CTR on the #1 page | Low |
| 3 | Bulk-set meta descriptions on About, Contact, and all collections (Louise collection confirmed missing). | SERP CTR across templates | Low (admin) | |
| 4 | Fix heading hierarchy: real H1 on homepage + collection titles; demote newsletter popup from <h1> to <h2>. | Crawl relevance + a11y | Low (theme) |
🟡 Short-Term (This Month)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 5 | Complete Product JSON-LD (add brand, offers price/currency/availability, sku). | Price + star rich results in SERPs | Medium (SEO app/theme) |
| 6 | Add BreadcrumbList schema + visible breadcrumbs on PDPs/collections. | SERP sitelinks + UX wayfinding | Medium |
| 7 | Add LocalBusiness (Store) schema with LA studio address + phone. | Local/entity rich results | Low |
| 8 | Delete orphan /pages/about-the-brand 404 (no inbound links; avoids crawl noise). | Crawl hygiene | Low |
| 9 | Security header polish: add includeSubDomains; preload to HSTS; add COOP + Referrer-Policy. | Best-practices score + hardening | Low |
🟢 Long-Term (This Quarter)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 10 | Start a content/ blog hub targeting "mommy and me" + gifting + styling queries to grow beyond ~700 visits/mo. | Top-of-funnel organic growth | Medium (content) |
| 11 | Clean duplicate "-copy" SKUs and consider size-inclusivity / extended sizing info. | Catalog hygiene + addressable market | Low–Med |
| 12 | Expand social presence (TikTok, Pinterest) — high-intent, visual channels absent today. | Reach beyond owned traffic | Medium |
Summary Score Card
| Category | Score | Grade |
|---|---|---|
| Performance (Mobile) | 28/100 | 🔴 Poor |
| Performance (Desktop) | 64/100 | 🟡 Needs work |
| Accessibility | 97/100 | 🟢 Good |
| Best Practices | 92/100 | 🟢 Good |
| SEO (lab) | 92/100 | 🟢 Good* |
| Security | Strong (HSTS, CSP, XFO, nosniff) | 🟢 Good |
| Content Authenticity | Real photography, no AI images | 🟢 Good |
| Overall | Foundation solid; mobile speed + on-page SEO meta are the two fixable blockers | 🟡 Mixed |
\*Lighthouse SEO score does not flag missing homepage/collection meta descriptions or the popup-H1 heading defect — those are real editorial gaps addressed in §3.2.
Sources & Citations
- https://pagespeed.web.dev/ — Lighthouse mobile + desktop lab scores and CWV (homepage, captured 2026-08-26): Performance 28 (mobile)/64 (desktop); Accessibility 97; Best Practices 92; SEO 92; Mobile LCP 13.2s, FCP 4.9s, TBT 840ms, CLS 0.187, SI 14.9s; Desktop LCP 1.7s, FCP 0.7s, TBT 450ms, CLS 0.016, SI 4.8s. Render-blocking est. 1,040ms; payload 4,216 KiB.
curl -sI https://shopdeareden.com/— security headers (HSTS, X-Frame-Options DENY, X-Content-Type-Options nosniff, CSPframe-ancestors 'none', X-XSS-Protection), Cloudflare server, Shopifypowered-by, HSTS max-age 7889238.https://shopdeareden.com/robots.txt— crawl rules,Sitemap:directive, UCP/agents.md agent instructions.https://shopdeareden.com/sitemap.xml+ product/collection/page sitemaps — 23 product URLs, 8 collections, 10 pages;sitemap_agentic_discovery.xmlpresent.- Browser DOM inspection (homepage, product PDP, Louise + Clara collections) —
<html lang="en">, viewport, title lengths, meta-description presence, canonical self-references, OG/Twitter tags, H1/H2 inventory, JSON-LD types (Organization, WebSite, ProductGroup, Product), image alt counts, 137 scripts / 52 stylesheets on homepage. curllink-status checks —/pages/about-us200,/pages/about-the-brand404 (orphan, no inbound links); collection PDP meta-description inconsistency confirmed (Clara present via curl, Louise MISSING via DOM).business-analysis.md(task t_c970ba5b) — brand profile, ~700/mo US-only traffic (below CrUX threshold), 23-SKU catalog, duplicate "-copy" SKUs, founder/contact details, Junior Style Awards 2026 nominee.- CrUX Vis (cruxvis.withgoogle.com) — no field data (origin below reporting threshold); cited in business-analysis.md.