agentspeed.

react.dev

scanned 7/25/2026, 6:40:46 PM · cached · refresh in 18h · rubric 2026.07.4
Built with Next.js
robots.txt present: passrobots.txt allows AI agents: passContent-Signal directives: failllms.txt present: passSitemap present: failLink response headers: failCanonical URL: passMCP server card: failOAuth authorization metadata: failOAuth resource metadata: failAPI catalog / OpenAPI: failWeb Bot Auth: failMarkdown negotiation: failText-to-markup ratio: failContent without JavaScript: warnHeading hierarchy: failCookie wall blocks content: passPage title: passMeta description: warnJSON-LD present: failStructured data validates: skipSchema type coverage: failPaywall / login wall: passAgent Skills manifest: failWebMCP actions: failPrimary action reachable: passReachability: passTime to first byte: passFull render time: skipPage weight: pass60/ 100 · D
Needs work

This is how AI agents (not browsers) experience react.dev. The score weights five categories of machine-readability; the ticks on the arc are the 30 individual checks behind it.

✉ Email me this report + alert me when it changes ↓

Top fixes

failSitemap presentDiscoverability

No reachable sitemap.xml. Publish one and reference it in robots.txt.

Fix · Next.js: Add app/sitemap.ts (Next’s sitemap convention) and reference it from robots.txt.

failJSON-LD presentStructured data

No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.

Fix · Next.js: Emit JSON-LD from a Server Component or the Metadata API: a <script type="application/ld+json"> with Organization / Article / Product for the page.

failLink response headersDiscoverability

No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.

Fix: Emit `Link:` headers for canonical, alternate-language, and describedby relations. Agents that fetch HEAD-only or stream-render rely on these.

failText-to-markup ratioReadability

Visible text is 3.1% of HTML weight (8380/272458 bytes). Low. Markup may be crowding out agent-usable text.

Fix: Heavy ad or navigation markup crowds out agent-usable text. Aim for a text-to-DOM ratio above 15%.

warnContent without JavaScriptReadability

Browser pass unavailable; HTML looks like a JS-shell (e.g. #__next / #root). Likely JS-dependent.

Fix · Next.js: Render primary content on the server: use Server Components (App Router) or getServerSideProps/SSG (Pages Router). Avoid fetching above-the-fold content in a client useEffect, since agents don’t run it.

failHeading hierarchyReadability

Heading issues: 2 <h1> tags (expected 1); 1 skipped level(s).

Fix: Use a single H1 and avoid skipping heading levels (H1 → H3).

Don’t lose this report

Get it in your inbox now — and a heads-up whenever react.dev’s agent-readiness score changes. Free, unsubscribe anytime.

Fix it

Generated, ready-to-ship files for the gaps above — copy them or download and drop them into your repo.

Add JSON-LD structured data
Paste inside <head>. Use Article/Product instead of Organization on those page types.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "React",
  "url": "https://react.dev/",
  "description": "React is the library for web and native user interfaces. Build user interfaces out of individual pieces called components written in JavaScript. React is designed to let you seamlessly combine components written by independent people, teams, and organizations."
}
</script>

What the agent receives

