vibecheck0.3.0
AI readinessaeostructured-data-missingwarning

Missing structured data (JSON-LD) in React

Answer engines and rich-result crawlers pull entities, facts, and answers out of schema.org JSON-LD — an author, a price, a rating, a FAQ. Without it they fall back to guessing from your prose, which is lossy and easy to get wrong. As AI assistants become how people find things, a page with no machine-readable summary is one they’re more likely to skip or misquote.

Symptoms

  • No rich results (FAQ, breadcrumb, product, article) in Google
  • AI assistants summarise the page inaccurately or not at all
  • Google’s Rich Results Test reports "No items detected"
  • Competitors with the same content show richer search snippets

How VibeCheck catches it

In your widget · Problems

warningaeoNo structured data (JSON-LD)

To your coding agent · MCP

agent › get_detected_issues
{ detector: "aeo", issue: "No structured data (JSON-LD)", threshold: "No <script type="application/ld+json"> present on the page" }

The same string in your widget and in your agent’s context — no screenshot, no copy-paste.

Root causes

  • No JSON-LD was ever added to the templates
  • Relying on Open Graph/meta tags alone, which don’t describe entities
  • A CMS or generator that outputs prose but no schema

The fix for React

In React 19 a <script> in your component is hoisted correctly, but for crawlers that don’t run JS you should render it during SSR/prerender. Stringify the object rather than hand-writing JSON.

tsx
const jsonLd = { '@context': 'https://schema.org', '@type': 'Article', headline: title }
return <script type="application/ld+json">{JSON.stringify(jsonLd)}</script>

Steps

  1. Pick the schema.org type that matches the page (Article, Product, FAQPage, …)
  2. Emit a JSON-LD script with @context "https://schema.org" and the key fields
  3. Validate with Google’s Rich Results Test and schema.org validator

See the general, framework-agnostic fix →

FAQ

Which schema.org type should I use?
Match the page: Article/TechArticle/BlogPosting for content, Product for a product, FAQPage for Q&A, Organization/WebSite for the site itself. You can include several types on one page.
Does JSON-LD help with AI answer engines specifically?
Yes. Assistants like ChatGPT, Perplexity, and Google’s AI Overviews extract structured facts far more reliably than prose. Clean JSON-LD makes your page easier to cite accurately.
JSON-LD, Microdata, or RDFa?
Google recommends JSON-LD — it’s a single script block separate from your markup, so it’s the easiest to add and maintain, and it’s what VibeCheck checks for.