I Scanned 5 Popular JavaScript Sites for SEO Issues — Here's What I Found
Source: Dev.to
Overview
I scanned five well‑known JavaScript‑heavy sites—react.dev, vercel.com, stripe.com/docs, linear.app, and shopify.com—running 19 SEO health checks across 10 pages each. Every site had issues; some had many.
Site Scores
| Site | Score | Quick Take |
|---|---|---|
| react.dev | 74/100 | Best of the group; strong internal linking, all pages indexable, proper canonicals and OG tags. |
| vercel.com | 71/100 | Solid overall but sloppy on details (missing meta description, canonical, H1 on some pages; 9 orphan pages). |
| stripe.com/docs | 60/100 | Fundamentals nailed (titles, meta descriptions, H1s, canonicals, OG tags) but zero structured data, many missing alt texts, slow load times, and API failures. |
| linear.app | 57/100 | Heavy SPA; many orphaned pages, missing structured data, alt text, and occasional JS errors. |
| shopify.com | 39/100 | Largest gaps; many orphaned pages, missing H1s, no structured data, and frequent API failures. |
Detailed Findings
react.dev
- Internal linking: 3.5 average links per page, zero orphan pages.
- Indexability: All pages indexable.
- Meta & OG: Proper canonicals and Open Graph tags.
- Weak spots: No structured data on any page, meta descriptions too short on 9/10 pages, a JavaScript file failed to load on
/versions.
vercel.com
- SSR: All pages indexable, good content depth, OG tags present.
- Missing details:
- No meta description on
/abuse. - No canonical on
/academy. - No H1 on a subpage.
- 9 orphan pages out of 10 scanned.
- No meta description on
- Internal linking: 0 average links per page in the scanned set.
stripe.com/docs
- Fundamentals: Titles, meta descriptions, H1s, canonicals, OG tags all present; zero orphan pages.
- Weak spots:
- No structured data on any page.
- 7/10 pages missing image alt text.
- 8/10 pages load > 3 seconds.
- API requests failed on every page (potentially hiding content from crawlers).
linear.app
- SPA issues:
- 0.5 average internal links per page.
- 4 orphan pages out of 10.
- JS console errors on 2 pages, failed API requests on 2 more.
- Missing structured data and alt text similar to other sites.
shopify.com
- Locale crawl: The crawler landed on Dutch locale pages, exposing issues missed on the English site.
- Problems:
- 8/10 pages orphaned.
- Failed API requests on 7/10 pages.
- Missing H1s on 2 pages.
- No structured data on 8/10 pages.
Common Issues Across Sites
| Issue | Frequency |
|---|---|
| Structured data (Schema.org) | 4 out of 5 sites had zero markup on every scanned page. |
| Meta descriptions | Often short, generic, or missing; directly affect click‑through rates. |
| Image alt text | Consistently missing on many pages; easy 2‑minute fix per image. |
| Internal linking | Weak on SPAs (Linear, Shopify); server‑rendered sites performed better. |
| Page speed | Most pages > 3 seconds to load; JavaScript‑heavy sites struggle here. |
| API failures | Present on several pages, potentially hiding content from crawlers. |
AI Crawlers vs. Googlebot
- The scores reflect what Googlebot sees after JavaScript rendering.
- AI crawlers (e.g., from ChatGPT, Perplexity) do not render JS and only see raw HTML, making client‑side rendered content invisible to them.
Recommendations
- Add structured data – 20–30 minutes per page type; high ROI for rich snippets.
- Write proper meta descriptions – 150–160 characters, unique per page.
- Add alt text to every image – ~2 minutes per image; improves accessibility and SEO.
- Fix internal linking – Ensure each important page has 2–3 real
<a>links (avoid JS click handlers). - Use Server‑Side Rendering (SSR) for critical pages – Helps both Googlebot and AI crawlers.
- Improve page speed – Optimize JavaScript, leverage caching, and compress assets to get below 3 seconds.
Tool Mention
I built JSVisible to automate these checks. It renders pages as both a user and Googlebot, compares the results, and highlights discrepancies. A free tier is available if you’d like to try it on your own site.
Note
These scans covered 10 pages per site—a snapshot, not a full audit. The patterns observed are consistent and can be verified by inspecting the raw HTML (right‑click → View Page Source) on any of the examined sites.