Your JS app is invisible to search.
Googlebot, ChatGPT, and Claude can't read client-rendered JavaScript. PerfectSearch pre-renders your pages so they can. One line of config.
Works with
import { perfectSearchMiddleware } from '@perfectsearch/middleware'
export const middleware = perfectSearchMiddleware({
apiKey: process.env.PERFECTSEARCH_API_KEY!,
})
export const config = {
matcher: ['/((?!_next|api).*)'],
}Three lines in middleware.ts. Every bot request gets a fully rendered page.
The Problem
87% of your product pages may be invisible
JavaScript-rendered stores look great in browsers — but Googlebot and AI crawlers only see an empty <div>. They can't index what they can't read.
<!-- What Googlebot receives -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Store</title>
<script src="/bundle.js" defer></script>
</head>
<body>
<div id="root">
<!-- empty — JS required to render -->
</div>
<script src="/chunk.abc123.js"></script>
<script src="/vendor.xyz789.js"></script>
</body>
</html><!-- What PerfectSearch serves bots -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>Merino Wool Sweater – $89 | My Store</title>
<meta name="description" content="Premium merino wool,
ethically sourced. Free shipping over $50." />
<script type="application/ld+json">
{ "@type": "Product", "name": "Merino Wool Sweater",
"offers": { "price": 89, "priceCurrency": "USD" } }
</script>
</head>
<body>
<h1>Merino Wool Sweater</h1>
<p>Premium merino wool, ethically sourced.</p>
<span itemprop="price">$89.00</span>
<!-- Full product content — fully indexed -->
</body>
</html>0%
of JS storefronts have bot-visibility gaps
0×
more organic traffic after fixing indexing
<0ms
snapshot serve time from cache
How It Works
Up and running in minutes
Two ways to connect. Either way, bots get a fully rendered page.
Install in one line
Add our middleware to your Next.js project, or point a CNAME at our edge. No code changes to your app.
Middleware path (Next.js, Nuxt)
import { perfectSearch } from '@perfectsearch/middleware'DNS path (any framework)
CNAME mystore.com → mystore.edge.perfectline.ioWe handle the rendering
PerfectSearch detects bot user-agents and serves pre-rendered HTML snapshots in milliseconds. Human traffic passes through untouched.
Watch GSC improve
Googlebot and AI crawlers read your full catalog. GSC coverage errors drop, indexed pages climb. Usually visible within days.
Pricing
Straightforward pricing
14-day free trial on all plans. No credit card required.
Starter
For indie makers and small stores just getting started.
- Up to 5,000 snapshots / mo
- 1 site
- HTML pre-rendering
- GSC integration
- Community support
Growth
For stores growing fast enough to care about uptime and AI crawler coverage.
- Up to 50,000 snapshots / mo
- 5 sites
- HTML + Markdown rendering
- AI crawler support (ChatGPT, Claude)
- Priority crawl queue
- Slack alerts
- Email support
Scale
For high-traffic storefronts that need a guaranteed uptime SLA.
- Unlimited snapshots
- Unlimited sites
- All rendering modes
- 99.9% uptime SLA
- Custom crawl schedules
- Dedicated Slack channel
- Priority support
Built for teams frustrated with Prerender.io pricing and cache staleness. See full plan comparison →
Free Tool
See what bots see on YOUR site
Enter any URL and we'll show you exactly what Googlebot and AI crawlers see — versus the full rendered version. Free, no signup required.