JavaScript frameworks are the backbone of modern web applications. Detecting which framework a website uses is valuable for developers choosing technology stacks, recruiters understanding a company's engineering culture, and sales teams selling developer tools. But modern frameworks are increasingly difficult to detect because they compile away their fingerprints during production builds.
This guide explores the detection techniques used by professional tools to identify React, Vue, Angular, Svelte, and their server-side meta-frameworks.
Why Framework Detection Is Challenging
Unlike a CMS that leaves obvious file paths and meta tags, modern JavaScript frameworks are designed to produce optimized, minified output. React does not add a <meta name="generator"> tag. Vue does not include its name in script URLs. Angular bundles are generic JavaScript files with hashed names.
Effective detection requires analyzing multiple signals simultaneously: DOM attributes that survive the build process, JavaScript global variables that frameworks expose for developer tooling, specific HTML patterns in the rendered output, and script URL patterns from known CDNs or build tools.
DOM Attributes and JavaScript Globals
Each framework leaves characteristic traces in the DOM and JavaScript runtime:
- React: The
__REACT_DEVTOOLS_GLOBAL_HOOK__global is present on virtually every React site. Elements may includedata-reactrootattributes. - Vue: Scoped style attributes like
data-v-prefixed attributes are unique to Vue's single-file component system. The__vue__property on DOM elements confirms Vue. - Angular: The
ng-versionattribute on the root element and_ngcontent-prefixed attributes throughout the DOM are definitive Angular signatures. - Svelte: CSS class names matching the
svelte-pattern indicate Svelte's scoped styling system.
Detecting Meta-Frameworks
Meta-frameworks like Next.js, Nuxt, SvelteKit, and Remix add their own detection layer on top of the base framework. Next.js serves assets from /_next/and exposes __NEXT_DATA__. Nuxt uses /_nuxt/ paths and window.__NUXT__. SvelteKit assets live under /_app/immutable/. Remix can be identified by its __remixContext global and specific link prefetching patterns.
Detecting the meta-framework automatically implies the base framework. For example, finding Next.js means React is also present. A good detection tool uses these implication relationships to build a complete technology profile.
Automated Framework Scanning
WhatStack uses ten different analyzers to detect JavaScript frameworks with high accuracy. The combination of HTML analysis, script URL matching, DOM pattern detection, and JavaScript global checking catches frameworks that any single method would miss.
Each detected framework includes a confidence score, version number when available, and category classification. The relationship resolver automatically adds implied technologies — so detecting Nuxt adds both Vue.js and Node.js to the results. Explore our technology directory to see the full list of frameworks we detect, or scan any site to see framework detection in action.