Statics Assets in `public`
Last updated August 22, 2024
Next.js can serve static files, like images, under a folder called public in the root directory. Files inside public can then be referenced by your code starting from the base URL (/).
For example, if you add me.png inside public, the following code will access the image:
Avatar.js
import Image from 'next/image'
export function Avatar() {
return <Image src="/me.png" alt="me" width="64" height="64" />
}Caching
Next.js automatically adds caching headers to immutable assets in the public folder. The default caching headers applied are:
Cache-Control: public, max-age=31536000, immutableRobots, Favicons, and others
For static metadata files, such as robots.txt, favicon.ico, etc, you should use special metadata files inside the app folder.
Good to know:
- The directory must be named
public. The name cannot be changed and it's the only directory used to serve static assets.- Only assets that are in the
publicdirectory at build time will be served by Next.js. Files added at request time won't be available. We recommend using a third-party service like AWS S3 for persistent file storage.
Was this helpful?