Web Quality Audit: House of Masaba
Website: https://www.houseofmasaba.com | Date: 2026-08-18 | Platform: Shopify (Ecomus-schema theme #157995401438) | Industry: Bridge-to-luxury Indian designer wear
Business context (from business-analysis.md): Shopify D2C storefront for House of Masaba Lifestyle Pvt Ltd (51% owned by ABFRL; FY25 revenue ≈₹116 cr; 898 SKUs; 22 stores). Audience is 84% mobile / 11.9% desktop / 4% tablet (CrUX form factors, 2026-08-15), median order value ₹38,000, festive-driven. This is a decisively mobile-first, consumer-facing store — so mobile UX and load performance are the priority surface.
Executive Summary
House of Masaba's site is healthy in the field and under-indexed in the lab. Real users on both phone and desktop pass Core Web Vitals (CrUX, 2026-08-15), and SEO fundamentals (crawlable, indexable, self-canonical, sitemap wired, 92/100 Lighthouse SEO) are solid. The problem is the synthetic Lighthouse lab run on mobile, which scores 30/100 with an LCP of 7.7s — and a fragile PDP/collection-layer SEO and schema implementation that is actively hurting social sharing and rich-result eligibility.
The single most important tension: the site serves an 84%-mobile audience yet its lab mobile performance is in the red. Field data is currently Good, but it sits close to thresholds (mobile INP p75 ≈ 203 ms — worse than the origin aggregate — and LCP p75 ≈ 2.5 s, right at the Good/Needs-Improvement boundary). A festive-season traffic spike (the brand is mid-"Festive 2026") can push field metrics into Needs Improvement fast. The lab result shows where the headroom leak is: render-blocking CSS/JS (est. 2,090 ms), inefficient cache lifetimes (1,324 KiB), and unoptimized hero/image delivery (633 KiB), on top of 147 script tags (Contentsquare, Gokwik, Loox, Yotpo, Klaviyo, Nitro Upsell, Nova, social login).
Separately, critical SEO/schema defects on product and collection pages will suppress organic visibility and rich results regardless of speed: the PDP <title>/description are broken or missing, Open Graph/Twitter images are entirely absent (so Instagram/Facebook shares render as bare links — a major miss for a brand whose discovery is 80%+ social), and the Product schema emits the wrong brand name and the literal string "Standard Shipping: 6 - 8 Weeks" as its description.
| Category | Mobile Score | Desktop Score | Grade |
|---|---|---|---|
| Performance | 30 | 52 | 🔴 / 🟡 |
| Accessibility | 82 | 82 | 🟢 |
| Best Practices | 54 | 54 | 🟡 |
| SEO | 92 | 92 | 🟢 |
| Overall (lab-weighted) | — | — | 🟡 |
Note: Accessibility/Best-Practices/SEO audits are device-symmetric; only Performance differs (Mobile 30 vs Desktop 52). The mobile-vs-desktop performance gap (~1.7× on the performance score, and 7.7 s vs 1.5 s LCP) is large and driven by mobile CPU/network constraints hitting the heavy theme + 147 scripts.
1. Performance Audit
1.1 CrUX Real-World Field Data
Data source: Chrome User Experience Report via CrUX Vis, origin https://www.houseofmasaba.com, latest period 2026-07-19 – 2026-08-15.
Core Web Vitals Assessment — Passing on both mobile (phone) and desktop.
Phone (84% of traffic):
| Metric | Value | Threshold (Good) | Rating |
|---|---|---|---|
| LCP | 2,385 ms | ≤ 2,500 ms | 🟢 Good (near boundary) |
| INP | 196 ms | ≤ 200 ms | 🟢 Good (regressing) |
| CLS | 0.01 | ≤ 0.10 | 🟢 Good |
Desktop (11.9%):
| Metric | Value | Threshold (Good) | Rating |
|---|---|---|---|
| LCP | 1,752 ms | ≤ 2,500 ms | 🟢 Good |
| INP | 85 ms | ≤ 200 ms | 🟢 Good |
| CLS | 0.06 | ≤ 0.10 | 🟢 Good |
Trend flags (phone, 40-week series):
- Mobile INP has been creeping up toward 200 ms all year (163 ms in Oct-2025 → 196 ms in Aug-2026) and is explicitly labeled "good but regressing" in CrUX Vis. It is one bad-script-injection away from Needs Improvement.
- LCP on phone oscillates 1.96 s–2.52 s; the 2026-03-22 period hit 2,517 ms (briefly Needs Improvement), then recovered. It is not comfortably under threshold.
- Desktop LCP drifted up in recent weeks (1,290 ms in May → 1,752 ms in Aug), also trending the wrong way.
1.2 PSI "This URL" Field Assessment (per-URL, not origin)
PageSpeed Insights reports the mobile per-URL Core Web Vitals Assessment as "Failed" / Needs Improvement, with field median values:
- LCP p75 ≈ 2.5 s (at the Good boundary)
- INP p75 ≈ 203 ms (exceeds the 200 ms Good threshold)
- CLS p75 ≈ 10% (at the Good boundary)
This is the important nuance: the specific homepage URL performs worse than the origin aggregate on CrUX Vis. The origin-level "all Good" view masks a homepage that is already slipping. Treat the homepage as the weakest field performer.
1.3 Core Web Vitals (Lighthouse Lab Data)
| Metric | Mobile | Desktop | Rating |
|---|---|---|---|
| FCP | 4.9 s | 1.2 s | 🔴 / 🟢 |
| LCP | 7.7 s | 1.5 s | 🔴 / 🟢 |
| TBT | 1,790 ms | 2,050 ms | 🔴 / 🔴 |
| CLS | 0 | 0 | 🟢 / 🟢 |
| SI | 17.8 s | 7.7 s | 🔴 / 🟡 |
Lab vs field gap (mobile): LCP 7.7 s lab vs 2.4 s field; SI 17.8 s lab. This gap is normal-ish for Shopify (lab = cold cache, throttled Moto G, single run) but the magnitude signals a heavy, script-bloated first paint. Desktop lab is far healthier, confirming the bottleneck is mobile CPU/network against the asset weight — exactly the 84%-mobile audience's pain point.
1.4 LCP Phase Breakdown (Mobile, estimated from audit)
The audit shows no <link rel="preload"> for the hero image (preloadHero = 0) and the theme (Ecomus schema) renders the homepage hero as a CSS background-image slider, which:
- cannot be preloaded via
<link rel="preload">, - cannot be lazy-loaded away,
- is excluded from
srcset/AVIF optimization.
This is the dominant LCP killer on mobile. Render-blocking requests alone carry an estimated 2,090 ms savings — i.e., the browser is blocked on CSS/JS discovery before it can even paint the hero.
1.5 Performance Issues by Impact
| Severity | Issue | Evidence | Est. Savings | Recommendation |
|---|---|---|---|---|
| 🔴 Critical | Hero image not preloaded; likely CSS background slider | preloadHero=0; Ecomus theme hero | ~2,090 ms (render-blocking) | Convert hero to an <img> with fetchpriority="high" + <link rel="preload" as="image">; serve AVIF/WebP via srcset |
| 🔴 Critical | 147 scripts on homepage (Contentsquare, Gokwik, Loox, Yotpo, Klaviyo, Nitro Upsell, Nova, social login) | DOM inspection | TBT 1,790 ms | Defer non-critical third-party JS; load Contentsquare/Yotpo/Loox after interaction; use requestIdleCallback |
| 🟡 High | Inefficient cache lifetimes on static assets | Lighthouse: 1,324 KiB | 1,324 KiB | Set Cache-Control: immutable, max-age=31536000 on versioned CDN assets |
| 🟡 High | Unoptimized image delivery | Lighthouse: 633 KiB | 633 KiB | Serve AVIF/WebP; add srcset on all <img>; ensure hero + PDP images are sized to viewport |
| 🟡 High | Render-blocking CSS | base.css + theme.css preloaded but render-blocking JS | — | Inline critical CSS (above-the-fold); defer the rest |
| 🟢 Low | 6+ preconnect links (some possibly redundant) | link header | — | Trim to 2–3 truly critical origins |
| 🟢 Low | Large DOM (3,057 elements, homepage) | DOM count | — | Reduce nested wrappers in mega-menu/footer |
1.6 Resource Transfer Summary (mobile lab)
- Images: largest transfer class; hero + 345 homepage images dominate.
- JS: 147 script tags — by far the worst offender for TBT/INP.
- CSS:
base.css+theme.css+ 8+ extension stylesheets (Nitro, Nova, social login) — render-blocking. - 3rd-party: Contentsquare (analytics), Gokwik (checkout), Loox/Yotpo (reviews), Klaviyo (CRM), Nova (currency) — all on the critical path.
2. Accessibility Audit
2.1 Critical Issues
- None blocking.
<html lang="en">present,<meta name="viewport">present, skip-to-content link present, HTTPS enforced.
2.2 High Priority Issues
- Broken heading hierarchy. Homepage has a single
<h1>but only one<h2>; collection pages have zero<h1>(the collection title "New In" is not a heading element at all). Screen readers and Google lose the topical structure. (WCAG A/AA) - Missing/empty
alttext. Homepage: 10 images with noalt+ 24 with emptyalt; PDP: 5 missing + 21 empty. Product/content images with empty alt are lost to screen readers and image search. (WCAG A) - Custom-tailoring form inputs on PDP (SHOULDER, CHEST, etc.) — verify each has an associated
<label>(the snapshot showsLabelTextwrappers; confirm programmatic association).
2.3 Positive Findings
- Logical single
<h1>on homepage and PDP. - Skip link, lang, viewport, HTTPS all correct.
- Color contrast passed in Lighthouse (no contrast failures flagged).
- Touch targets adequately sized (no tap-target failures flagged).
3. SEO Audit
3.1 Technical SEO
| Check | Status | Note |
|---|---|---|
| robots.txt | ✅ | Clean; disallows cart/checkout/account; references Sitemap:; even includes an agents.md/UCP MCP note |
| XML Sitemap | ✅ | Index present; split into products/pages/collections/blogs/agentic-discovery |
| Canonical URLs | ✅ | Self-referencing on homepage and PDP (verified) |
| Indexation | ✅ | No erroneous noindex on key pages |
| URL structure | ✅ | Clean, hyphenated, keyword-rich (/products/the-farshi-salwar-set) |
| HTTPS | ✅ | Enforced; upgrade-insecure-requests in CSP |
| Mobile-friendly | ✅ | Viewport set; responsive theme |
| Variant parameter pollution | ✅ | Collection pages show 0 ?variant= links (100 clean product links) |
3.2 On-Page SEO Issues
| Page | Issue | Severity |
|---|---|---|
| PDP | Meta description is broken — reads literally "Standard Shipping: 6 - 8 Weeks" (pulled from shipping copy), not a product description | 🔴 High |
| Collection | No meta description at all (/collections/new-in → null) | 🔴 High |
| Homepage | Title 83 chars (acceptable) but keyword-led ("Menswear, Womenswear, Jewellery") — fine | 🟢 OK |
| PDP/Hompage | No og:image / twitter:image — social shares render with no preview image | 🔴 Critical (social-discovery brand) |
| All | OG/Twitter tags only partial (title/description present, image absent) | 🟡 High |
For a brand whose discovery is 80%+ Instagram/Reels/social (per business analysis), absent OG images mean every shared product link looks like a bare blue URL — a direct CTR and top-of-funnel leak.
3.3 Schema Markup
Homepage (good): Organization, BreadcrumbList, WebSite all present. Minor: Organization.sameAs contains an empty "" entry.
PDP (defective):
| Field | Found | Problem |
|---|---|---|
@type | ProductGroup | Should also expose a Product with offers; group-only limits rich-result surface |
brand.name | "Womenswear" | Wrong — should be "House Of Masaba" (fragmented entity signal) |
description | "Standard Shipping: 6 - 8 Weeks" | Broken — same source bug as the meta description |
BreadcrumbList[1].name | raw <img ...> HTML | Invalid — the breadcrumb injects an image tag into the name field |
offers | present on variant (price 155000 INR, InStock) | OK on the variant node, but no top-level Product.offers, no aggregateRating, no review |
aggregateRating / Review | absent | Misses star-rating rich results despite Loox/Yotpo being installed |
3.4 Content Quality (E-E-A-T)
- Trust signals present and strong: phone (+91 77380 07478, +91 84529 50459), CIN
U74110MH2014PTC257909, emails, store locator (22 stores), policy pages (privacy/terms/shipping/returns), About Masaba page. - No AI-generated product imagery detected (0 filenames matching Gemini/ChatGPT/Picsart/
_ai/unnamed_1patterns) — real photography is consistent with the "house does not translate" artisan positioning. ✅ - Social proof thin on PDP surface: Loox/Yotpo widgets are present in DOM but review counts/ratings are not surfaced in the initial snapshot and lack
AggregateRatingschema — under-used for a festive, consideration-heavy purchase.
3.5 Internal Linking
- Footer nav, breadcrumbs (visual + schema), and "View All" cross-links are present.
- Blog link present in footer but not prominent in main nav — brand has press/collaboration content that could feed topical authority.
4. International SEO
Not applicable / single-locale. The site is en-IN only. /fr, /ar, /en-us etc. all 404. /pages/singapore and /pages/dubai exist (HTTP 200) but are thin informational landing pages (a hero image + "Shop Online"/"Contact Us" CTAs + shared footer) — not localized storefronts, no currency/locale switch, no hreflang.
Per business analysis, NRI/Singapore/Dubai demand is real but unmet by a localized checkout. Recommendation is a business one (localized storefront + currency), not a technical hreflang fix. No cross-locale canonical risk because there is only one locale.
5. Best Practices & Security
5.1 Security Headers (from curl -sI)
| Header | Value | Assessment |
|---|---|---|
strict-transport-security | max-age=7889238 (~91 days) | 🟡 Weak — below 1 year; missing includeSubDomains and preload |
content-security-policy | block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests; | 🟡 Minimal — no script-src directive, so it provides little XSS mitigation |
x-frame-options | DENY | ✅ |
x-content-type-options | nosniff | ✅ |
x-xss-protection | 1; mode=block | ✅ (legacy, but present) |
x-download-options | noopen | ✅ |
referrer-policy | (not set) | 🟢 Low — add strict-origin-when-cross-origin |
5.2 Modern Standards
- Valid HTML5, UTF-8 declared, no mixed content.
- Lighthouse Best Practices 54/100 — driven by "Uses deprecated APIs" (1 warning) and the thin CSP. COOP/COEP not set.
x-permitted-cross-domain-policies: nonepresent.
6. Content Quality Assessment
6.1 Image Quality & Authenticity
- No AI-generated images across sampled pages — authentic studio/lifestyle photography supports the luxury-artisan brand. ✅
- Alt-text coverage is the gap (see §2.2), not image authenticity.
6.2 UX Issues
- Custom-tailoring PDP requires 11 manual body measurements with no visible delivery ETA beyond "6–8 Weeks" — high friction for a ₹155k made-to-order piece. Consider an explainer/trust module.
- Singapore/Dubai landing pages are dead-ends (no localized cart) — NRI demand leaks.
- Hero is a background-image slider — cannot be preloaded/optimized (see §1.4).
7. Priority Recommendations
🔴 Immediate (This Week)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 1 | Fix PDP meta description source (stop injecting "Standard Shipping: 6–8 Weeks") | Organic CTR, snippet quality | Low (theme liquid fix) |
| 2 | Add og:image + twitter:image to homepage, PDP, collection templates | Social share CTR (brand is 80%+ social-discovered) | Low (theme liquid) |
| 3 | Add meta descriptions to collection pages (bulk) | SERP CTR on 264 collections | Low |
| 4 | Fix ProductGroup.brand.name → "House Of Masaba"; fix description in schema | Entity signal, rich results | Low |
| 5 | Fix BreadcrumbList name field (strip raw <img> HTML) | Valid structured data | Low |
🟡 Short-Term (This Month)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 6 | Convert hero from CSS background to <img fetchpriority="high"> + preload; serve AVIF/WebP srcset | Mobile LCP 7.7 s → target < 2.5 s | High (theme rebuild of hero) |
| 7 | Defer/async non-critical third-party JS (Contentsquare, Yotpo, Loox, Klaviyo, Nitro, Nova, social login) | TBT 1,790 ms → target < 200 ms | Medium |
| 8 | Add AggregateRating/Review schema from Loox/Yotpo | Star-rating rich results | Medium |
| 9 | Add h1 to collection pages; add <h2> section headings site-wide | Heading hierarchy, topical clarity | Low |
| 10 | Add includeSubDomains; preload to HSTS; add script-src to CSP; add referrer-policy | Security posture | Low |
| 11 | Fix empty-alt / missing-alt images (bulk alt-text program) | Accessibility + image search | Medium |
🟢 Long-Term (This Quarter)
| # | Issue | Impact | Effort |
|---|---|---|---|
| 12 | Watch mobile INP (196→203 ms) and LCP (2.4→2.5 s) as festive traffic ramps; add RUM alerting | Prevent field CWV regression | Medium |
| 13 | Build a true localized storefront (Singapore/Dubai) with currency + checkout, or remove dead-end landing pages | Capture NRI demand | High |
| 14 | Trim preconnect list to 2–3; reduce 3,057-element DOM on homepage | Marginal perf | Low |
| 15 | Surface review counts/ratings on PDP above the fold | Conversion (consideration-heavy) | Medium |
Summary Score Card
| Category | Score | Grade |
|---|---|---|
| Performance (Mobile) | 30/100 | 🔴 |
| Performance (Desktop) | 52/100 | 🟡 |
| Accessibility | 82/100 | 🟢 |
| Best Practices | 54/100 | 🟡 |
| SEO | 92/100 | 🟢 |
| Content Quality | ~80/100 (authentic imagery, strong trust signals; thin PDP social proof) | 🟢 |
| UX | ~70/100 (hero perf, made-to-order friction, dead-end intl pages) | 🟡 |
| Overall | ~70/100 | 🟡 |
Bottom line: The site is well-built for today's traffic (field CWV passing on both devices) but is one festive-season spike away from mobile regression, and its product/collection-layer SEO and schema are actively broken — broken PDP descriptions, zero social-share images, wrong brand name in schema, invalid breadcrumbs. Fix the red-severity items (social OG images, PDP description, schema brand/description) this week — they are low-effort, high-visibility wins for a social-led luxury brand — and schedule the hero/preload + third-party-JS deferral work before the festive peak.
Sources & Evidence
- CrUX Vis (origin
https://www.houseofmasaba.com, 2026-08-15): phone LCP 2,385 ms / INP 196 ms / CLS 0.01; desktop LCP 1,752 ms / INP 85 ms / CLS 0.06; 40-week trend series extracted fromgraphics-symbolaria-labels. - PageSpeed Insights UI (https://pagespeed.web.dev, 2026-08-18): mobile lab Performance 30 (FCP 4.9 s, LCP 7.7 s, TBT 1,790 ms, SI 17.8 s, CLS 0); desktop Performance 52 (FCP 1.2 s, LCP 1.5 s, TBT 2,050 ms, SI 7.7 s, CLS 0); Accessibility 82; Best Practices 54; SEO 92; mobile per-URL field assessment "Failed" (INP p75 ≈ 203 ms, LCP p75 ≈ 2.5 s).
- Live DOM inspection (browser_console) on
/,/products/the-farshi-salwar-set,/collections/new-in,/pages/singapore: script/style/image/heading/alt counts, OG/Twitter tags, JSON-LD types and field values, lang/viewport/canonical. curl -sI https://www.houseofmasaba.com/andcurl -s robots.txt/sitemap.xml: security headers, robots directives, sitemap index.curllocale checks:/pages/singapore200,/pages/dubai200,/fr/ar/en-us/enetc. 404.- Business context:
business-analysis.md(mobile 84% / desktop 11.9% / tablet 4%; FY25 ₹116 cr; 898 SKUs; 22 stores; social-led discovery).