Sourcemap Explorer
Detect JavaScript framework

How to detect Vue.js on any website

Progressive JavaScript framework — the most popular alternative to React, especially in Asia and Europe.

Official site

What is Vue.js?

Vue.js pioneered the single-file component pattern (`.vue` files) and powers Nuxt, most Chinese e-commerce frontends, and a huge portion of European dev-tools. Vue 3 is based on the Composition API; Vue 2 is still in wide use in long-tail apps.

Vue occupies a distinctive niche: it's React-adjacent in capability but substantially more prescriptive about conventions (single-file components, explicit reactivity primitives, first-party router and state library). That prescriptiveness is a feature for teams that prefer a less-plural ecosystem. Vue 3 rewrote the reactivity system using Proxies and introduced the Composition API, bringing the authoring model closer to React hooks while keeping the template syntax. Vue 2 reached end-of-life at the end of 2023 but a long tail of applications still run it. Detecting Vue on a site usually implies Nuxt above it (the SSR meta-framework), a Pinia or Vuex state layer, Vue Router for navigation, and a Tailwind or custom utility CSS layer.

Why it matters to identify

Vue's ecosystem is largely invisible to naive detectors because much of it is hydrated at runtime. Seeing Vue in an enumeration tells you whether you're dealing with an SSR Nuxt app, a client-only SPA, or a server-rendered app with Vue as an enhancement layer. It also strongly correlates with geography: European and Chinese sites over-index on Vue compared to the global React-heavy baseline.

A brief history of Vue.js

Vue was released by Evan You in 2014. v1 (2015), v2 (2016), v2.6 (2019, Slots API), v3 (2020, Proxy reactivity and Composition API). Vue 2 reached end-of-life December 2023 with a paid LTS continuation. Over the years Vue's governance has remained independent (unlike React's Facebook-backing or Angular's Google-backing), which shapes some of its community dynamics.

Ecosystem and common pairings

Typical Vue stack: Vue + Nuxt (for SSR) + Pinia (state) + VueUse (composable utilities) + Vue Router (always bundled with Nuxt) + Tailwind or Vuetify or PrimeVue (UI). Data fetching is `useFetch`/`useAsyncData` from Nuxt, or a third-party library. Form validation often via VeeValidate or Vuelidate.

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.

JavaScript global
window.Vue|window.__VUE__

Runtime Vue global, present in both Vue 2 and Vue 3 apps when Vue is exposed to the window.

DOM selector
[data-v-app]|[v-cloak]

Vue 3 sets `data-v-app` on the root of the hydrated tree. `v-cloak` is older.

Sourcemap path
node_modules/vue/|node_modules/@vue/

Vue bundled under these paths. Version comes from the embedded `package.json`.

HTML source
<!--v-if-->|<!--v-for-->

Vue uses HTML comment placeholders for conditional rendering. Not exclusive but strongly suggestive.

Versioning

Version
Notable changes
2.0
Virtual DOM renderer, released 2016.
3.0
Proxy-based reactivity, Composition API, released 2020.
3.3
TypeScript improvements; `defineModel()` macro.
3.4
Reactive props destructuring; performance improvements.

Sites commonly running Vue.js

  • alibaba.com
  • gitlab.com
  • laravel.com
  • nintendo.com (regional)
  • jd.com

Often confused with

Vue.js vs Nuxt

Nuxt is built on Vue, so every Nuxt site is a Vue site. The reverse isn't true — lots of Vue sites aren't Nuxt.

Vue.js vs Alpine.js

Alpine sits in a similar 'progressive enhancement' niche but is a much smaller library. `[x-data]` and `[x-init]` attributes signal Alpine.

Related

See Vue.js — 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.

Install free on Chrome