Bird
Raised Fist0
NextJSframework~5 mins

Public directory for static files in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the public directory in a Next.js project?
The public directory holds static files like images, icons, and other assets that can be accessed directly by the browser via a URL path starting with /. It is used to serve files without processing by Next.js.
Click to reveal answer
beginner
How do you reference an image stored in the public directory inside a Next.js component?
You reference it by using the root-relative path starting with /. For example, if the image is at public/logo.png, use <img src="/logo.png" alt="Logo" />.
Click to reveal answer
intermediate
Can files inside the public directory be processed by Next.js (like transpiled or bundled)?
No, files in the public directory are served as-is without any processing or bundling by Next.js. They are static assets accessible directly by URL.
Click to reveal answer
intermediate
Why should you use the public directory for static assets instead of importing them in Next.js components?
Using the public directory is best for assets that do not need to be bundled or optimized by Next.js, such as favicon, robots.txt, or large media files. Importing assets triggers bundling and optimization, which is better for smaller or dynamic assets.
Click to reveal answer
beginner
What URL path would you use to access a file named robots.txt placed inside the public directory?
You would access it directly at /robots.txt in the browser, because files in public map to the root URL path.
Click to reveal answer
Where should you place a static image file to serve it directly in Next.js?
AInside the <code>pages</code> directory
BInside the <code>public</code> directory
CInside the <code>components</code> directory
DInside the <code>api</code> directory
How do you reference a file named banner.jpg stored in public/images inside an <img> tag?
A<code>&lt;img src="/images/banner.jpg" /&gt;</code>
B<code>&lt;img src="./images/banner.jpg" /&gt;</code>
C<code>&lt;img src="images/banner.jpg" /&gt;</code>
D<code>&lt;img src="../images/banner.jpg" /&gt;</code>
Which statement is true about files in the public directory?
AThey are bundled and optimized by Next.js
BThey cannot be accessed by URL
CThey are served as static files without processing
DThey must be imported in components to be used
If you want to serve a favicon.ico file, where should you place it in a Next.js project?
AIn the <code>pages/api</code> directory
BIn the <code>styles</code> directory
CIn the <code>components</code> directory
DIn the <code>public</code> directory
What URL path accesses public/robots.txt in a Next.js app?
A/robots.txt
B/public/robots.txt
C/static/robots.txt
D/assets/robots.txt
Explain how the public directory works in Next.js and how you use it to serve static files.
Think about how you would show an image or favicon without bundling.
You got /4 concepts.
    Describe when and why you would choose to put files in the public directory instead of importing them in Next.js.
    Consider file size and processing needs.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the public directory in a Next.js project?
      easy
      A. To keep React components for rendering
      B. To hold server-side API route files
      C. To store static files like images and icons accessible via URL paths
      D. To store environment configuration files

      Solution

      1. Step 1: Understand the role of the public directory

        The public folder is designed to hold static files such as images, icons, and documents.
      2. Step 2: Recognize how files in public are accessed

        Files inside public are accessible directly via URL paths starting with /.
      3. Final Answer:

        To store static files like images and icons accessible via URL paths -> Option C
      4. Quick Check:

        public folder = static files access [OK]
      Hint: Remember: public folder serves static files directly via URLs [OK]
      Common Mistakes:
      • Confusing public with components folder
      • Thinking public holds API routes
      • Assuming public stores config files
      2. Which of the following is the correct way to reference an image named logo.png stored inside the public folder in a Next.js component?
      easy
      A. <img src="/logo.png" alt="Logo" />
      B. <img src="../public/logo.png" alt="Logo" />
      C. <img src="./logo.png" alt="Logo" />
      D. <img src="public/logo.png" alt="Logo" />

      Solution

      1. Step 1: Understand URL referencing for public files

        Files in the public folder are referenced by their path starting with /, without including the folder name.
      2. Step 2: Apply correct src attribute

        To reference logo.png in public, use /logo.png as the src value.
      3. Final Answer:

        <img src="/logo.png" alt="Logo" /> -> Option A
      4. Quick Check:

        Use leading slash and omit 'public' folder name [OK]
      Hint: Use src starting with '/' and omit 'public' folder name [OK]
      Common Mistakes:
      • Including 'public' in the path
      • Using relative paths like './' or '../'
      • Forgetting the leading slash
      3. Given the following Next.js component code, what will be the rendered image URL in the browser?
      export default function Logo() {
        return <img src="/images/avatar.png" alt="User Avatar" />
      }

      Assuming avatar.png is located inside public/images folder.
      medium
      A. http://localhost:3000/src/images/avatar.png
      B. http://localhost:3000/public/images/avatar.png
      C. http://localhost:3000/avatar.png
      D. http://localhost:3000/images/avatar.png

      Solution

      1. Step 1: Understand public folder URL mapping

        Files inside public are served from the root URL path, so /images/avatar.png maps to public/images/avatar.png.
      2. Step 2: Determine the full URL

        When running locally, the base URL is http://localhost:3000, so the full URL is http://localhost:3000/images/avatar.png.
      3. Final Answer:

        http://localhost:3000/images/avatar.png -> Option D
      4. Quick Check:

        public/images/avatar.png = /images/avatar.png URL [OK]
      Hint: Files in public map directly to root URL paths [OK]
      Common Mistakes:
      • Adding 'public' to URL path
      • Using relative or src folder paths
      • Confusing file location with URL
      4. You added a file favicon.ico inside the public folder but your browser shows a 404 error when accessing /favicon.ico. What is the most likely cause?
      medium
      A. The file is inside a subfolder of public but URL does not include it
      B. The file name is misspelled or has wrong extension
      C. Next.js requires importing favicon in _app.js to serve it
      D. You need to restart the Next.js server after adding files to public

      Solution

      1. Step 1: Check file location and URL path

        If the file is directly inside public, accessing /favicon.ico should work unless the file name or extension is incorrect.
      2. Step 2: Verify file name and extension

        A common cause of 404 is a misspelled file name or wrong extension like favicon.ico.png or fav-icon.ico.
      3. Final Answer:

        The file name is misspelled or has wrong extension -> Option B
      4. Quick Check:

        Check exact file name and extension for 404 errors [OK]
      Hint: Check exact file name and extension if 404 occurs [OK]
      Common Mistakes:
      • Assuming Next.js needs imports for public files
      • Forgetting to include subfolder in URL
      • Restarting server unnecessarily
      5. You want to serve a PDF file named guide.pdf stored in public/docs so users can download it by clicking a link. Which is the correct way to create the link in a Next.js component?
      hard
      A. <a href="/docs/guide.pdf" download>Download Guide</a>
      B. <a href="docs/guide.pdf" download>Download Guide</a>
      C. <Link href="/docs/guide.pdf">Download Guide</Link>
      D. <a href="/public/docs/guide.pdf" download>Download Guide</a>

      Solution

      1. Step 1: Reference public files with leading slash and no 'public' folder name

        Files inside public are accessed by URL paths starting with / and omit the public folder name.
      2. Step 2: Use anchor tag with download attribute for file download

        To allow users to download the PDF, use an <a> tag with href="/docs/guide.pdf" and the download attribute.
      3. Final Answer:

        <a href="/docs/guide.pdf" download>Download Guide</a> -> Option A
      4. Quick Check:

        Use leading slash and download attribute on anchor tag [OK]
      Hint: Use <a> with href starting '/' and download attribute [OK]
      Common Mistakes:
      • Omitting leading slash in href
      • Including 'public' in URL path
      • Using Next.js Link for static file downloads
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard