npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jsvisible/is-ssr

v1.0.3

Published

Check if a webpage is server-side rendered or client-side rendered. See what Googlebot and AI crawlers actually see.

Readme

@jsvisible/is-ssr

Check if a webpage is server-side rendered (SSR) or client-side rendered (CSR). See exactly what Googlebot and AI crawlers see on first visit — before any JavaScript executes.

Zero dependencies. Pure Node.js.

Why this matters

When Googlebot visits your page, it first sees only the raw HTML — before JavaScript runs. If your content isn't in that initial HTML, it goes into a rendering queue that can take hours or days.

AI crawlers (ChatGPT, Perplexity, Claude) are worse — they never render JavaScript. They only see raw HTML. If your React/Vue/Angular app is client-side rendered, you're invisible to AI search.

This tool shows you exactly what crawlers see.

Usage

npx @jsvisible/is-ssr https://react.dev

Check multiple URLs:

npx @jsvisible/is-ssr https://react.dev https://linear.app https://vercel.com

JSON output (for CI/CD pipelines):

npx @jsvisible/is-ssr https://example.com --json

What it checks

| Check | Why it matters | |-------|---------------| | Title tag | First thing Google shows in search results | | Meta description | Controls the snippet text in search results | | H1 heading | Tells crawlers what the page is about | | Content word count | Pages with <100 words in raw HTML are likely CSR | | Canonical URL | Prevents duplicate content issues | | Open Graph tags | Controls social media previews | | Structured data | Enables rich snippets in search results |

Example output

  https://react.dev
  ────────────────────────────────────────────────────────────
  ✅ Server-side rendered — content is in the initial HTML
  Score: 6/7

  ✓ Title tag: React
  ✓ Meta description: React is the library for web and nativ...
  ✓ H1 heading: React
  ✓ Content in HTML: 847 words
  ✓ Canonical URL: https://react.dev/
  ✓ Open Graph tags: Present
  ✗ Structured data: Missing

  Links: 45 | Images: 12 (2 missing alt) | Scripts: 8
  Detected: React, Next.js

  ⚠ No structured data (Schema.org) found
  https://linear.app
  ────────────────────────────────────────────────────────────
  ❌ Client-side rendered — minimal content in initial HTML
  Score: 2/7

  ✓ Title tag: Linear — Plan and build products
  ✗ Meta description: Missing
  ✗ H1 heading: Missing
  ✗ Content in HTML: 23 words (very thin)
  ✗ Canonical URL: Missing
  ✗ Open Graph tags: Missing
  ✗ Structured data: Missing

  Links: 2 | Images: 0 (0 missing alt) | Scripts: 4
  Detected: React

  ⚠ Googlebot may delay indexing this page (rendering queue)
  ⚠ AI crawlers (ChatGPT, Perplexity) cannot see JS-rendered content

Verdicts

  • ✅ SSR (Server-side rendered) — Content is in the initial HTML. Crawlers see your page immediately.
  • ⚠️ Partial — Some content exists in HTML but key elements are missing. Crawlers get an incomplete picture.
  • ❌ CSR (Client-side rendered) — Minimal or no content in the initial HTML. Crawlers depend on JavaScript rendering.

Framework detection

Automatically detects: React, Next.js, Vue, Nuxt.js, Angular, Svelte, Gatsby, Astro.

Use in CI/CD

Add a rendering check to your deployment pipeline:

npx @jsvisible/is-ssr https://yoursite.com --json | node -e "
  const data = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
  if (data[0].status === 'csr') {
    console.error('Page is client-side rendered — SEO risk');
    process.exit(1);
  }
"

Full SEO audit

This tool checks a single page's raw HTML. For a comprehensive multi-page audit that:

  • Crawls your entire site (up to 500 pages)
  • Renders each page as both a user and Googlebot
  • Compares screenshots side by side
  • Runs 36+ SEO checks per page
  • Detects orphan pages and internal linking issues
  • Generates PDF reports with fix instructions

Check out JSVisible — free tier available, no credit card required.

License

MIT