Capítulo 139 de 456
Convenções de arquivo para definir ícones do app (aba do navegador, home screen, resultados de busca) via imagem estática ou código gerador.
favicon: só .ico, só no nível raiz de app/.icon: .ico, .jpg, .jpeg, .png, .svg; pode estar em qualquer segmento (app/**/*).apple-icon: .jpg, .jpeg, .png; pode estar em qualquer segmento.icon.(js|ts|tsx) ou apple-icon.(js|ts|tsx) default-exportando uma função, tipicamente usando ImageResponse de next/og.size e contentType: exports opcionais para configurar metadata do ícone gerado.icon1.png, icon2.png), ordenados lexicamente.import { ImageResponse } from 'next/og'
export const size = { width: 32, height: 32 }
export const contentType = 'image/png'
export default function Icon() {
return new ImageResponse(
(
<div
style={{
fontSize: 24,
background: 'black',
width: '100%',
height: '100%',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
color: 'white',
}}
>
A
</div>
),
{ ...size }
)
}
ImageResponse, reaproveitando size nas opções de render.export default async function Icon({
params,
}: {
params: Promise<{ slug: string }>
}) {
const { slug } = await params
}
params do segmento onde está colocado (desde v16, é promise).| File convention | Tipos suportados (imagem) | Localização válida |
|---|---|---|
favicon | .ico | app/ (raiz apenas) |
icon | .ico, .jpg, .jpeg, .png, .svg | app/**/* |
apple-icon | .jpg, .jpeg, .png | app/**/* |
| File convention (código) | Tipos suportados |
|---|---|
icon | .js, .ts, .tsx |
apple-icon | .js, .ts, .tsx |
favicon via código: não é possível; use icon ou um favicon.ico estático.favicon fora do nível raiz de app/: só funciona no topo; para granularidade por segmento, use icon.generateImageMetadata permite gerar múltiplos ícones no mesmo arquivo.icon/apple-icon são Route Handlers especializados que aceitam as mesmas opções de Route Segment Config de pages/layouts.<link> (rel, type, sizes) são inferidos automaticamente do arquivo avaliado.