Web Quality Audit: Vieroots (vieroots.com)

Website: https://vieroots.com | Date: 2026-09-07 | Platform: Shopify (custom "vm-custom" theme, id 147507216520) | Industry: Personalized nutrition / biohacking D2C (India) Audience context (from business-analysis.md): 96.2% phone / 3.8% desktop / 0% tablet. Mobile is the entire business — audit优先级 is mobile-first.


Executive Summary

Vieroots is a technically sound Shopify store on Cloudflare with clean security defaults, a well-formed sitemap/robots.txt, complete OG tags on most pages, and Product + Organization structured data on product pages. Its desktop experience is healthy (CrUX: all three Core Web Vitals Good; Core Web Vitals Assessment "Passed"). The problem is mobile, which is 96% of the traffic:

  • Mobile Core Web Vitals Assessment: Needs Improvement — both LCP (3,277 ms field / 9.8 s lab) and INP (281 ms field / 1,030 ms TBT lab) fail the "Good" threshold, though CLS is perfect (0.00).
  • Mobile Lighthouse Performance: 37/100 (🔴 Critically poor) — driven by render-blocking requests (1,730 ms estimated savings), a 6,254-element DOM, and unoptimized images.
  • SEO (92) and on-page fundamentals (title, meta description, canonical, viewport, lang) are in good shape. Accessibility (86) and Best Practices (69) are mid-pack with fixable gaps (multiple H1s, missing alt text on a large share of images, no script-src in CSP, duplicate/auto-generated collections).

For a 96%-mobile wellness brand where first impression = trust = conversion, the mobile performance deficit is the single highest-ROI fix here. It is also a direct ranking signal under mobile-first indexing.

CategoryMobile ScoreDesktop ScoreGrade
Performance (Lighthouse lab)37Unavailable¹🔴
Performance (CrUX field)Needs ImprovementPassing🟡
Accessibility8686🟡
Best Practices6969🟡
SEO9292🟢
Overall37 (mobile perf drags composite)🔴

¹ Desktop Lighthouse lab run could not be captured: Google PageSpeed Insights returned RPC::DEADLINE_EXCEEDED on three consecutive desktop-lab attempts (a PSI backend error, not a property of the site). Desktop field CrUX data was obtained successfully and is reported below.


1. Performance Audit

1.1 CrUX Real-World Field Data

