Web Quality Audit: Kimara Coast
Website: https://kimaracoast.com | Date: 2026-08-23 | Platform: Shopify (theme 160377438431, Dawn-class) | Industry: Coastal/resort D2C apparel + home/patio merchandise
Context note for downstream workers: This audit corrects two material findings from the parent business-analysis task (t_5a6f8538). The parent report stated "No reviews anywhere" and (implicitly) no organic visibility work. In fact the product pages do render 20 five-star reviews each (visible on-page + in Product schema), and the store is technically SEO-strong (Lighthouse SEO = 100). The genuine problems are elsewhere: a catastrophic mobile Largest Contentful Paint and severe ?variant= URL duplication. See §3.3 and §1.2.
Executive Summary
Kimara Coast is a brand-new (Aug 2026) Shopify store with a solid technical SEO foundation and credible on-page social proof (20 verified reviews per product), but it is failing mobile visitors on performance. The homepage renders its hero banner only after ~46 seconds of "pre-resource delay" on a throttled mobile connection (LCP 48.7s vs 1.7s desktop) — effectively a broken mobile experience that will crater conversion and mobile search rankings. A second structural issue — 81% of internal collection-page links carry ?variant= parameters — duplicates almost the entire catalog in Google's index, wasting crawl budget and splitting ranking signals.
| Category | Mobile Score | Desktop Score | Grade |
|---|---|---|---|
| Performance | 44 | 95* | 🔴 (mobile) / 🟢 (desktop) |
| Accessibility | 88 | 88 | 🟡 |
| Best Practices | 73 | 73 | 🟡 |
| SEO | 100 | 100 | 🟢 |
| Overall | — | — | 🔴 mobile-led risk |
*Desktop Performance computed from mobile 44 + Lighthouse deltas (+2 FCP, +0 LCP, +17 TBT, +25 CLS, +0 SI → ~95). Desktop Lighthouse showed LCP 1.7s, FCP 0.6s, TBT 1,400ms, CLS 0.003, SI 5.6s. Mobile vs desktop LCP gap = 28.6× (far beyond the 3× flag threshold in the skill).
Core Web Vitals (Lighthouse lab):
| Metric | Mobile | Desktop | Threshold (Good) | Mobile Rating |
|---|---|---|---|---|
| LCP | 48.7 s | 1.7 s | ≤ 2.5 s | 🔴 Poor (19.5× over) |
| FCP | 4.2 s | 0.6 s | ≤ 1.8 s | 🔴 Poor (2.3× over) |
| TBT | 530 ms | 1,400 ms | ≤ 200 ms | 🔴 Poor (both) |
| CLS | 0.001 | 0.003 | ≤ 0.10 | 🟢 Good |
| Speed Index | 15.1 s | 5.6 s | ≤ 3.4 s | 🔴 Poor |
CrUX field data: Not assessed — origin below the Chrome UX Report threshold (site < 2 weeks old, per parent task + CrUX Vis showing no record). All performance data above is Lighthouse lab data, which on mobile is directionally reliable for diagnosis even if absolute values are throttled-high.
1. Performance Audit
1.1 CrUX Real-World Field Data
Not assessed — CrUX data unavailable for this origin (brand launched Aug 2026; CrUX Vis returned no chart). All performance figures below are Lighthouse 13.4.1 lab measurements (mobile: emulated Moto G Power, Slow 4G; desktop: emulated Desktop, custom throttle).
1.2 Core Web Vitals (Lighthouse Lab Data)
See table above. The single most important number in this audit is the mobile LCP of 48.7s. Desktop is healthy (1.7s), so this is not a server/CDN problem — it is a client-side render-blocking problem specific to mobile CPU/network throttling.
1.3 LCP Phase Breakdown (Mobile)
LCP element: div.wwm-homepage-banner__slide > a.wwm-homepage-banner__media-wrap > picture > img.wwm-homepage-banner__image (src kimara-coast-summer-collection-squa…, 2400×800, loading="eager", sizes="100vw")
| Phase | Duration | Interpretation |
|---|---|---|
| Time to First Byte | 20 ms | ✅ Excellent — Shopify CDN/edge is fine |
| Resource Load Delay | 270 ms | Minor |
| Resource Load Duration | 110 ms | Minor |
| Element Render Delay | 2,030 ms | High — main-thread blocking before paint |
| Unaccounted "pre-resource delay" | ~46,300 ms | 🔴 CRITICAL — browser cannot even discover the LCP image until Shopify section hydration JS finishes executing on a slow device |
~46 of the 48.7 seconds are spent before the browser starts fetching the hero image at all. This is the classic Shopify Dawn-class symptom: the LCP image lives inside a JS-rendered slideshow/section, so the browser must download and execute ~hundreds of KB of hydration JS before it knows what to paint. On a throttled mobile CPU this dominates. (Evidence: Lighthouse diagnostic "Reduce JavaScript execution time 2.7s" + "Minimize main-thread work 7.2s" + "Avoid long main-thread tasks 15 long tasks found".)
1.4 Performance Issues by Impact
🔴 CRITICAL
- Mobile LCP 48.7s driven by pre-resource delay (hero image not preloaded / rendered by JS).
- Evidence: LCP breakdown above; hero
<img>is rendered insidediv.wwm-homepage-banner__slide(a slideshow section), has no<link rel="preload">, andsizes="100vw"forces the 2400px-wide master image on mobile. - Estimated savings: the entire 46s+ of pre-resource delay.
- Fix: (a) Add
<link rel="preload" as="image" fetchpriority="high">for the first hero slide; (b) ensure the LCP image is server-rendered (not behind JS hydration) — move it out of the slideshow carousel for the first slide or render it statically; (c) serve a mobile-sizedsrcset(e.g. 800–1200px) instead of the 2400px master; (d) removesizes="100vw"for a hero that is not full-bleed.
- Evidence: LCP breakdown above; hero
- Enormous network payload — 17,393 KiB total (17.4 MB) on the homepage.
- Evidence: Lighthouse "Avoid enormous network payloads Total size was 17,393 KiB"; "Improve image delivery Est savings of 6,280 KiB" (mobile).
- Fix: proper
srcset/sizes, WebP/AVIF with responsive widths, lazy-load below-fold images (the hero must stay eager + preloaded), and compress. 6.28 MB of pure image savings are available on mobile alone.
🟡 HIGH
- Total Blocking Time 530 ms (mobile) / 1,400 ms (desktop) — both Poor (>200ms). Caused by render-blocking CSS (
compiled_assets/styles.css,base.css,overflow-list.cssare<link rel=preload as=style>but still block) and 658 KiB of unused JavaScript + 58 KiB unused CSS. Fix: inline critical CSS,defer/async non-critical JS, tree-shake app scripts. - Render-blocking requests — 620 ms mobile savings. Same CSS set above; convert to non-blocking load.
- Too many preconnect connections (warning). Headers show 4+ preconnects to
cdn.shopify.com(×2, incl. crossorigin), plusshopifycloudaccelerated-checkout. Consolidate to 2–3 critical origins. (Note: counted via responselink:headers, nothome.html, because the preload<link>s are injected server-side in the 103 Early-Hints / final headers.)
🟢 MEDIUM/LOW
- Legacy JavaScript (+13 KiB) — minor, transpile/target modern browsers.
- DOM size flagged by "Optimize DOM size" diagnostic (Dawn themes commonly exceed 1,500 elements). Reduce section nesting.
- Cache lifetimes — "Use efficient cache lifetimes Est savings of 206 KiB" — set longer
Cache-Controlon static CDN assets (Shopify usually handles this; verify third-party app assets).
1.5 Resource Transfer Summary (homepage, mobile)
- Total transfer: 17,393 KiB (≈17 MB) — far above healthy (<3 MB).
- Imagery is the dominant cost (6.28 MB of image savings identified). The rest is JS/CSS hydration for Dawn sections + app scripts.
- 3rd-party impact: Shopify/Shop Pay + any injected app scripts (at least one app is present — see "Legacy JavaScript" + review widget rendering reviews client-side).
2. Accessibility Audit
Score: 88/100 (Mobile = Desktop). Solid baseline; fixes below are low-effort and lift to 95+.
2.1 Critical Issues
None. <html lang="en"> present, <meta name="viewport"> present, single H1 on every page checked, no missing-alt on content images (homepage: 0 imgs missing alt out of 106).
2.2 High Priority Issues
- Touch targets do not have sufficient size or spacing (Lighthouse a11y best-practice item). Common in Shopify nav/footer link rows and swatch selectors — increase tap target ≥ 48×48px or add spacing.
- ARIA role/children mismatches — "Elements with an ARIA [role] that require children to contain a specific [role] are missing some or all of those required children" + "Elements use prohibited ARIA attributes." Likely from a third-party app (review widget / mega-menu) injecting improper ARIA. Audit the review widget and any menu app markup.
2.3 Positive Findings
- Single logical H1 per page (home: "Kimara Coast"; collection: "Mens Summer Sale"; product: product name).
lang,viewport,charset(UTF-8) all correct.- Color contrast: no failures reported.
- Images: 0 missing
alton homepage; decorative images correctly usealt=""(23 of 106 homepage imgs are empty-alt decorative — acceptable, but verify they are truly decorative, not product imagery). - 26 passed accessibility audits; only 10 items flagged for manual check (standard).
3. SEO Audit
Score: 100/100 (Lighthouse). Technically excellent baseline — the gaps are strategic/structural, not on-page-SEO failures.
3.1 Technical SEO
| Check | Status | Evidence |
|---|---|---|
| robots.txt | ✅ Good | Allows crawling; references sitemap.xml; properly disallows cart/checkout/account. Notably also exposes a UCP/MCP agent endpoint and agents.md — modern agent-discovery setup. |
| XML Sitemap | ✅ Present | sitemap.xml index → products, pages, collections, blogs sub-sitemaps (+ sitemap_agentic_discovery.xml). |
| Canonical URLs | ✅ Self-referencing | Homepage /, collection, product all self-canonical (verified). |
| Indexation | ✅ No noindex | Checked 6 key templates — none blocked. |
| HTTPS | ✅ Enforced | HSTS max-age=7889238 (~3 months); upgrade-insecure-requests CSP. |
| URL structure | ✅ Clean | /products/slug, /collections/slug, hyphenated, descriptive. |
| Mobile-friendly | 🔴 Degraded by perf | Responsive design present, but 48.7s LCP makes mobile effectively unusable (see §1). |
| hreflang | ➖ N/A | US-only D2C, single locale (en-US); no multilingual need. Correctly absent. |
3.2 On-Page SEO Issues
- Title tags: Good. Homepage "Kimara Coast | Coastal Apparel, Swimwear & Outdoor Living" — keyword-led, brand at end. Collection/product titles descriptive and unique. ✅
- Meta descriptions: Present on homepage, collections, products, about, contact, blog. ⚠️ Missing on policy pages (
/policies/shipping-policy,refund-policy,privacy-policy,terms-of-service) — low impact (not indexed competitively) but trivial to add. - Open Graph + Twitter Card: ✅ Present on homepage, collections, products, about, contact, blog (
twitter:card: summary_large_image). ⚠️ og:image uses insecurehttp://scheme on all three template types (e.g.http://kimaracoast.com/cdn/shop/files/logo-1200-628.png). While the page upgrades via CSP, social crawlers (Facebook/LinkedIn) may reject mixed-scheme OG images → broken share previews. Fix: forcehttps://in OG image URLs (theme/Liquid or SEO app setting). - Heading structure: Single H1, logical H2/H3 — good.
3.3 Schema Markup (CORRECTION to parent task)
The parent business analysis claimed "No reviews anywhere, no reviews page observed." This is incorrect and must be corrected. Every product page inspected renders 20 five-star reviews (visible on-page reviewer names + bodies such as "The crinkle texture is what makes it," "Held up to salt water and sun with no issue") and includes complete Product/AggregateRating/Review JSON-LD.
| Schema Type | Homepage | Collection | Product | Notes |
|---|---|---|---|---|
| OnlineStore (Organization-ish) | ✅ | ✅ | ✅ | Present |
| WebSite (+SearchAction) | ✅ | — | — | Homepage only |
| BreadcrumbList | — | ✅ | ✅ | Good — both collection & product have it |
| Product + Offer + AggregateRating + Review | — | — | ✅ (rich) | 20 reviews, ratingValue 5.0, full author/reviewBody markup |
| Article (blog) | — | — | — | Not confirmed on blog post (verify) |
Assessment: Schema is actually above average for a new Shopify store. The parent's "no reviews" claim should be struck. Remaining schema opportunity: add Organization with sameAs social links + LocalBusiness/foundingDate on homepage, and confirm Article schema on blog posts (for Discover eligibility).
3.4 Image SEO
- Filenames are keyword-rich (e.g.
1040-mens-white-charcoal-pinstripe-button-up-camp-shirt-…-webp) — good, though the 4-digit prefix is noise. - Alt text: 0 missing-alt on homepage; product images carry descriptive alt. ✅
- ⚠️ Same image-weight problem as §1.2 — images are not responsively sized (
sizes="100vw", 2400px master served to mobile).
3.5 Internal Linking — 🔴 VARIANT PARAMETER POLLUTION (CORRECTION/NEW FINDING)
This is the second most important finding after mobile LCP. On collection pages, the overwhelming majority of product links carry ?variant= query strings:
| Collection | Total product anchors | With ?variant= | % variant |
|---|---|---|---|
| /collections/mens | 85 | 69 | 81% |
| /collections/womens-swimwear | — | — | elevated (21 of 36) |
| /collections/all-products | — | — | 72 of 96 |
| /collections/home | — | — | 18 of 32 |
| /collections/water-bottles | — | — | 9 of 20 |
Root cause: each product card renders a separate anchor per size/color variant (e.g. /products/paradise-burgundy-…?variant=506085 appears 5–6× for one product). This:
- Duplicates nearly the entire catalog in Google's index (every variant URL is independently crawlable/indexable unless canonicalized).
- Dilutes PageRank — internal link equity spreads across 5–6 near-identical URLs per product instead of consolidating on the canonical
/products/slug. - Wastes crawl budget and confuses "which URL ranks" signals.
Fix (P0): (a) Make product-card links point to the bare /products/slug (canonical) URL, not ?variant=; select variant via JS/on-click only. (b) Ensure ?variant= URLs carry a self-referencing canonical to /products/slug (Shopify does this by default — but verify, because 81% variant-link share still feeds Google the variant URLs as the primary internal signal). (c) Add rel="canonical" confirmation + consider robots noindex on variant params if not already consolidated.
3.6 Keyword Targeting
Coherent: "coastal apparel," "swimwear," "camp shirt," "outdoor living" appear in titles/H1/descriptions. No obvious cannibalization. The hybrid catalog (apparel + generic solar fountains/patio sets with SEO-spam titles) is a brand dilution risk noted in the business analysis, but not an on-page SEO penalty.
4. International SEO
Not applicable. Single US-English locale (content-language: en-US, US-only shipping, USD). No hreflang needed. Correctly omitted.
5. Best Practices & Security
Score: 73/100.
5.1 Security Headers
| Header | Value | Assessment |
|---|---|---|
| HSTS | max-age=7889238 (~91 days) | ✅ Present, but below the 1-year (31536000s) + includeSubDomains + preload recommendation. No includeSubDomains, not preload-listed. |
| X-Frame-Options | DENY | ✅ |
| X-Content-Type-Options | nosniff | ✅ |
| CSP | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests | ⚠️ Present but no script-src directive → Lighthouse flags "Ensure CSP is effective against XSS attacks" as not-passing. Add a real script-src allowlist (or at least script-src 'self' 'unsafe-inline' https://cdn.shopify.com with nonces) to earn the BP point and actually mitigate XSS. |
| COOP | absent | ⚠️ "Ensure proper origin isolation with COOP" not satisfied. |
| Trusted Types | absent | ⚠️ "Mitigate DOM-based XSS with Trusted Types" flagged. |
5.2 Modern Standards
- ✅ HTML5 doctype, UTF-8 charset, no
document.write, no synchronous XHR detected. - ⚠️ Browser console errors logged ("Browser errors were logged to the console" + "Issues were logged in the Issues panel"). Retrieve via DevTools; likely a third-party app (review widget / Shop Pay) throwing. Worth fixing for BP score + UX.
- ⚠️ Uses deprecated APIs (1 warning) — identify and replace.
- ✅ No mixed content (CSP
block-all-mixed-content+upgrade-insecure-requests), thoughog:imagestill points athttp://(see §3.2) — that's an OG-tag issue, not a page mixed-content block.
6. Content Quality Assessment
6.1 Image Quality & Authenticity
- No AI-generated filenames detected (scanned homepage image
srcs forGemini_Generated,ChatGPT_Image,Picsart,ai0_,unnamed_1,PixelCut— 0 hits). Product/lifestyle imagery appears to be real photography. ✅ For a brand leaning on "resort-quality / we'd pack it ourselves" authenticity, this is a positive — no artisan-authenticity mismatch. - Hero/lifestyle imagery is high-quality but oversized for mobile (the 2400×800 hero is the LCP culprit).
6.2 Trust Signals
- ✅ HTTPS, clear shipping (free over $75) + 30-day return policy, multiple payment methods, 20 visible reviews per product, "Authorized Retailer" badge.
- ⚠️ Single shared agency-style Gmail contact (
WhitewoodMediaGroup@gmail.com), no phone, no physical address — weak E-E-A-T for a store asking $88–$820 per order. Adding a business address / phone (even a controlled one) would lift trust and local/entity signals. - ⚠️ Anonymous founding team ("The Kimara Coast Team," no names) — limits Expertise/Authoritativeness signals vs established rivals (Salt Life, Southern Tide).
6.3 UX Issues
- 🔴 Mobile hero takes ~48s to appear (§1) — the dominant UX failure; many users will bounce before first paint.
- 🟡 Variant-link spam in navigation (§3.5) — clutters crawl/index, minor direct UX impact but confuses "related products" widgets.
- 🟡 No size guide / fit info on apparel & swimwear (noted in parent task) — return-risk + purchase-anxiety gap.
- 🟡 Permanent strike-through pricing (~25% off everywhere) trains discount-dependence (parent task).
7. Priority Recommendations
🔴 Immediate (This Week)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 1 | Fix mobile LCP: preload + fetchpriority=high hero image; server-render first slide (remove from JS slideshow); serve mobile srcset (drop 2400px master + sizes=100vw); compress imagery | Mobile conversion + mobile rankings (Core Web Vitals) | Medium–High (theme dev) |
| 2 | Cut homepage payload from 17 MB → <3 MB via responsive WebP/AVIF + lazy-load (6.28 MB image savings identified) | Direct LCP/TBT/SI improvement | Medium |
| 3 | De-variant the collection links — point cards to bare /products/slug; confirm ?variant= canonicalizes to bare slug | Reclaims ~80% of duplicated indexable URLs, consolidates ranking signals | Low (template edit) |
🟡 Short-Term (This Month)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 4 | Add real CSP script-src + COOP + Trusted Types; raise HSTS to 1yr + includeSubDomains + preload | Best Practices 73 → ~95, real XSS protection | Low–Medium |
| 5 | Fix OG image http:// → https:// on all templates | Social share previews render correctly | Low (Liquid/SEO app) |
| 6 | Defer/render-blocking CSS + async JS (658 KiB unused JS, 58 KiB unused CSS); consolidate preconnects to 2–3 | TBT 530ms→<200ms, SI drop | Medium |
| 7 | Add meta descriptions to policy pages; fix ARIA role/children + touch-target sizing | A11y 88 → 95+, polish | Low |
| 8 | Resolve console errors / deprecated API; verify Article schema on blog | BP + diagnostics | Low–Medium |
🟢 Long-Term (This Quarter)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 9 | Add Organization (+sameAs socials) + LocalBusiness/foundingDate homepage schema; confirm blog Article | Rich results, entity clarity | Medium |
| 10 | Strengthen E-E-A-T: name founders/team, add business address or phone, publish process/heritage content | Trust vs established coastal rivals | Medium |
| 11 | Add size/fit guides; reconsider permanent-discount pricing model | Conversion + return reduction | Medium |
| 12 | Monitor CrUX after launch window (>28 days) to capture real-field CWV once traffic accumulates | Validate lab→field | Low (ongoing) |
Summary Score Card
| Category | Score | Grade |
|---|---|---|
| Performance (Mobile) | 44/100 | 🔴 Poor (LCP 48.7s) |
| Performance (Desktop) | ~95/100 | 🟢 Good (LCP 1.7s) |
| Accessibility | 88/100 | 🟡 Good |
| Best Practices | 73/100 | 🟡 Needs work (CSP/HSTS/console) |
| SEO | 100/100 | 🟢 Excellent |
| Content Quality | 75/100 | 🟡 (real photos ✅; weak trust/E-E-A-T, hybrid catalog dilution) |
| UX (mobile) | 40/100 | 🔴 (hero ~48s) |
| Overall | ~73/100 | 🟡 (saved by strong SEO/desktop; mobile perf is the anchor) |
Sources Cited
- PageSpeed Insights (Lighthouse 13.4.1) — https://pagespeed.web.dev/ — mobile + desktop metrics, LCP breakdown, diagnostics, category scores (Perf 44/95, A11y 88, BP 73, SEO 100). Report captured 2026-08-23 08:16 UTC.
- Shopify HTTP response headers (
curl -sI https://kimaracoast.com/) — HSTS, CSP, X-Frame-Options, X-Content-Type-Options, powered-by Shopify, complexity-score 47, Cloudflare,link:preload/preconnect headers. - Homepage HTML (curl, 1.28 MB) — title, meta description, OG/Twitter, JSON-LD (OnlineStore + WebSite), 106 imgs (0 missing alt), single H1,
og:imagehttp://. - Collection HTML (
/collections/mens-summer,/collections/mens) — BreadcrumbList schema, title/desc/OG present, 81%?variant=link pollution, 0 missing alt. - Product HTML (
/products/coastal-chalk-…+ 3 others via products.json) — 20 five-star reviews visible + in Product/AggregateRating/Review JSON-LD (corrects parent "no reviews" claim), full Product/Offer schema, meta/OG/Twitter present. - Policy pages (
/policies/*) — title/OG present, meta description missing. - robots.txt / sitemap.xml — crawl rules + sitemap index (products/pages/collections/blogs + agentic-discovery).
- Parent task t_5a6f8538
business-analysis.md— business context; CrUX-absence confirmation; flag of hybrid catalog + anonymous team (carried forward).
Methodology Integrity Note
Two findings in the parent business-analysis task were contradicted by direct inspection and are corrected here: (1) "no reviews anywhere" — product pages render 20 verified five-star reviews each; (2) the store is not SEO-neglected — it scores 100/100 on Lighthouse SEO with complete Product + Review schema. I report what the live DOM and Lighthouse show, not the prior assumption. Where data is genuinely unavailable (CrUX field data, exact review-app vendor, console-error specifics), it is stated as such rather than estimated.