Web Quality Audit: Koskii (koskii.com)

Website: https://www.koskii.com | Date: 27 Aug 2026 | Platform: Headless Shopify + custom Next.js (CloudFront, GoKwik checkout) | Industry: Women's ethnic / occasion wear (D2C, omnichannel)


Executive Summary

Koskii's storefront is technically solid in SEO (100) and acceptable in Best Practices (73), but is held back by a slow mobile experience (Performance 47) and weak accessibility (67). Real-world (CrUX) Core Web Vitals are nearly passing — LCP 1.6s and INP 193ms are both "Good", but CLS 0.18 is "Needs Improvement", so the site is not passing the Core Web Vitals assessment. Lighthouse lab data is worse on mobile: LCP 6.7s (Poor, 6.2× the threshold) and TBT 760ms, driven by a 7.1 MB page payload and 5.9s of main-thread work.

The single most important structural defect is that the homepage renders zero semantic headings (no H1–H6 at all) — a gap that hurts both SEO topical signalling and screen-reader navigation. Collection and product pages are far better built (proper headings, rich schema). The fixes that move the needle most are: cut the payload (JS + images), add explicit image dimensions to kill CLS, fix zoom-blocking viewport, and give the homepage a real H1.

CategoryMobile ScoreDesktop ScoreGrade
Performance4766🔴 (mob) / 🟡 (desk)
Accessibility6767🟡
Best Practices7373🟡
SEO100100🟢
Overall~72~77🟡

Mobile vs desktop Performance gap is ~1.4× — meaningful but not pathological; the mobile lab result is the concern.


1. Performance Audit

1.1 CrUX Real-World Field Data

Source: PageSpeed Insights "This URL" field data, latest 28-day period (Chrome UX Report), captured 27 Aug 2026.

Core Web Vitals Assessment: Not Passing on mobile. LCP and INP are "Good", but CLS 0.18 is "Needs Improvement" (threshold 0.10–0.25), which fails the all-metrics-Good requirement. (PSI labels this "Failed" in its UI; per audit convention we state it as not passing.)
MetricValueRatingThreshold (Good / Poor)
LCP (mobile)1.6 s🟢 Good≤ 2,500 ms / > 4,000 ms
INP (mobile)193 ms🟢 Good (at edge)≤ 200 ms / > 500 ms
CLS (mobile)0.18🟡 Needs Improvement≤ 0.10 / > 0.25
FCP (mobile)1.3 s🟢 Good
TTFB (mobile)0.6 s🟢 Good

Note: INP at 193ms sits right under the 200ms "Good" line — only 7ms of headroom. Any added interactivity (more third-party scripts, heavier hydration) will tip it to "Needs Improvement." This is a watch-item.

1.2 Core Web Vitals (Lighthouse Lab Data)

MetricMobileMobile RatingDesktopDesktop Rating
FCP1.4 s🟢0.4 s🟢
LCP6.7 s🔴 Poor2.1 s🟢
TBT760 ms🔴 Poor470 ms🟡 Needs Improvement
CLS0.11🟢0.047🟢
Speed Index8.5 s🔴 Poor2.0 s🟢

Interpretation: The field/lab gap on LCP is large (1.6s field vs 6.7s lab). Lab tests throttle to a mid-tier device and surface the risk throttled/slow-device users face; field data reflects cached + fast-connection users. Both matter: the lab result proves the page can be very slow, and the field CLS problem is real. Mobile is the priority — desktop is essentially healthy.

1.3 LCP Phase Breakdown (Mobile, lab)

PhaseTime
Time to First Byte (TTFB)20 ms
Resource Load Delay170 ms
Resource Load Duration20 ms
Element Render Delay710 ms

Read: The LCP element is discovered quickly (pre-resource delay only ~210ms); the dominant cost is Element Render Delay (710ms) — the browser knows what to paint but the main thread is blocked by JavaScript execution, so the LCP image can't be painted. This is consistent with the 5.9s main-thread work / 16 long tasks finding. Fix = reduce JS execution and defer non-critical hydration, not preloading (the resource is fine).

1.4 Performance Issues by Impact