Core Web Vitals Assessment:

  • Mobile (phone): Needs Improvement. LCP and INP are each in the "Needs Improvement" band; CLS is Good. (Source: CrUX Vis, origin https://vieroots.com, latest period 2026-08-02 → 2026-08-29.)
  • Desktop: Passing. All three metrics meet the "Good" threshold.
MetricPhone (latest)Phone ThresholdPhone RatingDesktop (latest)Desktop Rating
LCP3,277 ms≤2,500 Good / >4,000 Poor🟡 Needs Improvement1,648 ms🟢 Good
INP281 ms≤200 Good / >500 Poor🟡 Needs Improvement108 ms🟢 Good
CLS0.00≤0.10 Good🟢 Good0.00🟢 Good

Mobile LCP trend (8-week): 2,644 → 3,501 → 3,277 ms. After dipping to ~2.6 s in May–June 2026, LCP has regressed to ~3.3 s and is now firmly in "Needs Improvement," trending toward the 4,000 ms "Poor" line. This aligns with the business-analysis note that mobile share rose from ~81% (Nov 2025) to ~96% (Aug 2026) — the audience that is growing is the one experiencing the worst performance.

Desktop LCP trend: Improved steadily from ~3.2 s (Jan 2026) to ~1.6 s (Aug 2026) — desktop is genuinely well-optimized.

1.2 Core Web Vitals (Lighthouse Lab Data — Mobile)

MetricMobile Lab ValueRatingThreshold
FCP3.3 s🔴 Poor≤1.8 Good
LCP9.8 s🔴 Poor≤2.5 Good
TBT1,030 ms🔴 Poor≤200 Good
CLS0🟢 Good≤0.10 Good
SI11.1 s🔴 Poor≤3.4 Good
Lab LCP (9.8 s) is far worse than field LCP (3.3 s). Lab runs on emulated Moto G Power / Slow 4G (a deliberately harsh envelope), but a ~3× gap signals heavy main-thread/network work that real users on mid-range Indian Android devices (the actual 96% audience) feel acutely. The field "Needs Improvement" is the conservative real-world number; the lab "Poor" is the stress-case warning.

1.3 LCP Phase Breakdown (Mobile, inferred)

Lighthouse "Diagnose performance issues" marked Render-blocking requests with 1,730 ms estimated savings as the top insight. Combined with a 6,254-element DOM, 261 stylesheets, and 108 scripts on the homepage, the dominant pattern is pre-resource delay — the browser is blocked discovering/rendering the LCP element (hero slideshow) by render-blocking CSS/JS before any hero asset even starts. This is the classic JS-rendered Shopify theme bottleneck.

1.4 Performance Issues by Impact

ImpactIssueEvidenceEst. SavingsRecommendation
CriticalRender-blocking CSS/JS261 stylesheets + 108 scripts; Lighthouse flags 1,730 ms savings~1.7 sInline critical above-the-fold CSS; defer/async non-critical JS; drop unused theme CSS (Swiper + Slick carousels both loaded = ~2 carousel libs)
CriticalOversized/uncached hero & product imagery"Improve image delivery" = 519 KiB; "Cache lifetimes" = 211 KiB~730 KiBServe WebP/AVIF with srcset; set long cache on CDN assets; ensure hero is not loading="lazy"
HighThird-party script bloat / duplicate JSLighthouse flags duplicated JavaScript (26 KiB) + >4 preconnect warning (11 preconnect hints in 103 Early Hints)100–300 msCollapse redundant preconnects to 2–3 highest-value origins; remove duplicate slider libs
HighForced reflow from JS DOM manipulationLighthouse "Forced reflow" flagged~50–150 msBatch DOM writes; avoid layout-thrashing loops in theme JS
MediumLarge DOM size (6,254 elements on homepage)Browser DOM countTBT contributorTrim inline SVG/sections; lazy-render below-fold sections

1.5 Resource Transfer Summary (homepage, rendered DOM)

  • Images: 388 <img> (15 missing alt, 64 alt="") — see Accessibility.
  • Stylesheets: 261 <link rel=stylesheet> (most from Shopify/CDN; many likely unused theme CSS).
  • Scripts: 108 <script>.
  • Third-party: Cloudflare, Shopify CDN, jQuery 3.6, Swiper 9, Slick 1.8, jsDelivr — carousels are doubled (Swiper + Slick), a clear redundancy to remove.

2. Accessibility Audit

2.1 Critical Issues

  • None blocking (no missing <html lang>, no missing viewport, no missing <title>). Baseline WCAG A fundamentals are present.

2.2 High Priority Issues

  • Multiple H1s.
    • Homepage: 5 <h1> (incl. 2 inside hidden login/reset-password modals, plus the "Vieroots" logo H1). Visible page should have one semantic H1.
    • PDP (/products/curcumin-latte): 3 <h1> — "Backed By Science. Proven Results," "Transform Your Health Routine With Curcumin Latte," and "The Lives We've Optimized." The product name itself is only an <h2>. This dilutes the primary-keyword H1 and is the likely cause of the Accessibility score sitting at 86 rather than 95+.
    • Fix: One visible H1 per page containing the primary keyword (product name on PDP, collection name on collection, brand+keyword on home). Move auth-modal headings out of the live DOM or mark aria-hidden.
  • Missing alt text on a large share of images.
    • Homepage: 15 images with no alt, 64 with empty alt.
    • PDP: 35 with no alt, 19 empty (out of 61 total). Most are decorative benefit icons (acceptable as alt="") but the 35 missing-alt product/lifestyle images are lost to screen readers and Google Images.
    • Fix: Bulk-fill alt on all content/product images via theme Liquid (use product title + variant).

2.3 Positive Findings

  • <html lang="en"> ✓, <meta name="viewport"> ✓, <title> present and well-formed ✓.
  • "Skip to content" link present ✓.
  • Visible rating stars + review counts on PDP ✓.
  • Color contrast adequate (no contrast failures surfaced by Lighthouse).

3. SEO Audit

3.1 Technical SEO

CheckStatusDetail
robots.txt🟢Well-formed; declares Sitemap:; correctly disallows /cart, /checkout, /account, AJAX surfaces. Also exposes a modern UCP/MCP agent endpoint — fine.
XML Sitemap🟢sitemap.xml index links product/collection/page/blog sub-sitemaps. All return 200.
Canonical URLs🟢Homepage self-canonicals to https://vieroots.com/; PDP and collection pages self-canonical correctly.
Indexation🟢No noindex on key templates observed.
HTTPS🟢Enforced; strict-transport-security present; upgrade-insecure-requests in CSP.
Mobile-friendly🟡Responsive + viewport present, but mobile CWV Needs Improvement (see §1) means Google's mobile-first eval is impacted by speed, not layout.
URL structure🟢Clean, hyphenated, keyword-bearing (/products/curcumin-latte, /collections/immunity).

3.2 On-Page SEO Issues

  • Title tags: ✅ All sampled pages are 50–60 chars with keyword-first + brand. Home: "Personalized Wellness Plan for Physical and Mental Health - Vieroots" (68 chars — slightly long but acceptable). PDP: "Curcumin Latte | Anti Inflammatory Supplement for Wellness | Vieroots" (69). Collection: "Immunity – Vieroots."
  • Meta descriptions: ✅ Present on home, PDP, and collection. ⚠️ Collection meta description is the tagline "Defense Is The Best Offense" rather than a keyword-rich description — thin/non-descriptive. Improve to include "immunity supplements, natural immune support, Vieroots."
  • Open Graph: ✅ Complete on home (og:title/description/image/url/type/site_name + image dims) and PDP (adds og:price:amount + og:price:currency — correct). ⚠️ Missing twitter:image on both home and PDP (only twitter:card, twitter:title, twitter:description present). Social shares on X/Twitter will not render a preview image.
  • Heading structure: ⚠️ Multiple H1s (see §2.2).
  • Internal linking: ✅ Collection→product links clean (no ?variant= pollution observed — 0 variant links on sampled collection). ⚠️ No visible breadcrumb navigation on collection or PDP; no BreadcrumbList schema (see §3.3).

3.3 Schema Markup

TypeHomePDPCollectionNotes
OrganizationPresent on all
WebSite (+SearchAction)Good — enables sitelinks search box
ProductPresent; should verify aggregateRating/review/sku/brand fields populate for rich results
BreadcrumbListMissing everywhere — easy rich-result win
LocalBusinessAbsent. Brand has a real Kochi Biohack Centre + Bengaluru HQ — LocalBusiness/MedicalBusiness would reinforce local/entity trust
ArticleN/A (blog uses separate template; verify on /blogs/news)
ItemListAbsent on collection pages

Key gaps: No BreadcrumbList (navigation + SEO), no LocalBusiness despite physical premises, and PDP Product schema should be verified to include aggregateRating so the 4.6★/35-review stars render as rich results.

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

  • Experience/Expertise: Founder-led authority (Dr. Sajeev Nair, books, "20+ years research," "World Biohack Summit") is strong and on-brand.
  • Authoritativeness: FSSAI-approved claims, press coverage (Financial Express, BusinessWorld, YourStory) — credible.
  • Trustworthiness: ✅ Phone (+91 79077 65165), email (info@vieroots.com), and Kochi HQ address all present in footer; Returns & Exchanges / Privacy / Terms pages linked. ✅ On-site reviews with star ratings. ⚠️ No business registration / GST number shown (minor trust gap for a health-supplement brand).

4. International SEO

Not applicable / no action needed. Site is single-locale (content-language: en-IN, lang="en"), serves India only, no hreflang tags, no /fr/, /de/ locales. No duplicate-locale or cross-locale canonical risk exists. (The business-analysis flagged no confirmed international shipping, consistent with this.)


5. Best Practices & Security

5.1 Security Headers (from curl -sI https://vieroots.com/)

HeaderValueAssessment
HSTS (strict-transport-security)max-age=7889238 (~91 days)🟡 Below recommended. Should be max-age=31536000; includeSubDomains; preload (1 year + subdomains + preload list).
X-Frame-OptionsDENY🟢
X-Content-Type-Optionsnosniff🟢
Content-Security-Policyblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests🟡 No script-src directive — cannot mitigate XSS via allow-listing. Add at minimum script-src 'self' 'unsafe-inline' cdn.shopify.com …. (Note: Shopify themes require 'unsafe-inline', so a strict nonce policy is hard, but a script-src with explicit origins is still stronger than none.)
X-XSS-Protection1; mode=block🟢 (legacy; CSP is the real control)
COOP / COEPabsent🟡 Missing Cross-Origin-Opener-Policy: same-origin
Referrer-Policyabsent🟡 Recommended strict-origin-when-cross-origin

5.2 Modern Standards

  • Valid HTML5, UTF-8 charset, no document.write, no mixed content observed. ✅
  • 103 Early Hints used to push preloads — good intent, but 11 preconnect/preload hints on the homepage exceeds the "≤4 preconnects" guidance and dilutes priority (Lighthouse warns on this). Trim to the 2–3 highest-value origins (Shopify CDN, jsDelivr).

6. Content Quality Assessment

6.1 Image Quality & Authenticity

  • No AI-generated image artifacts detected. Homepage image filenames are Shopify-CDN hashed (<hash>.thumbnail.00…), with none of the Gemini_Generated_Image_, ChatGPT_Image_, ai0_, unnamed_ patterns the skill watches for. For a science-backed wellness brand, real product/lifestyle photography is intact — no brand-authenticity mismatch.
  • Product imagery, benefit icons, and review videos (testimonial carousel with "Play" buttons) are present and on-brand.

6.2 UX Issues

  • No visible breadcrumb navigation on collection or PDP (wayfinding + SEO gap).
  • Catalog hygiene: 46 collection handles exist, including obvious duplicates (immunity + immunity-1; programs + programs-2/3/4; weight-management + weight-management-1) and auto-generated/test handles (tax12, tax18, taxzero, freebie, flash-sale, valentine-s-offer, vitamins-and-supplements-example-products, home-page-precision-nutrition). These inflate the sitemap, split link equity, and create crawl waste. Audit → noindex/merge the test/duplicate collections. (Note: some Shopify auto-collections may already be noindex, but the handles should not be live.)
  • Announcement bar rotates 3 promos (Essential Stack 15% off, Mitocomplex+Sansfat, etc.) — fine, but ensure promo copy stays current.

7. Priority Recommendations

🔴 Immediate (This Week)

#IssueImpactEffort
1Fix mobile render-blocking CSS/JS (inline critical CSS, defer theme JS, drop one of Swiper/Slick)LCP 9.8s→~3s, TBT↓Medium
2Optimize hero + product imagery (WebP/AVIF, srcset, longer CDN cache)~730 KiB saved, LCP↓Medium
3Collapse 11 preconnect hints → 2–3 originsRemoves Lighthouse warning, priority clarityLow
4Add BreadcrumbList schema + visible breadcrumbs (PDP/collection)Rich results + UXMedium

🟡 Short-Term (This Month)

#IssueImpactEffort
5One H1 per page (product name as PDP H1; remove auth-modal H1s)Accessibility 86→95+, keyword clarityLow
6Bulk-fill alt text on content images (35 missing on PDP, 15 on home)A11y + Image SEOMedium
7Add twitter:image to OG/Twitter templateSocial share previews on XLow
8Strengthen CSP with script-src; raise HSTS to 1yr+preload; add COOP + Referrer-PolicySecurity postureLow–Med
9Verify/complete PDP Product schema (aggregateRating, review, sku, brand)Star-rating rich resultsLow
10Add LocalBusiness schema (Kochi Biohack Centre + Bengaluru HQ)Entity/local trustLow

🟢 Long-Term (This Quarter)

#IssueImpactEffort
11Catalog hygiene: merge/redirect duplicate collections; noindex test handles (tax12, freebie, flash-sale, vitamins-and-supplements-example-products)Crawl budget + link equityLow
12Improve collection meta descriptions (currently taglines)SERP CTRLow
13Add ItemList schema to collection pagesRich results for collectionsMedium
14Add business registration / GST number to footer/contact for health-supplement trustTrust signalLow
15Monitor mobile LCP regression (field ~3.3s trending up); consider PWA/app given 96% mobileRetention + perf ceilingHigh

Summary Score Card

CategoryScoreGrade
Performance (Mobile, Lighthouse lab)37/100🔴
Performance (Mobile, CrUX field)Needs Improvement🟡
Performance (Desktop, CrUX field)Passing🟢
Accessibility86/100🟡
Best Practices69/100🟡
SEO92/100🟢
Content Quality (authenticity/trust)Strong🟢
Catalog HygieneWeak (dupes/test handles)🟡
OverallMobile experience is the critical gap🔴

Bottom line: Vieroots is well-built where it's easy (SEO, security basics, schema on PDP, trust signals) and under-performing exactly where it matters most — the 96%-mobile audience's loading speed and interactivity. Closing the mobile performance gap (#1–#3) and the cheap, high-leverage a11y/structured-data wins (#4–#10) is the highest-ROI work available.


Sources & Methodology

  • CrUX field data (phone + desktop): CrUX Vis (chromeuxreport), origin https://vieroots.com, latest period 2026-08-02 → 2026-08-29. Phone CWV: LCP 3,277 ms / INP 281 ms / CLS 0.00 (Needs Improvement). Desktop CWV: LCP 1,648 ms / INP 108 ms / CLS 0.00 (Passing).
  • Lighthouse lab (mobile): PageSpeed Insights UI, report 2026-09-07 09:51 UTC, Lighthouse 13.4.1, emulated Moto G Power / Slow 4G. Scores: Performance 37, Accessibility 86, Best Practices 69, SEO 92. Metrics: FCP 3.3s, LCP 9.8s, TBT 1,030ms, CLS 0, SI 11.1s.
  • Desktop Lighthouse lab: unavailable — PSI returned RPC::DEADLINE_EXCEEDED on three attempts (Google backend error), so desktop lab scores are not reported; desktop field CrUX (above) is used instead.
  • Headers / robots / sitemap: curl -sI https://vieroots.com/, curl -sL robots.txt, curl -sL sitemap.xml and sub-sitemaps (2026-09-07).
  • DOM / SEO / a11y / schema: Live browser inspection (browser_console JS eval) of homepage, /products/curcumin-latte, and /collections/immunity — element counts, alt-text audit, JSON-LD types, OG/Twitter tags, hreflang, canonical, title/meta.
  • Business context: business-analysis.md (same workspace) — 96% mobile audience, single-locale India D2C, physical Kochi Biohack Centre + Bengaluru HQ.
  • Image authenticity: Filename pattern scan of rendered <img> src — no AI-generation markers found.