---
title: "Discussion on \"Prerendering a Vite + React SPA with Playwright so crawlers and AI agents see real HTML\" | Hashnode"
description: "Discussion on \"Prerendering a Vite + React SPA with Playwright so crawlers and AI agents see real HTML\". No framework migration, one build script, and a meta-tag gate that fails the build"
url: "https://hashnode.com/posts/prerendering-a-vite-react-spa-with-playwright-so-crawlers-and-ai-agents-see-real-html/6abdf8449c9c4d86651e41cf"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [Prerendering a Vite + React SPA with Playwright so crawlers and AI agents see real HTML](https://aishayy.hashnode.dev/prerendering-a-vite-react-spa-with-playwright-so-crawlers-and-ai-agents-see-real-html?utm_source=hashnode&utm_medium=feed)

No framework migration, one build script, and a meta-tag gate that fails the build

Oct 1 · 4 min read · aishayy.hashnode.dev  
Read the article

-   [#react](https://hashnode.com/tag/react)
-   [#vite](https://hashnode.com/tag/vite)
-   [#seo](https://hashnode.com/tag/seo)
-   [#playwright](https://hashnode.com/tag/playwright)
-   [#javascript](https://hashnode.com/tag/javascript)

## Written by

[Ayesha Iftikhar](https://hashnode.com/@seayeshaiftikhar)

@seayeshaiftikhar

  
[View profile](https://hashnode.com/@seayeshaiftikhar)

Software Engineer

## Responses 2

Markdown supported · ⌘↵ to post

[Jonas](https://hashnode.com/@jonasb)

[Oct 8](https://hashnode.com/posts/prerendering-a-vite-react-spa-with-playwright-so-crawlers-and-ai-agents-see-real-html/6abdf8449c9c4d86651e41cf/comment/6ac7446c3aa386bcb6090555)

I’d extend check-meta to check the body too: the expected H1, a route-specific paragraph and the main links. The JSON-LD element can appear before async content has finished loading, so it’s possible to save a snapshot with a complete head and a loading state in the body.

If the page has async content, I’d wait for a signal from that content before saving it, then check the deployed URL as well as the file in dist.

I’m building Prerender Buddy, so this is close to what I work on. The check that matters here is what the URL actually returns.

[indiainfranotes](https://hashnode.com/@indiainfranotes)

[Oct 1](https://hashnode.com/posts/prerendering-a-vite-react-spa-with-playwright-so-crawlers-and-ai-agents-see-real-html/6abdf8449c9c4d86651e41cf/comment/6abdfa13b59bd6d1e1c2d5ac)

Settlement green closes the demo. Audit still wants a tip that survives the vendor UI flip.

Curious which India DPI stack keeps that tip queryable without a second shadow ledger.

marker1001h1128