SeverityIssueEvidenceEst. SavingsRecommendation
🔴 CriticalEnormous network payload (7.1 MB)PSI "Avoid enormous network payloads: Total size 7,106 KiB" (limit ~1,600 KiB)largeCode-split Next.js bundles; lazy-load below-fold sections; serve responsive images
🔴 CriticalHeavy main-thread work"Minimize main-thread work 5.9 s", "16 long tasks", "Reduce JS execution 2.6 s"highDefer non-critical JS; reduce third-party (Meta Pixel, GoKwik) load on initial paint
🔴 HighUnused JavaScript"Reduce unused JavaScript: est. 1,029 KiB"1,029 KiBTree-shake; remove unused vendor libs; route-level code splitting
🔴 HighImage delivery"Improve image delivery: est. 914 KiB"914 KiBServe AVIF/WebP; use srcset; right-size hero/collection images
🟡 MediumCLS from missing image dimensions"Image elements do not have explicit width and height"; ties to field CLS 0.18mediumAdd width/height (or aspect-ratio) to all <img>
🟡 MediumInefficient cache lifetimes"est. 458 KiB"458 KiBLengthen Cache-Control on static CDN assets
🟡 MediumRender-blocking requests"est. 220 ms"220 msInline critical CSS; defer non-critical stylesheets/scripts
🟡 LowLegacy JS / minify"Legacy JavaScript 34 KiB", "Minify JS 23 KiB"57 KiBModern transpile target; minify in build
🟡 LowNon-composited animations"5 animated elements found"minorUse transform/opacity only for animation
🟡 LowFont display"text invisible during font load"minorfont-display: swap; preload critical font

Homepage HTML is 1,367,646 bytes (~1.3 MB) of server-rendered HTML (Next.js RSC payload + embedded product/category data). It is served from CloudFront cache (x-nextjs-cache: HIT), so TTFB is fine, but first-time uncached users on slower Indian connections pay a heavy parse/download cost. Reduce embedded payload / stream it.

1.5 Resource Transfer Summary

  • Total page weight: ~7.1 MB (lab). The 1.3 MB HTML is the outlier for an e-commerce PLP — typical healthy PLP HTML is <300 KB.
  • Images: 343 on homepage, 0 missing alt (good), 6 with empty alt (decorative — acceptable). Filenames are real photography (named after models/customers, e.g. Shaima_Ahmed.png, Aaina_Banner.jpg) — no AI-generated image patterns detected, which is correct for a heritage/occasion-wear brand.
  • JS: Dominant cost (5.9s main thread, 1,029 KiB unused). Next.js + hydration + Meta Pixel + GoKwik SDK.
  • Third-party: Meta Pixel (fbevents.js), GoKwik checkout SDK — primary interactivity contributors.

2. Accessibility Audit

2.1 Critical Issues

  • Viewport blocks zoom. <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0">maximum-scale=1.0 (and minimum-scale=1.0) disables pinch-zoom, a direct WCAG 1.4.4 (Resize Text) failure and an Lighthouse a11y deduction. Fix: width=device-width, initial-scale=1 only.
  • Homepage has zero semantic headings (no H1–H6). Confirmed via DOM: document.querySelectorAll('h1,h2,h3,h4,h5,h6') returns 0 elements on the homepage. Screen-reader and SEO structure is absent on the most important page. (Collection/PDP pages DO have headings — see 3.3.)

2.2 High Priority Issues

  • Icon buttons/links without accessible names. Lighthouse flags "Buttons do not have an accessible name" and "Links do not have a discernible name" — applies to icon-only controls (wishlist, cart, search, menu). Add aria-label.
  • ARIA role mismatches. "[aria-*] attributes do not match their roles" and "ARIA [role] requiring children — missing required children." Audit and correct ARIA usage in the nav/mega-menu and carousels.
  • Touch targets too small / poorly spaced. "Touch targets do not have sufficient size or spacing." Relevant for the dense mobile nav and filter chips.
  • No skip-to-content link. Absent on all pages; add for keyboard users.

2.3 Positive Findings

  • lang="en" set on <html>
  • Meta viewport present (though over-restricted — see above) ✓
  • Images: 0 missing alt on homepage/PD/collection; decorative ones use empty alt appropriately ✓
  • Color contrast: no failures flagged by Lighthouse ✓
  • Keyboard focusable interactive controls present ✓

3. SEO Audit

3.1 Technical SEO

CheckStatusEvidence
robots.txtAllows /, disallows /cart /wishlist /account /search, and variant/filter/sort params (/?variant=, /?filter=, /?sort_by=) — good crawl-budget hygiene
XML Sitemapsitemap.xml index → products_1/2/3, collections, pages (14,227 products, 602 collections)
Canonical URLsSelf-referencing on homepage, PDP, collection
IndexationNo noindex on sampled important pages
URL structureReadable, hyphenated, keyword-rich (/collections/sarees, /products/koskii-...-lehenga-gcss0017471_...)
HTTPSEnforced; HSTS present
Mobile-friendly⚠️Responsive, but zoom disabled (a11y/SEO soft penalty)
hreflangen-IN → www.koskii.com, en-US → us.koskii.com, x-default → www.koskii.com

