How to detect React on any website
The JavaScript library for building user interfaces — the base most meta-frameworks build on.
Official siteWhat is React?
React is a UI library, not a framework — but it's the default UI layer for Next.js, Remix, Gatsby, parts of Astro, React Native, and countless bespoke setups. Its fingerprints overlap with anything that uses it.
React is the most-used library in frontend JavaScript, and that popularity means its traces are both everywhere and deeply variable. A site might use React as the whole frontend (SPA), as the runtime of a meta-framework like Next or Remix, as an island inside an Astro page, as a widget embedded in a WordPress site, as a native wrapper via React Native Web, or as a small interactive component on an otherwise-static page. Detecting React is rarely the question; detecting 'is React the primary UI layer' or 'which React version is this' is what actually matters. Since React 18 the concurrent-rendering features and Server Components have shifted the ecosystem toward hybrid SSR/streaming models, which changes both what you see in the browser (flight payloads, streamed chunks) and what constitutes a confident detection.
Why it matters to identify
Confirming React is the first step before identifying the framework on top (Next, Remix, Gatsby, Astro, bespoke Vite + React, CRA). Version matters because React 18 and 19 enabled concurrent features and server components that older detectors may not surface. Library ecosystem choices correlate strongly with React version — React 19 sites often run Next.js 15, Server Components and the new use() hook, while React 17 sites are still running CRA or legacy SSR stacks.
A brief history of React
React was open-sourced by Facebook in 2013 and has been the dominant JavaScript UI library since around 2016. Major releases: 16 (2017, Fiber reconciliation), 16.8 (2019, hooks), 17 (2020, no new features — stepping stone release), 18 (2022, concurrent rendering), 19 (2024, actions, use() hook, ref-as-prop, form actions, built-in streaming). Each major version shifted what's possible in the ecosystem: hooks redefined component authorship; concurrent rendering redefined the relationship between UI updates and I/O; server components redefined where code runs.
Ecosystem and common pairings
React's immediate ecosystem is enormous. The common companions: a meta-framework (Next, Remix, Gatsby), a state library (Zustand, Redux Toolkit, Jotai), a data-fetching library (TanStack Query, SWR, Apollo Client for GraphQL), a UI kit (shadcn/ui, MUI, Chakra UI, Ant Design), a form library (React Hook Form, Formik, Conform), styling (Tailwind, styled-components, emotion, CSS Modules). The exact combination often fingerprints the team's vintage and taste.
Detection signals we look at
Each signal alone is rarely conclusive; the detector cross-references all of them and weights by confidence. You can reproduce any of these checks yourself in Chrome DevTools.
[data-reactroot]
Legacy SSR React apps set this on the root container. Less common in modern builds.
window.React.version
When React is loaded as an un-bundled global (older sites, CDN-linked), `React.version` is the canonical version string.
node_modules/react-dom/|node_modules/react/
In sourcemaps, paths under `node_modules/react/` and `node_modules/react-dom/` confirm React is bundled, with the exact version in the matching package.json.
react.production.min.js|react-dom.production.min.js
CDN-linked React (common on marketing sites or legacy apps).
data-react-helmet|data-rh
react-helmet and similar meta managers leave telltale `data-*` attributes on head tags.
Versioning
Sites commonly running React
- facebook.com
- instagram.com
- airbnb.com
- netflix.com (parts of)
- whatsapp.com
- x.com
Often confused with
React vs Preact
Preact is a smaller React-compatible library. Its bundle is visibly tiny and paths reference `node_modules/preact/`. If you see `preact/compat` in the sourcemap, the site is using Preact with a React compatibility shim.
React vs React Native Web
React Native for Web bundles React + React Native primitives. Look for `node_modules/react-native-web/` in the sourcemap.
FAQ
How do I tell React 18 from 19?
Only via the sourcemap-embedded `react/package.json` or the `React.version` runtime global. The bundle output looks similar between majors. New-API presence (use() hook calls, form actions) in the reconstructed source also confirms 19+.
Does detecting React tell me the framework?
No — React is the base. You need additional signals (`_next/static/`, `<astro-island>`, `#___gatsby`) to identify the framework on top. See the framework-detection guide for the full flow.
Related
See React — with the exact version — on every site you visit.
Sourcemap Explorer runs these checks passively in the background. When the target library is bundled, you get the precise package.json-level version.