Favicons con Next.js App Router

Escrito por

App Router puede generar las etiquetas de iconos a partir de archivos convencionales o del objeto metadata. Ambos métodos son válidos, pero mezclarlos sin una regla clara puede crear fácilmente declaraciones en conflicto.

Árbol de App Router que vincula archivos de iconos con páginas
Las convenciones de archivos siguen los segmentos de ruta de App Router.

Elegir las convenciones de archivos

Coloca favicon.ico en la raíz de app. Los archivos icon con una extensión compatible pueden estar en un segmento de ruta, mientras que apple-icon describe el icono destinado a dispositivos Apple.

Next.js detecta estos archivos, calcula los atributos útiles y añade los elementos link correspondientes al head. Un icono colocado en un segmento se aplica a las rutas de ese segmento.

Convenciones de iconos de App Router
ArchivoUbicaciónUso
favicon.icoapp/Alternativa del sitio
icon.svgsegmento app/Icono del navegador
apple-icon.pngsegmento app/Icono de Apple
manifest.webmanifestsegmento app/Manifiesto instalable

Usar metadata para rutas explícitas

Si tus recursos están en public o en un servidor de imágenes, declara metadata.icons en un layout o una página. Especifica icon, apple y, si hace falta, shortcut con URL coherentes.

Los metadatos de un segmento hijo pueden sustituir campos compuestos heredados. Por eso conviene inspeccionar el head final de varias rutas en lugar de dar por hecho que se han combinado todas las entradas del padre.

Para un icono generado bajo demanda, Next.js también admite icon.tsx o icon.js. La función devuelve datos de imagen con un tamaño y un tipo explícitos. Reserva este enfoque para composiciones realmente dinámicas: un archivo estático sigue siendo más sencillo de almacenar en caché e inspeccionar.

Vincular el manifiesto y sus iconos

Un archivo manifest estático o una función manifest.ts pueden describir el nombre de la aplicación, los colores y los iconos instalables. Las URL de los iconos del manifiesto deben ser públicas y apuntar a las dimensiones declaradas.

Mantén separada la función del manifiesto de la del favicon de pestaña: un icono de 512×512 destinado a la instalación no sustituye automáticamente a icon.svg ni a favicon.ico.

Probar en producción

Ejecuta una compilación de producción, abre una ruta de cada segmento afectado e inspecciona los elementos link. Después comprueba directamente cada URL de recurso y confirma que ningún middleware la intercepte.

Si usas basePath o una CDN, prueba las URL generadas en el entorno desplegado. El comportamiento local no siempre revela una base pública o una regla de reescritura incorrectas.

Fuentes primarias

Preguntas frecuentes

¿Hay que escribir las etiquetas link a mano?

No. Las convenciones de archivos o metadata.icons pueden generarlas. Elige una fuente de verdad clara.

¿Dónde se coloca favicon.ico?

Con App Router, la convención favicon.ico se admite en la raíz de la carpeta app.

¿Un manifest.ts sustituye a icon.svg?

No. El manifiesto describe, entre otras cosas, los iconos instalables, mientras que icon.svg proporciona directamente el icono del navegador.

Ponlo en práctica

El generador produce el conjunto completo en segundos, gratis y sin enviar tus imágenes.

Generar los recursos para Next.js

Qué leer y probar después

Las otras herramientas de LFFavicon y las guías que responden a las preguntas más frecuentes.

Herramientas

Guías