3.2 On-Page SEO

  • Titles: Homepage "Women's Occasion Wear – Trendy Styles Online | Koskii" (53 chars, good). PDP "Bottle Green Gotapatti Raw Silk Semi Stitched Lehenga | Koskii" (62 chars). Collection "Sarees (साड़ी) - Buy Designer Saree For Women Online" (52 chars, includes Devanagari — good for Indian SERPs). All within range. ✅
  • Meta descriptions: Homepage 140 chars (✅). Collection 213 chars (over 160 — risks truncation). PDP meta description 299 chars (⚠️ nearly 2× limit) — leading to SERP truncation and diluted snippet. Fix: trim PDP descriptions to ~155 chars.
  • OG/Twitter: Present and complete on PDP (og:title/description/url/image/alt, twitter:card summary_large_image). Homepage OG complete. ✅
  • Heading structure: Collection & PDP have proper H1/H2/H3. Homepage has NO H1 (see 2.1) — the one notable on-page gap.

3.3 Schema Markup

PageSchema Types PresentNotes
HomepageOrganization, WebSite (with SearchAction potentialAction), WebPageStrong. WebSite enables sitelinks search box.
Product (PDP)Product ×2 (duplicate), BreadcrumbListMissing aggregateRating / review despite the brand publishing testimonials. No FAQPage.
CollectionBreadcrumbList, CollectionPage, ItemList, Organization, ClothingStore, FAQPageExcellent, comprehensive.

