Skip to content
BlackFig

Lovable SEO not working: client-rendered vs server-rendered projects

AntPublished 4 min read

Checked against Lovable's documentation on 10 November 2026.

Quick answer

It depends on when the project was created. Lovable apps from 13 May 2026 use TanStack Start and render every page on the server. Older React and Vite apps render in the browser, and only verified crawlers get pre-rendered copies, which can miss late-loading content. Run the SEO and AI search review, fix metadata per page, and consider upgrading older projects.

On this page
  1. Symptom
  2. Why it happens
  3. The fix
  4. How to prevent it
  5. When to get help

Symptom

You published, connected a domain and waited. Then:

  • Search Console lists your pages as found but not indexed.
  • Every page shows the same title in search results.
  • A link shared in some apps shows a generic preview instead of the page's own title and image.
  • SEO tools you run report a near-empty page.

Search Console's page indexing report uses status labels like these, and they are the clearest sign something is off:

Why it happens

Two stacks, two behaviours. Lovable projects created from 13 May 2026 (22 June 2026 on Enterprise) use TanStack Start. The server renders every request, so every visitor and crawler gets finished HTML. Older projects are React and Vite apps that render in the browser. For those, Lovable pre-renders deployed public pages on request for verified search engines like Google and Bing, AI search crawlers, social preview bots and verified SEO tools. Everyone else gets the regular single-page app.

Pre-rendering has edges. Lovable's docs say content that loads late may be missing from the crawler's copy. Unverified bots and link checkers get the app, not the rendered page, which explains SEO tools reporting near-empty pages. Pre-rendering only applies to deployed public URLs. Unpublished projects and branded workspace URLs never appear in search.

Metadata repeats. The SEO review flags duplicate titles, placeholder text, weak descriptions, and canonical tags pointing at the wrong page, often the homepage. A canonical pointing every page at the homepage tells Google they're all copies of one page, which is exactly what "Duplicate without user-selected canonical" describes.

The sitemap may not exist. Lovable creates robots.txt for every new project but doesn't always create sitemap.xml. Without one, Google has to discover pages by following links.

Search Console isn't set up, or points at the old domain. After changing your custom domain you have to verify the new one again.

The fix

1. Find out which stack you're on

Look in package.json for @tanstack/react-start, or ask Lovable in chat: "What stack is this project on?" Its upgrade docs suggest exactly that question.

2. See what non-verified visitors get

This fetches your page the way an ordinary client does, without Lovable's crawler treatment:

# Title and description as served to a normal client
curl -s https://www.example.com/pricing | grep -iE '<title>|name="description"'
 
# Count the words of visible text in the raw HTML (rough check)
curl -s https://www.example.com/pricing | sed 's/<[^>]*>//g' | wc -w

On a TanStack Start project you should see the page's own title and real content. On an older project you'll likely see the app shell. That's expected, because verified crawlers get the pre-rendered copy instead, but it's also what any unverified tool sees.

3. Run Lovable's SEO and AI search review

Open More, then Analytics, then SEO & AI and run the review. Failing findings come first. Use Try to fix on each one, or Try to fix all, then Scan again. It's free on every plan. It covers metadata, indexing, structured data, social previews, the sitemap and robots.txt. It doesn't fully judge page speed, content quality or backlinks, and its Lighthouse checks were removed, so treat a clean result as a minimum.

4. Give every page its own metadata

On TanStack Start, each route sets its own title, description and canonical link with the head option. For a page whose content comes from the database, read it from the loader:

// src/routes/pricing.tsx
import { createFileRoute } from "@tanstack/react-router";
 
export const Route = createFileRoute("/pricing")({
  head: () => ({
    meta: [
      { title: "Pricing | Acme" },
      { name: "description", content: "Plans for teams of every size, billed monthly or yearly." },
      { property: "og:title", content: "Pricing | Acme" },
    ],
    links: [{ rel: "canonical", href: "https://www.example.com/pricing" }],
  }),
  component: PricingPage,
});

Check the canonical uses your custom domain, not the lovable.app address. On an older React and Vite project, ask Lovable to give each public page a unique title and description, then confirm the review stops flagging duplicates.

5. Upgrade older projects to TanStack Start

If search matters, upgrading is the real fix for an older project. Type / in the project chat and choose Migrate to TanStack Start, or go to Project settings, then General, then Project actions, then Migrate. Lovable asks you to confirm first. It typically uses 10 to 35 credits.

The upgrade carries over titles, descriptions, social tags, analytics scripts and page protection, and leaves the database alone. The risks, from Lovable's own guide: libraries that only work in the browser can break server rendering in ways the checks miss, and installed Progressive Web Apps can hold on to the old version. Before you publish, load every page, including protected ones, and confirm sign-in still works. If it goes wrong, restore the pre-upgrade version from version history. The live site only changes when you publish.

6. Connect Search Console and submit the sitemap

Connect Google Search Console from the Google searches card in the SEO tab, or ask in chat. Lovable adds Google's verification tag to your HTML, so there's no file to upload or DNS to change. Publish your latest changes before submitting the sitemap, because Google reads it from the live site. Check robots.txt has a Sitemap: line pointing at your custom domain.

How to prevent it

  • Connect a custom domain early and use it everywhere, including canonicals and the sitemap.
  • Put the words people search for in the page itself, not only behind a button or a tab that loads later.
  • Rerun the review after big changes, and whenever it shows Out of date.
  • Re-verify Search Console whenever the domain changes.
  • Make sure your Not Found page says so clearly. Google labels pages that show an error but return a success code as a Soft 404.

When to get help

Search problems on Lovable are usually a mix of stack, metadata and content, and the upgrade path has real risks for apps with sign-in or browser-only libraries. This page is part of my guide to fixing a vibe-coded app. Page speed affects search too, so read why your Lovable app is slow, and if you're preparing for launch, launching an AI-built app covers the rest of the list.

For the full Lovable picture, read taking a Lovable app to production. Run the free vibe-code health check for a first read, and if the upgrade or the fixes need hands-on work, a Rescue Sprint covers it at a fixed price agreed after the check.

Sources

The vibe-code rescue checklist, as a PDF

About 40 checks across auth, data, payments, errors, mobile and secrets, on two pages.

You get the PDF now and two short follow-ups over the next week. Reply “stop” and the rest never arrive.

Questions founders ask

Is Lovable good for SEO?

Newer Lovable projects render every page on the server, which is what search engines want. Older React and Vite projects rely on Lovable pre-rendering pages for verified crawlers, which works but can miss content that loads late.

Do I need a pre-rendering service for my Lovable app?

No. Lovable's docs say you don't need a separate pre-rendering service. Older projects get pre-rendered copies for verified crawlers on deployed public URLs.

How much does upgrading a Lovable project to TanStack Start cost?

Lovable's docs say it typically uses 10 to 35 credits depending on project size, on any plan. Your live site doesn't change until you publish the upgraded version.

Does my Lovable app need a sitemap?

Lovable creates a robots.txt for every new project but doesn't always create a sitemap. The SEO and AI search review checks for one and can create or repair it.

Ant

Product designer who builds MVPs, based in Nottingham. 10+ years designing digital products, and the only person at BlackFig. More about me