{"editorial_visual":"https://favicon.now/static/images/editorial/guides/vercel-favicon.webp","implementation_artifact":{"code":"{\n  \"headers\": [{\n    \"source\": \"/(favicon\\.ico|favicon\\.svg|site\\.webmanifest)\",\n    \"headers\": [{ \"key\": \"Cache-Control\", \"value\": \"public, max-age=86400\" }]\n  }]\n}","heading":"Vercel static assets and cache policy","intro":"The framework should emit these public files before vercel.json applies response headers. Exclude them from catch-all rewrites so the CDN caches image bytes rather than an application page.","language":"json","tree":"public/\n\u251c\u2500\u2500 favicon.svg\n\u251c\u2500\u2500 favicon.ico\n\u251c\u2500\u2500 apple-touch-icon.png\n\u2514\u2500\u2500 site.webmanifest\nvercel.json"},"published":"2026-07-31","section_headings":["Project paths and constraints","Declare favicon metadata once","Build, deploy, and verify","Compare the immutable preview with the production alias"],"sources":[{"label":"Vercel static output primitives","url":"https://vercel.com/docs/build-output-api/primitives"},{"label":"Vercel CDN cache","url":"https://vercel.com/docs/caching/cdn-cache"}],"title":"Vercel Favicons: Static Files, Rewrites and CDN Cache","updated":"2026-07-31","url":"https://favicon.now/guides/vercel-favicon"}