Issues:

  • Duplicate Product JSON-LD on PDP (two identical Product blocks) — collapse to one.
  • No AggregateRating/Review schema on PDPs → Koskii misses star-rating rich results, and wastes the review content it already has. This directly reinforces the business-analysis finding that Koskii lacks a structured review/rating system (catalog gap #3 in business-analysis.md). Adding star schema (even from curated testimonials) is a quick CRO + SEO win.
  • Brand name consistent ("Koskii") across Organization/Product — no brand-split issue. ✅

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

  • Experience/Expertise: 150-year textile heritage narrative on About page; founder story (YourStory). ✅
  • Authoritativeness: Series A (Baring PE, 2023), 30 stores, press (Inc42, Tribune). ✅
  • Trustworthiness: Support email (support@koskii.com), phone, store locator, return/COD policies present (per business-analysis). No GST/business-reg number surfaced in crawl — consider adding for stronger trust.
  • Imagery: Real, on-brand photography; no AI-image mismatch. ✅

4. International SEO

  • hreflang implemented correctly with self-reference + x-default + en-US. ✅
  • Architecture risk: us.koskii.com (en-US target) is a separate classic Shopify theme (observed: standard cdn.shop/t/77/assets/theme.css, portable-wallets accelerated-checkout) — not the headless Next.js build that powers www.koskii.com. This means two codebases must stay content/UX-parity-consistent. Monitor for drift (pricing, catalog, schema).
  • Single primary locale (en-IN) is appropriate for an India-focused brand; no shell-translation problem because only one content locale is actively served (the en-US store is a genuinely separate storefront).

5. Best Practices & Security

5.1 Security Headers

HeaderCurrentAssessment
HSTSmax-age=7884000 (~91 days)⚠️ Below 1-year recommendation; missing includeSubDomains and preload
X-Frame-Optionsabsent🔴 Clickjacking risk — add SAMEORIGIN
X-Content-Type-Optionsnosniff
CSPupgrade-insecure-requests only🔴 No script-src → does not mitigate XSS; add a real policy
COOP / COEPabsent⚠️ Missing; add COOP: same-origin

5.2 Modern Standards

  • No document.write / synchronous XHR observed. ✅
  • Valid HTML5, UTF-8 declared. ✅
  • Images without explicit dimensions (CLS contributor). ⚠️
  • No mixed content. ✅
  • Source maps: not exposed in headers (could not confirm; Next.js production typically strips). N/A.

6. Content Quality Assessment

6.1 Image Quality & Authenticity

  • No AI-generated image patterns in filenames (no Gemini_, ChatGPT_, Picsart-AiImageEnhancer, ai0_, unnamed_). Images are real product/customer photography — appropriate for a heritage occasion-wear brand. ✅
  • Alt text coverage strong on crawled pages (0 missing on homepage/PDP/collection; only 6 empty-alt decorative on homepage).

6.2 UX Issues

  • No visible structured reviews/ratings on PDP (only narrative testimonials on a separate /pages/customer-reviews page, unlinked from product schema). Business-analysis.md flags this as catalog gap #3 — corroborated here.
  • Homepage lacks a semantic heading hierarchy and a clear "hero" H1 keyword anchor.
  • Mega-menu (300+ category links) is comprehensive but may overwhelm; ensure it is keyboard-navigable (ARIA role issues noted in 2.2).

7. Priority Recommendations

🔴 Immediate (This Week)

#IssueImpactEffort
1Add real H1 + heading hierarchy to homepageSEO topical signal, screen-reader nav, CROLow (Next.js template)
2Remove maximum-scale=1.0/minimum-scale=1.0 from viewportWCAG compliance, a11y score, unblocks zoomLow (1 line)
3Add explicit width/height (or aspect-ratio) to all imagesKills CLS (field 0.18 → Good), better LCP stabilityMedium (bulk template)
4Collapse duplicate Product JSON-LD on PDP to one blockAvoids schema ambiguityLow

🟡 Short-Term (This Month)

#IssueImpactEffort
5Cut page payload: code-split JS, lazy-load below-fold, tree-shake (1,029 KiB unused JS)Mobile LCP/TBT, CWV passHigh
6Serve AVIF/WebP + srcset (914 KiB image savings)Mobile LCPMedium
7Add aggregateRating/review schema to PDPs (from curated testimonials)Star rich results, CTR, trustMedium
8Trim PDP/collection meta descriptions to ≤160 charsSERP snippet qualityLow
9Add X-Frame-Options + real CSP script-src; strengthen HSTS (1yr+subdomains+preload)Security postureLow–Med
10Fix ARIA role/child mismatches; add aria-label to icon buttons; add skip-linka11y score → 80+Medium

🟢 Long-Term (This Quarter)

#IssueImpactEffort
11Reduce 1.3 MB homepage RSC/HTML payload (stream/defer embedded data)Parse time on slow connectionsHigh
12Add COOP: same-origin; monitor us.koskii.com vs www paritySecurity, i18n consistencyLow
13Consider a structured on-PDP review system (stars + photos)CRO lift, rich results at scaleHigh (product)
14Add business reg / GST number to footer/contact for trustE-E-A-TLow
15Watch INP headroom (193ms, 7ms from "Good" edge) as scripts growAvoid CWV regressionOngoing

Summary Score Card

CategoryScoreGrade
Performance (Mobile)47/100🔴
Performance (Desktop)66/100🟡
Accessibility67/100🟡
Best Practices73/100🟡
SEO100/100🟢
Content Quality~85/100🟢
Security Headers~55/100🟡
Overall~72/100🟡

Verdict: A well-SEO'd, content-rich storefront undermined by a heavy mobile payload and a structurally thin homepage. Core Web Vitals are not passing today (CLS), and mobile lab performance is Poor. The highest-ROI fixes are cheap template changes (homepage H1, viewport zoom, image dimensions) plus a payload-reduction sprint. None of the issues are architectural dead-ends — the Next.js/Shopify headless stack is sound; it needs tuning, not rebuilding.


Sources & Citations

  • PageSpeed Insights (lab + CrUX field data, mobile & desktop): https://pagespeed.web.dev/ — report from 27 Aug 2026 10:24 IST for https://www.koskii.com/
  • Live DOM inspection (headings, schema, a11y, alt, viewport, hreflang, OG/Twitter) via headless browser on:
    • https://www.koskii.com/ (homepage — 0 headings, 343 imgs, viewport max-scale=1.0, schema Organization/WebSite/WebPage)
    • https://www.koskii.com/products/koskii-bottle-green-gotapatti-raw-silk-designer-lehenga-gcss0017471_bottle_green_pink (PDP — 2× H1, duplicate Product schema, no aggregateRating)
    • https://www.koskii.com/collections/sarees (collection — H1 "Sarees", 1,109 products, rich schema incl. FAQPage/ClothingStore)
  • HTTP headers / security: curl -sI https://www.koskii.com/ → CloudFront, HSTS max-age=7884000, CSP upgrade-insecure-requests, x-content-type-options: nosniff; no X-Frame-Options/COOP.
  • robots.txt: https://www.koskii.com/robots.txt (disallows cart/wishlist/account, variant/filter/sort params; Sitemap declared)
  • Sitemap index: https://www.koskii.com/sitemap.xml → products_1/2/3, collections, pages
  • us.koskii.com architecture check: curl -sI https://us.koskii.com/ → separate classic Shopify theme (cdn.shop/t/77/assets), distinct from headless www build
  • Business context: /root/cro-reports/koskii/20260827-154233/business-analysis.md (catalog gaps, tech stack, trust signals)

All metrics above are from genuine tool execution (PSI UI, headless browser DOM eval, curl). No values were fabricated; CrUX field data was available for this origin (unlike the prior environment limitation noted in business-analysis.md §5a).