@hyperfrontend/project-scope/tech/frontendfrontend
Frontend-framework detectors for the modern web framework landscape.
Covers React, Next.js, Vue, Nuxt, Angular, Svelte, SvelteKit, Solid, Qwik, Astro, Remix, and Gatsby. Each <framework>Detector follows the shared FrameworkDetector contract; detectFrontendFrameworks runs them all and returns the aggregate FrameworkDetection[]. The detectors look at package.json dependencies, framework-specific files (next.config.js, vite.config.ts, angular.json, etc.), and characteristic source patterns to score each framework with confidence and evidence.
API Reference
ƒ Functions
Parameters
Returns
FrameworkDetectionExample
Detecting Angular framework
const result = angularDetector('/path/to/angular-app', {
dependencies: { '@angular/core': '^17.0.0', '@angular/cli': '^17.0.0' }
})
// => {
// id: 'angular',
// name: 'Angular',
// category: 'frontend',
// version: '17.0.0',
// confidence: 85,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.@angular/core' },
// { type: 'package.json', field: 'dependencies.@angular/cli' }
// ]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Astro framework
const result = astroDetector('/path/to/astro-project', {
dependencies: { 'astro': '^4.0.0' }
})
// => {
// id: 'astro',
// name: 'Astro',
// category: 'meta-framework',
// version: '4.0.0',
// confidence: 70,
// detectedFrom: [{ type: 'package.json', field: 'dependencies.astro' }]
// }detectFrontendFrameworks(projectPath: string, packageJson?: PackageJson): FrameworkDetection[]
Parameters
Returns
FrameworkDetection[]Example
Detecting multiple frontend frameworks
const frameworks = detectFrontendFrameworks('/path/to/nextjs-app', {
dependencies: { 'react': '^18.0.0', 'next': '^14.0.0' }
})
// => [
// { id: 'nextjs', name: 'Next.js', category: 'meta-framework', confidence: 70, ... },
// { id: 'react', name: 'React', category: 'frontend', confidence: 60, ... }
// ]Parameters
Returns
FrameworkDetectionExample
Detecting Gatsby framework
const result = gatsbyDetector('/path/to/gatsby-blog', {
dependencies: {
'gatsby': '^5.0.0',
'gatsby-plugin-image': '^3.0.0',
'gatsby-source-filesystem': '^5.0.0'
}
})
// => {
// id: 'gatsby',
// name: 'Gatsby',
// category: 'meta-framework',
// version: '5.0.0',
// confidence: 75,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.gatsby' },
// { type: 'package.json', field: 'dependencies (gatsby plugins)' }
// ]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Next.js framework
const result = nextjsDetector('/path/to/nextjs-app', {
dependencies: { 'next': '^14.0.0', 'react': '^18.0.0' }
})
// => {
// id: 'nextjs',
// name: 'Next.js',
// category: 'meta-framework',
// version: '14.0.0',
// confidence: 70,
// detectedFrom: [{ type: 'package.json', field: 'dependencies.next' }]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Nuxt framework
const result = nuxtDetector('/path/to/nuxt-app', {
dependencies: { 'nuxt': '^3.0.0', 'vue': '^3.0.0' }
})
// => {
// id: 'nuxt',
// name: 'Nuxt',
// category: 'meta-framework',
// version: '3.0.0',
// confidence: 70,
// detectedFrom: [{ type: 'package.json', field: 'dependencies.nuxt' }]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Qwik framework
const result = qwikDetector('/path/to/qwik-app', {
dependencies: {
'@builder.io/qwik': '^1.0.0',
'@builder.io/qwik-city': '^1.0.0'
}
})
// => {
// id: 'qwik',
// name: 'Qwik',
// category: 'frontend',
// version: '1.0.0',
// confidence: 90,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.@builder.io/qwik' },
// { type: 'package.json', field: 'dependencies.@builder.io/qwik-city' }
// ]
// }Parameters
Returns
FrameworkDetectionExample
Detecting React library
const result = reactDetector('/path/to/react-app', {
dependencies: { 'react': '^18.0.0', 'react-dom': '^18.0.0' }
})
// => {
// id: 'react',
// name: 'React',
// category: 'frontend',
// version: '18.0.0',
// confidence: 80,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.react' },
// { type: 'package.json', field: 'dependencies.react-dom' }
// ]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Remix framework
const result = remixDetector('/path/to/remix-app', {
dependencies: {
'@remix-run/react': '^2.0.0',
'@remix-run/node': '^2.0.0'
}
})
// => {
// id: 'remix',
// name: 'Remix',
// category: 'meta-framework',
// version: '2.0.0',
// confidence: 90,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.@remix-run/react' },
// { type: 'package.json', field: 'dependencies.@remix-run/*' }
// ]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Solid.js framework
const result = solidDetector('/path/to/solid-app', {
dependencies: { 'solid-js': '^1.8.0', 'vite-plugin-solid': '^2.0.0' }
})
// => {
// id: 'solid',
// name: 'Solid',
// category: 'frontend',
// version: '1.8.0',
// confidence: 90,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.solid-js' },
// { type: 'package.json', field: 'dependencies.vite-plugin-solid' }
// ]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Svelte framework
const result = svelteDetector('/path/to/svelte-app', {
devDependencies: { 'svelte': '^4.0.0' }
})
// => {
// id: 'svelte',
// name: 'Svelte',
// category: 'frontend',
// version: '4.0.0',
// confidence: 70,
// detectedFrom: [{ type: 'package.json', field: 'dependencies.svelte' }]
// }Parameters
Returns
FrameworkDetectionExample
Detecting SvelteKit framework
const result = sveltekitDetector('/path/to/sveltekit-app', {
devDependencies: { '@sveltejs/kit': '^2.0.0', 'svelte': '^4.0.0' }
})
// => {
// id: 'sveltekit',
// name: 'SvelteKit',
// category: 'meta-framework',
// version: '2.0.0',
// confidence: 70,
// detectedFrom: [{ type: 'package.json', field: 'dependencies.@sveltejs/kit' }]
// }Parameters
Returns
FrameworkDetectionExample
Detecting Vue.js framework
const result = vueDetector('/path/to/vue-app', {
dependencies: { 'vue': '^3.0.0', '@vue/cli-service': '^5.0.0' }
})
// => {
// id: 'vue',
// name: 'Vue',
// category: 'frontend',
// version: '3.0.0',
// confidence: 85,
// detectedFrom: [
// { type: 'package.json', field: 'dependencies.vue' },
// { type: 'package.json', field: 'dependencies.@vue/cli-service' }
// ]
// }