The agent’s-eye view
React React v 19.2 Search ⌘ Ctrl K Learn Reference Community Blog React The library for web and native user interfaces Learn React API Reference Create user interfaces from components React lets you build user interfaces out of individual pieces called components. Create your own React components like Thumbnail , LikeButton , and Video . Then combine them into entire screens, pages, and apps. Video.js function Video ( { video } ) { return ( &lt; div &gt; &lt; Thumbnail video = { video } /&gt; &lt; a href = { video . url } &gt; &lt; h3 &gt; { video . title } &lt;/ h3 &gt; &lt; p &gt; { video . description } &lt;/ p &gt; &lt;/ a &gt; &lt; LikeButton video = { video } /&gt; &lt;/ div &gt; ) ; } My video Video description Whether you work on your own or with thousands of other developers, using React feels the same. It is designed to let you seamlessly combine components written by independent people, teams, and organizations. Write components with code and markup React components are JavaScript functions. Want to show some content conditionally? Use an if statement. Displaying a list? Try array map() . Learning React is learning programming. VideoList.js function VideoList ( { videos , emptyHeading } ) { const count = videos . length ; let heading = emptyHeading ; if ( count &gt; 0 ) { const noun = count &gt; 1 ? &#x27;Videos&#x27; : &#x27;Video&#x27; ; heading = count + &#x27; &#x27; + noun ; } return ( &lt; section &gt; &lt; h2 &gt; { heading } &lt;/ h2 &gt; { videos . map ( video =&gt; &lt; Video key = { video . id } video = { video } /&gt; ) } &lt;/ section &gt; ) ; } 3 Videos First video Video description Second video Video description Third video Video description This markup syntax is called JSX. It is a JavaScript syntax extension popularized by React. Putting JSX markup close to related rendering logic makes React components easy to create, maintain, and delete. Add interactivity wherever you need it React components receive data and return what should appear on the screen. You can pass them new data in response to an interaction, like when the user types into an input. React will then update the screen to match the new data. SearchableVideoList.js import { useState } from &#x27;react&#x27; ; function SearchableVideoList ( { videos } ) { const [ searchText , setSearchText ] = useState ( &#x27;&#x27; ) ; const foundVideos = filterVideos ( videos , searchText ) ; return ( &lt; &gt; &lt; SearchInput value = { searchText } onChange = { newText =&gt; setSearchText ( newText ) } /&gt; &lt; VideoList videos = { foundVideos } emptyHeading = { `No matches for “ ${ searchText } ”` } /&gt; &lt;/ &gt; ) ; } example.com / videos.html React Videos A brief history of React Search 5 Videos React: The Documentary The origin story of React Rethinking Best Practices Pete Hunt (2013) Introducing React Native Tom Occhino (2015) Introducing React Hooks Sophie Alpert and Dan Abramov (2018) Introducing Server Components Dan Abramov and Lauren Tan (2020) You don’t have to build your whole page in React. Add React to your existing HTML page, and render interactive React components anywhere on it. Add React to your page Go full-stack with a framework React is a library. It lets you put components together, but it doesn’t prescribe how to do routing and data fetching. To build an entire app with React, we recommend a full-stack React framework like Next.js or React Router . confs/[slug].js import { db } from &#x27;./database.js&#x27; ; import { Suspense } from &#x27;react&#x27; ; async function ConferencePage ( { slug } ) { const conf = await db . Confs . find ( { slug } ) ; return ( &lt; ConferenceLayout conf = { conf } &gt; &lt; Suspense fallback = { &lt; TalksLoading /&gt; } &gt; &lt; Talks confId = { conf . id } /&gt; &lt;/ Suspense &gt; &lt;/ ConferenceLayout &gt; ) ; } async function Talks ( { confId } ) { const talks = await db . Talks . findAll ( { confId } ) ; const videos = talks . map ( talk =&gt; talk . video ) ; return &lt; SearchableVideoList videos = { videos } /&gt; ; } example.com / confs/react-conf-2021 React Conf 2021 React Conf 2019 Search 19 Videos React Conf React 18 Keynote The React Team React Conf React 18 for App Developers Shruti Kapoor React Conf Streaming Server Rendering with Suspense Shaundai Person React Conf The First React Working Group Aakansha Doshi React Conf React Developer Tooling Brian Vaughn React Conf React without memo Xuan Huang (黄玄) React Conf React Docs Keynote Rachel Nabors React Conf Things I Learnt from the New React Docs Debbie O&#x27;Brien React Conf Learning in the Browser Sarah Rainsberger React Conf The ROI of Designing with React Linton Ye React Conf Interactive Playgrounds with React Delba de Oliveira React Conf Re-introducing Relay Robert Balicki React Conf React Native Desktop Eric Rozell and Steven Moyes React Conf On-device Machine Learning for React Native Roman Rädle React Conf React 18 for External Store Libraries Daishi Kato React Conf Building Accessible Components with React 18 Diego Haz React Conf Accessible Japanese Form Components with React Tafu Nakazaki React Conf UI Tools for Artists Lyle Troxell React Conf Hydrogen + React 18 Helen Lin React is also an architecture. Frameworks that implement it let you fetch data in asynchronous components that run on the server or even during the build. Read data from a file or a database, and pass it down to your interactive components. Get started with a framework Use the best from every platform People love web and native apps for different reasons. React lets you build both web apps and native apps using the same skills. It leans upon each platform’s unique strengths to let your interfaces feel just right on every platform. example.com Stay true to the web People expect web app pages to load fast. On the server, React lets you start streaming HTML while you’re still fetching data, progressively filling in the remaining content before any JavaScript code loads. On the client, React can use standard web APIs to keep your UI responsive even in the middle of rendering. 1:34 PM Go truly native People expect native apps to look and feel like their platform. React Native and Expo let you build apps in React for Android, iOS, and more. They look and feel native because their UIs are truly native. It’s not a web view—your React components render real Android and iOS views provided by the platform. With React, you can be a web and a native developer. Your team can ship to many platforms without sacrificing the user experience. Your organization can bridge the platform silos, and form teams that own entire features end-to-end. Build for native platforms Upgrade when the future is ready React approaches changes with care. Every React commit is tested on business-critical surfaces with over a billion users. Over 100,000 React components at Meta help validate every migration strategy. The React team is always researching how to improve React. Some research takes years to pay off. React has a high bar for taking a research idea into production. Only proven approaches become a part of React. Read more React news Latest React News The React Foundation: A New Home for React Hosted by the Linux Foundation February 24, 2026 Additional Vulnerabilities in RSC December 11, 2025 Vulnerability in React Server Components December 3, 2025 React Conf 2025 Recap October 16, 2025 Read more React news Join a community of millions You’re not alone. Two million developers from all over the world visit the React docs every month. React is something that people and teams can agree on. This is why React is more than a library, an architecture, or even an ecosystem. React is a community. It’s a place where you can ask for help, find opportunities, and meet new friends. You will meet both developers and designers, beginners and experts, researchers and artists, teachers and students. Our backgrounds may be very different, but React lets us all create user interfaces together. Welcome to the React 

Show your score

Embed this badge on your site. It links back to this live scan and updates on every rescan.

AgentSpeed score for react.dev
<a href="https://agentspeed.com/scan/react.dev"><img src="https://agentspeed.com/badge/react.dev" alt="AgentSpeed agent-readiness score" height="56"></a>

Track this score

Get this report by email, then a heads-up when react.dev’s agent-readiness actually changes — a check regressing, or the composite dropping.

Two things never trigger an email: a score change caused by us publishing a new rubric, because that is a different instrument rather than a change to your site, and movement explained only by timing-derived checks, which shift run to run on a site nobody touched.

Want it on your own schedule, with Slack or a webhook instead of email? Score-drift monitoring is on every paid plan.

Full breakdown

11 pass2 warn15 fail2 skip
Discoverability
pass
robots.txt present
A robots.txt is reachable at the site root.
100/100
pass
robots.txt allows AI agents
All 8 answer-time access agents allowed.
100/100
fail
Content-Signal directivesemerging
No Content-Signal directives. Add e.g. `Content-Signal: ai-train=no, ai-summarize=yes` to declare granular AI usage policy beyond binary allow/disallow.
0/100
pass
llms.txt present
Found /llms.txt (14347 bytes), H1 + at least one link present.
100/100
fail
Sitemap present
No reachable sitemap.xml. Publish one and reference it in robots.txt.
0/100
fail
Link response headers
No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.
0/100
pass
Canonical URL
Canonical points to self: https://react.dev/.
100/100
fail
MCP server cardemerging
No valid MCP Server Card at /.well-known/mcp/server-card.json. Publish one so agents can discover your tools without HTML scraping.
0/100
fail
OAuth authorization metadataemerging
No RFC 8414 metadata at /.well-known/oauth-authorization-server. Agents that act on behalf of users need this to discover your authorization endpoints.
0/100
fail
OAuth resource metadataemerging
No RFC 9728 metadata at /.well-known/oauth-protected-resource. Publish it so agents can discover required scopes without hand-coded credentials.
0/100
fail
API catalog / OpenAPIemerging
No /.well-known/api-catalog (RFC 9727) and no /openapi.json|yaml. Publish one so agents that integrate with APIs can discover your endpoints.
0/100
fail
Web Bot Authemerging
No Web Bot Auth JWKS at /.well-known/http-message-signatures-directory.json. Publish one to allow trusted agents while keeping a default-deny posture for the rest.
0/100
Readability
fail
Markdown negotiationemerging
Accept: text/markdown returns HTML, not markdown. Serve a markdown variant of primary content when requested; agents summarize and cite it more reliably.
0/100
fail
Text-to-markup ratio
Visible text is 3.1% of HTML weight (8380/272458 bytes). Low. Markup may be crowding out agent-usable text.
23/100
warn
Content without JavaScript
Browser pass unavailable; HTML looks like a JS-shell (e.g. #__next / #root). Likely JS-dependent.
50/100
fail
Heading hierarchy
Heading issues: 2 <h1> tags (expected 1); 1 skipped level(s).
50/100
pass
Cookie wall blocks content
No common consent-modal markers detected.
100/100
pass
Page title
A concise <title> is present (5 chars).
100/100
warn
Meta description
Meta description is 260 characters; aim for 50–200 so it's neither thin nor truncated.
60/100
Structured data
fail
JSON-LD present
No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.
0/100
skip
Structured data validates
No JSON-LD blocks present; nothing to validate (covered by structured_data.jsonld_present).
fail
Schema type coverage
Page looks like Article|BlogPosting|NewsArticle; missing JSON-LD type(s): Article|BlogPosting|NewsArticle.
0/100
Actionability
pass
Paywall / login wall
No paywall or login-wall detected on the landing URL.
100/100
fail
Agent Skills manifestemerging
No Agent Skills manifest at /.well-known/agent-skills.json. Enumerate the tasks agents can perform (search, add-to-cart, contact-support) so they pick the right one without scraping.
0/100
fail
WebMCP actionsemerging
No WebMCP detected. On pages with first-class actions (cart, support, account), embed a WebMCP server so on-page agents invoke tools directly.
0/100
pass
Primary action reachable
Primary offering identified ("JavaScript library for building user interfaces") with price/CTA ("Learn React").
100/100
pass
Reachability
HTTP 200.
100/100
Performance
pass
Time to first byte
TTFB 172ms. Healthy.
100/100
skip
Full render time
Full-render time unavailable (browser pass skipped or failed).
pass
Page weight
Initial document is a lean 266 KB.
100/100
Beyond the scan

Running AI agents of your own? AgentSpeed also monitors them in production — every run, its latency, cost, and failures, with alerts when something breaks. Free for 10,000 events a month, no credit card.

Start watching free →See plans