Die KI-gebaute Seite mit React + Vite: schön, aber für Crawler kaum sichtbar
React mit Vite gehört zu den häufigsten Ergebnissen von KI-App-Buildern und Coding-Agents, und standardmäßig entsteht daraus eine client-gerenderte Single-Page-App. Der Server schickt eine HTML-Datei mit einem Titel, einem leeren Root-Element und einem Script; die eigentliche Seite wird im Browser gebaut. Die KI-gebaute Seite mit React + Vite hat also zwei Probleme auf einmal: Sie gleicht sich in Layout und Text anderen generierten Seiten an, und ihr Text ist für alles unsichtbar, was kein JavaScript ausführt, die IntentGrid-Demo eingeschlossen. Repariere das zweite zuerst.
Zuletzt aktualisiert am 2. Oktober 2026.
Warum sich KI-gebaute Seiten mit React + Vite angleichen
Vite ist ein Build-Tool und React eine UI-Bibliothek; keins von beiden hat einen Look. Der Look kommt mit den Voreinstellungen.
- Die übliche Kombination: React, Vite, Tailwind, ein Komponenten-Kit wie shadcn/ui und ein Icon-Set, gewählt, weil Modelle sie am häufigsten zusammen gesehen haben.
- Alles in einem Bundle. Landingpage und App teilen sich einen Komponentenbaum, also wird der Marketingtext als Teil der App geschrieben und geprüft, und in der Praxis heißt das: kaum.
- Text, der für niemanden geschrieben ist, weil es im Briefing um Features ging.
Das lässt sich leicht ändern. Das Rendering-Problem unten entscheidet darüber, ob überhaupt jemand den Text liest.
Was IntentGrid für eine Seite mit React + Vite tut und was nicht
IntentGrid schreibt den sichtbaren Text für jeden Besucher neu: Überschriften, Fließtext, Feature-Beschreibungen und Button-Beschriftungen, je nachdem, wie er gekommen ist. Es passt den Text an, den du schon hast, und Markennamen, Preise, Daten und Zahlen bleiben, wie sie geschrieben sind. Dafür muss dieser Text in dem HTML stehen, das es bekommt.
Deinen Code, dein Bundle und dein Hosting fasst es nicht an, es führt kein JavaScript für dich aus, und es ändert kein Design. Auf einer Seite, deren HTML aus einem leeren Root-Element besteht, gibt es für IntentGrid nichts neu zu schreiben.
Heute ist der funktionierende Teil eine Demo, die eine neu geschriebene Kopie einer öffentlichen URL in einer Sandbox auf intentgrid.ai rendert; die Anpassung auf deiner eigenen Domain ist Early Access und wird pro Seite von Hand eingerichtet. So funktioniert es beschreibt den Mechanismus vollständig.
Standardmäßig im Client gerendert: was im HTML tatsächlich steht
Eine Standard-Vite-React-App liefert für jede Route index.html aus: den Head, den du geschrieben hast, ein leeres Root-Element und ein Modul-Script. Die Demo holt diese Datei und entfernt das Script, bekommt also die Hülle, und die Vorschau kommt fast leer zurück. Jeder Crawler, der kein JavaScript ausführt, darunter viele KI-Crawler, bekommt dieselbe Hülle. Google rendert JavaScript und kann die Seite deshalb meist trotzdem indexieren, mit etwas Verzögerung.
Clientseitiges Routing bringt eine zweite Falle mit. Ein Deep Link wie /pricing funktioniert nur, wenn dein Host jeden Pfad an index.html weitergibt; tut er das nicht, lädt die Seite problemlos, wenn du dich hinklickst, und liefert eine 404, wenn jemand den Link direkt öffnet. Öffne zum Prüfen einen Deep Link in einem privaten Fenster.
Drei Wege, den Text ins HTML zu bringen
Die Marketing-Routen vorab rendern. Ein Pre-Rendering-Schritt beim Build rendert Landing- und Preisseite zu statischem HTML, während die App eine Single-Page-App bleibt. Das ist meist die kleinste Änderung.
Die Landingpage auf eine statische Seite verlegen. Leg die Marketingseiten in ein Static-first-Framework wie Astro oder in reines HTML, und lass die React-App auf einem eigenen Pfad oder einer eigenen Subdomain.
Auf Server-Rendering umsteigen. Ein React-Framework mit Server-Rendering löst das Problem für jede Seite, um den Preis einer Migration. Für eine inhaltsreiche Seite lohnt sich das, für eine einzelne Landingpage selten.
Ein Vorher-Nachher zur Illustration
- Standard, für alle gleich
- Leistungsstarke Bildbearbeitung, direkt in deinem Browser
- Kam aus einem Fotografie-Forum, am Laptop, abends
- Bearbeite RAW-Dateien im Browser, ohne etwas zu installieren
- Hat einen Link in einem geteilten Video angetippt, am Handy
- Korrigier das Licht auf einem Foto mit ein paar Fingertipps, direkt am Handy
Gleiches Layout, gleiche Preise, gleiche Aussagen. Jede Version nutzt nur, was die Originalseite ohnehin sagt: in diesem erfundenen Fall RAW-Unterstützung, keine Installation und Bearbeitung am Handy. Bei einem client-gerenderten Build würde keine dieser Überschriften die Demo erreichen, solange der Text nicht im HTML steht.
Was du zuerst änderst
Der Reihe nach:
- Schreib einen echten Titel und eine echte Meta-Description in index.html. Bei einer client-gerenderten App ist das oft der einzige Text, den Crawler und Linkvorschauen je sehen.
- Bring die Landingpage ins HTML, über einen der drei Wege oben.
- Sorg dafür, dass Deep Links auch beim direkten Öffnen funktionieren, damit geteilte Links auf /pricing oder /docs keine 404 liefern.
- Schreib den Hero selbst neu. Dann lass dein KI-Tool jede andere Überschrift und Button-Beschriftung auflisten, und schreib die neu, die zu jedem beliebigen Produkt gehören könnten.
- Ändere das Theme des Komponenten-Kits, die Schrift und einen Standardabschnitt, damit sich die Seite nicht mehr wie der Starter liest.
Warum jede generierte Seite bei denselben Voreinstellungen landet, steht unter warum vibe-gecodete Websites gleich aussehen.
Fragen zu React + Vite
Warum zeigt die IntentGrid-Demo für meine Seite mit React + Vite eine leere Seite?
Weil eine Standard-Vite-React-App im Client gerendert wird: Das HTML ist eine Hülle mit leerem Root-Element, und die Seite baut ein Script auf. Die Demo entfernt Scripts, sieht also nur die Hülle. Render die Marketing-Routen vorab oder liefere sie als statisches HTML aus, dann kann die Demo den Text lesen, genau wie jeder Crawler.
Kann Google eine client-gerenderte React-App indexieren?
Google rendert JavaScript, also meist ja, auch wenn das Rendering dem Crawling hinterherhinken kann. Viele andere Crawler, darunter viele KI-Crawler und Bots für Linkvorschauen, lesen nur das initiale HTML. Für Seiten, die gefunden und zitiert werden sollen, gehört der Text ins HTML.
Führt IntentGrid mein JavaScript für mich aus?
Nein. Es arbeitet auf dem HTML, das eine Seite ausliefert. Es führt deine App nicht aus und kann eine Seite, in deren HTML kein Text steht, nicht reparieren. Die Lösung dafür ist Pre-Rendering oder Server-Rendering, und die lohnt sich, ob du IntentGrid je nutzt oder nicht.