Integrations/Lovable, Bolt, v0 & React SPAsApp builder

SEO for Lovable, Bolt, v0 & React SPA apps

Apps generated by Lovable, Bolt, Replit and Vite + React look finished in a browser, yet ship <div id="root"></div> with zero words in the raw HTML, identical <title> tags on every route, and 200 OK soft-404s. AI crawlers (GPTBot, ClaudeBot, PerplexityBot) do not execute JavaScript, so they see a blank page.

1. Add all 16 skills to your repositorynpx skills add subinternal/clickd
2. Ask your agentRun clickd_check (kind: "agent") and clickd_brief on our deployed app, show why crawlers see an empty #root shell, add build-time prerendering and per-route metadata, and rescan.

For founders and developers shipping Vite, React SPA, Lovable, Bolt, v0 or Replit apps.Connect MCPRead as .md

What breaks most often on Lovable, Bolt & SPAs

What clickd catches when it fetches the live URL the way Googlebot and AI crawlers do.

See the rulebook
  • Empty <div id="root"></div> HTML shellClient-only Vite + React SPAs send zero words before JavaScript runs, making every route unreadable to non-JS AI crawlers.content-in-html
  • One static index.html title for every URLUpdating document.title inside React only happens after client JS runs; link previews and non-JS bots see the default Vite + React or home title everywhere.title
  • SPA catch-all soft 404s & missing sitemapRewriting /* -> /index.html returns HTTP 200 on nonexistent URLs and ships without robots.txt, sitemap.xml or /llms.txt.sitemap

The Lovable, Bolt & SPAs agentic SEO loop

Four steps your agent runs between your codebase and clickd’s live crawler.

  1. 01Prove the blank-HTML bug

    Run clickd_check (kind: "agent") on your live URL so you and your agent see the exact empty HTML shell AI crawlers receive.

    clickd_check
  2. 02Prerender or SSR public routes

    Add static route prerendering at build time (or migrate public marketing routes to Next.js / Astro / React Router SSR) so HTML contains every heading and paragraph.

    technical-seo
  3. 03Emit per-route <head> & JSON-LD

    Render unique <title>, <meta name="description">, <link rel="canonical">, Open Graph tags and JSON-LD into each prerendered route’s <head>.

    schema-markup
  4. 04Add sitemap.xml, robots.txt & rescan

    Generate public/sitemap.xml, public/robots.txt and public/llms.txt at build time, deploy, and run clickd_rescan to confirm a passing score.

    clickd_rescan

Worked pattern

clickd_check (kind: "agent") compares raw HTTP HTML against your intended page copy.

What non-JS AI crawlers read before and after prerendering

Sample
&lt;!-- BEFORE: Default Vite / Lovable / Bolt SPA response --&gt;
&lt;body&gt;
  &lt;div id=&quot;root&quot;&gt;&lt;/div&gt;
  &lt;script type=&quot;module&quot; src=&quot;/src/main.tsx&quot;&gt;&lt;/script&gt;
&lt;/body&gt;

&lt;!-- AFTER: Prerendered / SSR marketing route --&gt;
&lt;body&gt;
  &lt;main&gt;
    &lt;h1&gt;Automated invoice reconciliation for construction&lt;/h1&gt;
    &lt;p&gt;Match supplier invoices against quoted unit prices in 30 seconds...&lt;/p&gt;
  &lt;/main&gt;
&lt;/body&gt;

Prompts to run on Lovable, Bolt & SPAs

Copy any prompt into Claude Code, OpenAI Codex, Cursor or Windsurf.

  • Diagnose invisible Lovable / Bolt siteRun clickd_check (kind: "agent") and clickd_brief on example.com, list every route returning an empty #root shell, and add build-time prerendering for our public pages.
  • Fix link previews & per-page titlesEnsure every public route outputs its own static <title>, meta description, canonical and og:image in raw HTML before JavaScript runs, then test live with clickd.
  • Add sitemap, robots.txt & AI visibilityGenerate sitemap.xml, robots.txt (allowing OAI-SearchBot, ClaudeBot and PerplexityBot) and llms.txt from our router, deploy, and rescan with clickd.

Skills to pair with Lovable, Bolt & SPAs

Included when you run npx skills add subinternal/clickd.

All 16 skills
  • Technical SEOAudits and fixes crawlability, indexing, robots.txt, XML sitemaps, canonicals, redirect chains, server-rendered HTML and security headers in your site’s codebase, then checks every fix live with clickd.See skill
  • AI visibilityAudits and fixes your site’s visibility in ChatGPT, Claude, Perplexity and Google AI Overviews: AI crawler access, non-JS HTML readability, answer-first passages, entity sameAs schema and live citation tracking.See skill
  • On-page SEORewrites title tags, meta descriptions, single H1s, question headings, answer-first openings, image alt text and AI writing tells in your site’s templates and content files, checked live with clickd.See skill
  • Schema markupGenerates, wires and validates JSON-LD structured data (Organization, LocalBusiness, Product, Service, Article, FAQPage and BreadcrumbList) from the visible facts on your pages, checked live with clickd.See skill

Questions about Lovable, Bolt, v0 & React SPAs & clickd

Can Google index a client-rendered React SPA without prerendering?
Googlebot eventually renders JavaScript in a second wave, though client-only SPAs suffer delayed indexing, missed meta tags on link previews, and soft-404 bugs. Worse, major AI assistants (GPTBot, ClaudeBot, PerplexityBot) do not run client JavaScript at all, so an unprerendered SPA is invisible to AI search.
Do we need to rewrite our entire authenticated dashboard to fix SEO?
No. Keep your signed-in app (/app/* or app.example.com) as a client SPA, and prerender or server-render only your public marketing, pricing, docs and guide routes (/, /pricing, /guides/*).

Other integrations & stacks

All integrations
  • Google Search ConsoleTeams who want their coding agent driven by real Search Console impressions instead of guessed keyword volume.Data source
  • Next.jsTeams shipping on Next.js App Router or Pages Router with Claude Code, Codex or Cursor.Web framework
  • AstroTeams running marketing sites, docs and content hubs on Astro.Web framework
  • ShopifyShopify and Shopify Plus stores on Liquid themes or Hydrogen headless storefronts.Storefront & CMS
  • WordPressTeams managing custom WordPress block/classic themes, WooCommerce stores or headless WordPress.Storefront & CMS
  • WebflowMarketing and design teams running Webflow CMS sites alongside an AI assistant.Storefront & CMS
  • SvelteKitEngineering teams building web apps and marketing sites on SvelteKit and Svelte 5.Web framework