Overview
This guide helps you understand and fix the most common SEO problem with AI-generated websites: client-side rendering (CSR). If your site built with Lovable, Bolt, or Replit isn't showing up on Google, this guide will show you exactly why—and how to fix it.
What you'll learn:
- Why your AI-built site isn't ranking on Google
- The difference between CSR and SSR
- Which AI tools support server-side rendering
- Step-by-step migration strategies
- How to verify your fixes worked
Time to complete: 2-8 hours (depending on project complexity)
Skill level: Beginner to intermediate (no advanced coding required)
Quick Navigation
Just want to check if you have the problem? Jump to the verification section.
Ready to fix it? Head straight to the migration guide.
Want to understand the technical details? Start with CSR vs SSR explained.
Important Context: SEO is Multifaceted
Before diving into the technical fix, understand that SEO success depends on multiple factors:
- Quality, relevant content
- Strategic keyword usage
- Backlinks from authoritative sites
- Site speed and performance
- Mobile responsiveness
- User experience signals
Do You Even Need a JavaScript Framework?
Before diving into CSR vs SSR debates: If you're building a simple marketing site, blog, portfolio, or landing page, consider whether you need React, Vue, or any JavaScript framework at all.
Pure HTML/CSS sites are:
- ✅ The absolute best for SEO (instant crawling, zero rendering delays)
- ✅ The fastest possible (no JavaScript to download or execute)
- ✅ The simplest to understand and maintain
- ✅ The cheapest to host (any static hosting works)
- ✅ Compatible with every browser and crawler
When pure HTML/CSS makes sense:
- Marketing websites with mostly static content
- Personal portfolios
- Landing pages
- Simple blogs (or use SSG like Hugo, Jekyll, 11ty)
- Documentation sites
When you DO need a framework:
- Complex user interactions (dashboards, apps)
- Real-time data updates
- User authentication and dynamic content
- E-commerce with shopping carts
- Single-page applications (SPAs)
Can AI tools build pure HTML sites? Yes! Bolt and Replit can generate vanilla HTML/CSS/JavaScript if you ask specifically. Just prompt: "Build me a [website] using pure HTML, CSS, and vanilla JavaScript—no frameworks."
The point of this guide: If you're using Lovable, Bolt, or Replit and they defaulted to React (CSR), you now have rendering problems to solve. But the best solution might not be migrating to Next.js (SSR)—it might be simplifying to pure HTML if your site doesn't need framework complexity.
How Serious Is the CSR Problem in 2025?
The short answer: Google CAN crawl and index CSR sites, but SSR still gives you advantages.
What's changed:
- Google now renders JavaScript in ~5 seconds on average (90% of sites within minutes)
- Recent research analyzing 100,000+ Googlebot fetches confirms Google successfully discovers CSR content
- Having an updated sitemap.xml eliminates most time-to-discovery differences between CSR and SSR
The remaining risks with CSR:
- Rendering errors: If your JavaScript breaks or times out, content won't be indexed
- Performance penalties: Slow Core Web Vitals hurt rankings regardless of rendering method
- Two-wave indexing: Google crawls HTML first, then queues JavaScript for later rendering (can delay full indexing)
- Other search engines: Bing, Yandex, and Baidu still struggle with JavaScript-heavy sites
- New sites: Without domain authority, you want every advantage—SSR helps
When SSR is critical:
- ✅ New sites with zero domain authority
- ✅ Competitive niches where every edge matters
- ✅ E-commerce with thousands of product pages
- ✅ International SEO (other search engines matter)
When CSR can work fine:
- ⚠️ Established sites with good sitemaps and clean JavaScript
- ⚠️ Sites primarily targeting Google (90%+ market share)
- ⚠️ Content that changes very rapidly
Bottom line: SSR is still best practice for SEO-critical public sites, but CSR isn't the dealbreaker it once was. Think of SSR as removing friction rather than fixing a broken system.
The Problem: Google Has to Work Harder to See Your Site
Most AI coding tools default to building Single Page Applications (SPAs) using Client-Side Rendering. Here's what each tool typically generates:
| Tool | Default Framework | SSR Support |
|---|---|---|
| Lovable | React + Vite | ❌ None (CSR only) |
| Bolt.new | Varies (often React/Vite) | ✅ Yes (if you specify Next.js/Astro) |
| Replit Agent | Varies (Flask, Next.js, etc.) | ✅ Yes (has Next.js templates) |
These apps create a frustrating paradox:
- To humans: Your site loads perfectly and looks great
- To Google: Your site appears mostly blank
When Google's crawler visits your CSR site, it initially sees mostly empty HTML. While Google will eventually render the JavaScript and index your content (usually within minutes), this two-stage process creates friction and introduces risks. If your JavaScript has errors, times out, or loads slowly, your content might not get indexed at all. It's like making Google work harder to find your party—they'll usually get there, but why make it difficult?
Understanding CSR vs SSR
❌ Client-Side Rendering (CSR)
What most AI tools create by default
✅ Server-Side Rendering (SSR)
What you need for optimal SEO
Why AI Tools Use CSR by Default
This isn't a flaw—these tools are designed for speed and simplicity. CSR makes perfect sense for:
- Internal dashboards
- SaaS tools behind login screens
- Apps where SEO doesn't matter
- Prototypes and MVPs
But for public websites that need Google traffic—blogs, marketing sites, portfolios, e-commerce—CSR is a dealbreaker.
Tool-by-Tool Breakdown
Lovable: CSR Only
Stack: React + Tailwind + Vite (locked)
SSR Support: None
Why: Vite alone (without additional SSR configuration) doesn't support server-side rendering out of the box. When users ask Lovable to implement SSR, it may acknowledge the request but silently ignores it—this is a limitation of the underlying tech stack, not a bug.
Best use cases:
- ✅ Rapid prototyping
- ✅ Internal tools and dashboards
- ✅ Apps behind login screens
- ✅ Learning React/modern web development
- ❌ SEO-critical public websites
For SEO projects: While Google can technically index CSR sites, you'll want to migrate to an SSR framework like Next.js to eliminate indexing friction, improve performance, and maximize your ranking potential.
Bolt.new: Flexible but Defaults to CSR
Stack: Any JavaScript framework that runs on StackBlitz
SSR Support: ✅ Yes, IF you explicitly request SSR-capable frameworks
SSR-capable frameworks:
- Next.js (React-based, most popular)
- Nuxt.js (Vue-based)
- SvelteKit (Svelte-based)
- Remix (React-based)
- Astro (excellent for content sites)
The catch: Bolt is framework-agnostic. If you just say "build me a website," it might default to React + Vite (CSR). You must be specific in your prompts.
Best Practice: Be Explicit
Example prompts:
❌ "Build me a portfolio site"
✅ "Build me a portfolio site using Next.js 14 with the App Router and server-side rendering"
Replit Agent: Framework Flexible
Stack: Multiple frameworks including Next.js, Flask, and others
SSR Support: ✅ Yes, has specific templates and documentation for Next.js
The catch: Like Bolt, you need to specify. Early versions sometimes defaulted to Flask or vanilla JavaScript setups, but this has improved.
How to use it:
- Fork the official Next.js template from Replit's library
- Use Replit Agent to build on top of it
- Be explicit in prompts about Next.js and SSR requirements
Deployment bonus: Replit supports autoscale deployment specifically configured for Next.js SSR apps.
Solution 1: Start Fresh with the Right Framework
If you're just beginning your project, prevent this problem by choosing the right tool and framework from the start.
Starting with Lovable
Option A: Prototype, then migrate
- Build your UI and functionality in Lovable (fast iteration)
- Export the code
- Migrate to Next.js using conversion tools or AI assistance
- Learn more about migrating code between AI tools
Option B: Use a different tool for SEO-critical projects
- Start with Bolt or Replit with explicit Next.js instructions
- Or use V0.dev (Vercel's tool) which generates Next.js code natively
Starting with Bolt or Replit
Key principle: Be explicit about SSR requirements in your initial prompt.
Effective Prompt Template
Create a [blog/portfolio/marketing site] for [your business] with these requirements:
Framework & Rendering:
- Use Next.js 14 with App Router
- Implement server-side rendering for all public pages
- Ensure all content is server-rendered for search engine crawlers
SEO Optimization:
- Include proper meta tags for SEO (title, description, Open Graph tags)
- Generate a sitemap.xml file
- Add structured data (JSON-LD) for search engines
Styling:
- Use Tailwind CSS for styling
Key phrases to include:
- "Use Next.js with App Router"
- "Server-side rendering" or "SSR"
- "SEO optimization"
- "All pages should be server-rendered"
Solution 2: Fix Your Existing CSR App
Already built something with CSR? Here are your migration options, ranked by effectiveness:
Option A: Migrate to Next.js (Most Effective)
Complexity: Moderate
Time investment: 2-8 hours
Best for: All project types
For Lovable Projects
Method 1: AI-Assisted Manual Migration
Steps:
- Export your code from Lovable
- Set up a Next.js 14 project locally or in another environment
- Use Claude or Cursor to help migrate your components
Prompt for Claude/Cursor
I have a React app built with Lovable (using Vite, React Router, and Tailwind)
that uses client-side rendering. I need to migrate it to Next.js 14 with the
App Router for SEO.
Current structure:
- [X] pages using React Router
- Tailwind for styling
- [List your key features/integrations]
Please help me:
1. Set up a Next.js 14 project with the App Router
2. Convert my React Router routes to Next.js file-based routing
3. Add "use client" directives where needed for interactive components
4. Add proper meta tags and SEO optimization for each page
5. Ensure all content is server-rendered
6. Preserve all my existing component functionality
7. Set up proper error handling and loading states
Method 2: Automated Conversion Tools
| Tool | Price | Features |
|---|---|---|
| NextLovable.com | $9-36 | Full conversion, handles 1-20+ pages |
What these tools do:
- Convert
react-routerto Next.js App Router - Add
"use client"directives automatically - Restructure files to
/appdirectory - Prepare app for SSR/SSG
- Export as ZIP or push to GitHub
Bolt-specific tip: Use the "enhance prompt" feature to let Bolt's AI refine your technical specifications.
Replit-specific tip: Start by forking the official Next.js template, then use Replit Agent to build on top of it.
For Bolt or Replit Projects
If your project was built with CSR:
Option 1: Fresh start with proper framework
- Often faster than migrating
- Start new project with explicit Next.js prompt
- Manually move business logic/components
Option 2: Export and migrate
- Use same AI-assisted migration process as Lovable
- Use conversion tools if available
Option 3 (Replit-specific): Fork and move
- Fork the Replit Next.js template
- Manually move components over
- Leverage Replit's deployment features
Option B: Pre-rendering Services (Temporary Workaround)
Complexity: Easy
Time investment: 1-3 hours setup
Best for: Quick SEO fix when full migration isn't immediately possible
How it works:
- Services like Prerender.io generate static HTML versions
- Search engine crawlers get HTML versions
- Real users still get CSR version
Popular services:
- Prerender.io ($20-200+/month)
- Rendertron (open source)
- Puppeteer pre-rendering (DIY)
Limitations:
- ⚠️ Adds monthly costs
- ⚠️ Not as effective as true SSR
- ⚠️ Doesn't solve fundamental architecture issue
- ⚠️ Requires ongoing maintenance
AI implementation prompt
I need to add pre-rendering to my Vite React app for SEO purposes.
Please help me:
1. Set up react-snap or another pre-rendering solution
2. Configure it to pre-render all my routes
3. Ensure the pre-rendered pages include all meta tags
4. Test that search engines can crawl the content
Option C: Static Site Generation (For Content Sites)
What it involves: Generating all pages as static HTML at build time
What is SSG? Instead of rendering pages on-demand (like SSR) or in the browser (like CSR), Static Site Generation pre-builds every page of your site into HTML files during deployment. Think of it like printing a book before anyone asks to read it—all the pages exist as finished HTML files ready to serve instantly. When you update content, you rebuild the site and redeploy the new HTML files.
Best for: Blogs, portfolios, documentation sites, marketing sites with content that doesn't change often
Complexity: Moderate
Time investment: 3-6 hours (can be quicker if using tools such as Claude Code)
Recommended frameworks:
| Framework | Best For | Key Benefit |
|---|---|---|
| Astro | Content-heavy sites | Works with any UI framework |
| Gatsby | React developers | Rich plugin ecosystem |
| Next.js (SSG mode) | React apps | Flexible rendering options |
Benefits:
- SEO-friendly like SSR
- Even faster than SSR (no server processing)
- Can be hosted on simple static hosting (cheaper)
Bolt prompt for Astro
Build me a [blog/portfolio] using Astro with the following features:
- Static site generation for all pages
- Markdown support for blog posts
- Optimized images
- SEO meta tags for all pages
- Automatic sitemap generation
- Fast page loads
Verification: Confirm Your Fix Worked
After implementing SSR, pre-rendering, or SSG, complete this interactive checklist to verify search engines can see your content:
Test 1: View Page Source
Steps to complete:
What to look for:
❌ CSR (Problem)
<div id="root"></div>
<script src="/bundle.js"></script>
<!-- Mostly empty, just JavaScript references -->
✅ SSR/Pre-rendered (Fixed)
<div id="root">
<h1>Your Actual Heading</h1>
<p>Your actual paragraph text appears here...</p>
<!-- All content visible in HTML -->
</div>
Test 2: Google's Rich Results Test
Steps to complete:
Verify you can see:
Test 3: Monitor in Search Console
Track rendering success over time:
Look out for warning signs:
Tool Selection Guide
Choose the right AI coding tool based on your project requirements:
When to Use Lovable
Best for:
- ✅ Rapid prototyping (hours, not days)
- ✅ Internal tools and dashboards
- ✅ Apps behind login screens
- ✅ Learning React and modern web development
- ✅ Testing product ideas quickly
Not suitable for:
- ❌ SEO-critical public websites
- ❌ Production sites that need to rank on Google
- ❌ Content-heavy marketing sites
When to Use Bolt
Best for:
- ✅ Any project where you can specify the framework
- ✅ SEO-friendly sites (when you request Next.js/Astro)
- ✅ Complex full-stack applications
- ✅ Projects requiring specific libraries/frameworks
- ✅ When you need more control than Lovable
Requirements:
- ⚠️ Detailed, specific prompts
- ⚠️ May need iteration to get framework choice right
- ⚠️ Understanding of framework options
When to Use Replit Agent
Best for:
- ✅ Projects with backend requirements
- ✅ Next.js apps (has official templates)
- ✅ Full deployment pipeline needed
- ✅ Database integration (Postgres, etc.)
- ✅ Projects requiring continuous deployment
Considerations:
- ⚠️ Still in early access (occasional errors)
- ⚠️ Smaller community than Bolt
- ⚠️ May default to non-Next.js frameworks if not specified
Action Plan
Follow this decision tree to determine your next steps:
Starting a New Project?
Is SEO critical for this project?
YES → SEO-Critical (blogs, marketing sites, portfolios):
- ✅ Use Bolt or Replit with explicit Next.js prompts
- ✅ Or use V0.dev (generates Next.js by default)
- ❌ Don't use Lovable (not built for this use case)
NO → Internal tools or prototypes:
- ✅ Lovable is perfect (fastest option)
- ✅ Bolt works too (more flexibility)
- ✅ Move fast, don't worry about SSR yet
Have a Lovable App That Needs SEO?
Reality check: You'll need to migrate to Next.js if you want to use SSR
Your migration path:
- Accept the reality: Lovable can't do SSR
- Choose your migration method:
- Automated tools (NextLovable, ViteToNext) for simpler projects
- AI-assisted manual migration for complex projects
- Budget time: 2-8 hours minimum for testing and fixes
- Learn from it: Use this experience to inform future tool choices
Key Takeaways
The Core Issue
CSR vs SSR isn't about one being "better"—it's about using the right rendering method for your specific needs.
For SEO-Dependent Projects
- SSR or SSG is strongly recommended (not technically required, but gives you significant advantages)
- Google can index CSR, but it's slower, riskier, and introduces unnecessary friction
- Choose your tool carefully from the start:
- Lovable: Amazing for prototyping, not for SEO-critical production
- Bolt: Great flexibility IF you're specific in prompts
- Replit: Good SSR support with Next.js templates
- Be explicit about SSR requirements in all prompts
- Verify server-rendering before launching
The Good News
With AI tools like Claude and Cursor, migrating from CSR to SSR is manageable. You don't need to be a Next.js expert—you just need to understand your tools' limitations and know what to ask for.
Read our full guide on migrating between AI tools here
Your creation deserves to be found. Now you're one step closer to making that happen.
Managing Code Across AI Tools
As you move from prototyping in Lovable to production in Next.js, or switch between Bolt and Cursor, keeping track of your code becomes critical. Differ helps vibe coders maintain ownership and understanding of their projects.
Last updated: October 2025
Estimated reading time: 15 minutes
Difficulty level: Beginner to Intermediate