
next-coverage: qué APIs de Next.js usa tu app
npx next-coverageMira qué APIs de Next.js usa tu proyecto, cuáles le aplicarían y por qué las demás se quedan fuera.
Secciones
Resumen
Lee un proyecto con App Router y reparte en cuatro grupos todas las APIs del framework que conoce. No hay nota ni porcentaje: 29 de 151 no es una calificación, y los cuatro recuentos son la respuesta.
- 29Se usala API está en el proyecto
- 1Aplicaríalas condiciones están en el código y la API no
- 8No aplicadescartada, con el motivo impreso
- 113Sin evaluarsin juicio, desglosado por qué
Aplicaría es una oportunidad, no un defecto. Esta herramienta nunca dice que tu código esté mal.
Lee ficheros fuente. No construye tu app, no la ejecuta y no envía nada a ninguna parte. Si encuentra un build de producción, también lo lee y contrasta los dos.
Corrida de ejemplo
next-coverage · Next.js 16.3.0-preview.10 · ~/next16-commerce1.2 s · 151 entradas examinadas
Ejecutado contra aurorascharff/next16-commerce en 13d17c0f, sobre Next.js 16.3.0-preview.10. Todo lo de abajo está copiado de esa corrida.
- 29Se usala API está en el proyecto
- 1Aplicaríalas condiciones están en el código y la API no
- 8No aplicadescartada, con el motivo impreso
- 113Sin evaluarsin juicio, desglosado por qué
29 of 30 evaluated APIs are in use.
Los 3 hallazgos
declared here, and no invalidation names them anywhere in the project
a tag lets revalidateTag drop exactly these scopes, so a change reaches the page without waiting out the profile
products- features/product/product-queries.ts
these cache scopes inherit the default profile because they never set one
a profile sets how long the scope is fresh and how long it may be served stale, instead of the framework’s default
- features/category/components/Categories.tsx
- features/category/components/CategoryFilters.tsx
- features/category/components/FeaturedCategories.tsx
- y 8 más
the project serves 7 pages and declares no sitemap
a sitemap file generates the XML from the routes, so crawlers find every page rather than the ones something links to
- app
Comprobado a mano
features/product/product-queries.ts:47 — getProducts declares 'use cache', cacheLife('minutes') and cacheTag('products') features/product/components/{Product,ProductDetails}.tsx — cacheTag('product-' + productId) features/product/product-actions.ts:54 — setFeaturedProduct changes the featured product and calls revalidateTag('featured-product', 'max')
Nothing in the project ever names products or product-<id>.
Cambia el producto destacado y la portada se actualiza al instante, mientras el listado puede seguir sirviendo el anterior hasta que caduque el perfil minutes.
Con cacheLife("minutes") puede ser perfectamente deliberado. La herramienta lo reporta como una observación y esta página también.
Peso en cliente
- /all20 módulos
- /16 módulos
- /product/[id]15 módulos
- /cart12 módulos
- /user12 módulos
Y 2 rutas más, todas más ligeras que estas.
nothing contrasted: no production build found at .next
Los cuatro grupos
- 29Se usala API está en el proyecto
- 1Aplicaríalas condiciones están en el código y la API no
- 8No aplicadescartada, con el motivo impreso
- 113Sin evaluarsin juicio, desglosado por qué
Solo un grupo te pide algo. Aplicaría significa que las condiciones que la API necesita ya están en el código y la API no: merece un vistazo, nunca es un bug. El rojo de la paleta se reserva para una contradicción de verdad, y esta corrida no tiene ninguna.
Lo que se niega a juzgar
El número interesante es el más grande: 113 entradas que no evaluó, desglosadas en vez de tragadas.
- 32 abstained
- 5 suggested on another entry
- 72 evaluated and unmatched
Abstenerse quiere decir que la evidencia no daba para responder ni una cosa ni la otra. Una herramienta que nunca se abstiene está adivinando.
Modos
La corrida por defecto imprime lo que puede argumentar: aquí 3 hallazgos. Se ejecuta sin flags.
--strict baja el listón y añade las sugerencias opcionales: 14 hallazgos sobre el mismo proyecto, en el mismo segundo.
npx next-coverage --strict --findings
65 sugerencias opcionales retenidas por defecto, y el informe lo dice en cada corrida en vez de esconderlas. --findings imprime la lista; --json da el informe entero.
13 restricciones documentadas comprobadas, ninguna contradicha.
Los dos modos leen exactamente los mismos ficheros. --strict cambia lo que se reporta, nunca lo que se analiza.
Alcance y límites
- Lee ficheros. No construye, no ejecuta, no instala y no envía nada.
- Node.js 20.19+, Next.js 16.2+, App Router. Los proyectos con Pages Router quedan fuera.
- El contraste con el build y el peso en cliente necesitan un build de producción en
.next. Sin él lo dice, en vez de adivinar. - Va por la versión 0.1.0. En
0.xla salida del CLI y la forma del JSON pueden cambiar entre menores, así que la corrida de esta página lleva su fecha. - No es un linter. No dice nada sobre si tu código es correcto, solo sobre qué parte del framework estás usando.
Enlaces
- github.com/xabierlameiro/next-coverageCódigo fuente, README e issues
- npmjs.com/package/next-coverageEl paquete en npm
- npmx.dev/package/next-coverageTamaño de instalación, dependencias y descargas
- next-leakLa otra herramienta: ¿tu app tiene fugas de memoria?
- ¿No estás de acuerdo con un grupo? Abre una issue