tech stack
Framework web detectado
MetricSpot identifica el framework de JavaScript que renderiza la página (Next.js, Astro, Nuxt, SvelteKit, Remix, React, Vue). Informativo — adapta las recetas del resto de la auditoría.
Qué comprueba esta verificación
Identifica el framework de JavaScript que renderiza la página a partir de un conjunto en capas de firmas. La primera señal fiable gana, y el resultado es puramente informativo — esta regla nunca hace fallar una auditoría.
| Framework | Firmas principales |
|---|---|
| Next.js | <script id="__NEXT_DATA__">, /_next/static/, runtime __next_f, x-powered-by: Next.js |
| Nuxt | window.__NUXT__, /_nuxt/, <div id="__nuxt">, <script id="__NUXT_DATA__"> |
| Astro | elemento personalizado astro-island, atributos data-astro-cid-*, comentario <!-- generated by Astro -->, etiquetas de estilos View-Transitions |
| SvelteKit | <script data-sveltekit-hydrate>, /_app/immutable/, globales __sveltekit_* |
| Remix / React Router 7 | window.__remixContext, /build/_assets/, <link rel="modulepreload" href="/build/, URLs _data estilo Remix |
| Gatsby | /page-data/, window.___gatsby, <div id="___gatsby"> |
| Create React App | /static/js/main.*.js, /static/css/main.*.css, <div id="root"> sin marcado SSR |
| Vite + React/Vue | /assets/index-*.js, <script type="module"> con entry hasheado, sin globales específicos del framework |
| Vue (standalone) | <div id="app">, window.Vue, atributos scoped data-v-* |
| Angular | <app-root>, atributo ng-version en el elemento raíz |
Cuando MetricSpot no puede clasificar la página con confianza (builds muy personalizados, HTML renderizado en servidor con todas las firmas del framework eliminadas), informa “ningún framework detectado” y trata la auditoría como un sitio HTML renderizado en servidor.
Por qué importa
Igual que la verificación del CMS — es contexto que permite al resto de la auditoría elegir la receta correcta.
- Una etiqueta canonical ausente en Next.js se arregla vía el export
metadataen App Router; en Astro va en tu<Layout>; en CRA no hay arreglo real sin un servidor. - Un fallo en Largest Contentful Paint en Gatsby suele significar configuración mala del plugin de imágenes; en Next.js apunta a hints de prioridad de
next/imageo al límite de streaming; en una SPA de Vite suele ser renderizado client-side del contenido above-the-fold (el arreglo real es SSR). - Un fallo en Interaction to Next Paint en Remix o Next.js App Router apunta a client components demasiado grandes; en Astro apunta a islands que deberían ser
client:visibleen vez declient:load. - Un Sitemap XML es
@astrojs/sitemapen Astro,next-sitemapen Next.js Pages Router, ositemap.tsen App Router — la etiqueta del arreglo es distinta cada vez.
El framework también predice techos. Los sitios estáticos de Astro o Next.js puntúan habitualmente 95+ en Lighthouse performance; las SPAs de CRA o Vue puras renderizadas en cliente rara vez pasan de 70 sin code-splitting agresivo. Saber dónde estás te dice qué vale la pena optimizar y qué vale la pena migrar.
Cómo arreglarlo
No hay nada que arreglar — esta regla es informativa. La acción es leer el resto de tu auditoría con el prisma de las convenciones de tu framework.
Next.js (App Router) — casi todo arreglo de metadata es el export metadata en layout.tsx o page.tsx. Las cabeceras de seguridad van en next.config.js bajo async headers(). Las imágenes usan next/image con priority para LCP.
Next.js (Pages Router) — <Head> en pages/_app.tsx para tags globales del sitio, <Head> por página para overrides. next-sitemap para sitemaps. Las cabeceras siguen en next.config.js.
Astro — todo lo de nivel de página va en tu componente <Layout> o en un bloque frontmatter por página. @astrojs/sitemap para sitemaps, import.meta.env nativo para datos de build time. El modelo “cero JS por defecto” de Astro significa que la mayoría de auditorías de rendimiento pasan sin intervención.
Nuxt 3 — composable useHead() o definePageMeta() para metadata. nuxt.config.ts para ajustes globales. @nuxtjs/sitemap para sitemaps.
SvelteKit — <svelte:head> en +layout.svelte para tags globales; <svelte:head> por ruta para overrides. Las cabeceras vía hook handle en src/hooks.server.ts.
Remix — exports meta y headers por ruta. Export links para preloads y stylesheets.
Create React App / Vite SPA — la mayoría de hallazgos que requieren server (cabeceras de seguridad, URLs canónicas, tags OG) no se pueden arreglar del todo sin renderizado en servidor o un paso de build que inyecte meta. Considera migrar a Vite + SSR (con un framework como Astro o Remix) antes de pelearte con reglas individuales.
Vue (standalone) — usa vue-meta (Vue 2) o @unhead/vue (Vue 3) para head tags dinámicos. Para SEO de calidad SSR, usa Nuxt.
Ningún framework detectado — estás en HTML plano o en una plantilla server-side (PHP, Rails, Django, plantillas de Go). Cada arreglo es una edición directa al template fuente; tienes el máximo control y la mínima magia.
Esconde las firmas del framework si tienes que hacerlo. Puedes quitar las cabeceras x-powered-by y los comentarios <!-- generated by … -->, pero las firmas de runtime (IDs de nodo de montaje, rutas de assets hasheadas, globales de hidratación) están horneadas en el framework y quitarlas lo rompe. No vale la pena el esfuerzo.
Preguntas frecuentes
MetricSpot detectó mi framework mal. ¿Por qué?
El caso más habitual es detectar el framework envoltorio en vez del meta-framework. Un sitio Next.js es también un sitio React — MetricSpot informa Next.js porque es más específico. Un sitio Nuxt es también Vue; reportamos Nuxt. Si ves “React” pero estás en Next.js, tu build probablemente está quitando el script __NEXT_DATA__ — inusual, pero posible en modos de salida personalizados.
¿El framework afecta a mi puntuación de auditoría?
No, esta regla es sólo informativa. Sí cambia qué recetas ves — los fallos en otra parte de la auditoría recomendarán un arreglo apropiado a tu stack detectado.
¿Y si uso varios frameworks (micro-frontends)?
MetricSpot reporta el framework que renderiza la cáscara de la página. Si tu cáscara es Next.js pero una sección es un micro-frontend de Vue, reportaremos Next.js. Los setups de micro-frontend de una sola página son raros en superficies de marketing — si tienes uno, ya sabrás qué framework manda en cada ruta y podrás interpretar la auditoría en consecuencia.
Fuentes
Última actualización 2026-05-11