Bird
Raised Fist0
NextJSframework~3 mins

Why Metadata API (static metadata) in NextJS? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

Discover how a simple metadata object can save hours of repetitive coding and boost your site's visibility!

The Scenario

Imagine manually adding meta tags like title, description, and social previews to every page in your Next.js app by editing HTML files or components one by one.

The Problem

This manual approach is repetitive, easy to forget, and inconsistent across pages. It slows development and can cause SEO or sharing issues if metadata is missing or incorrect.

The Solution

The Metadata API in Next.js lets you define static metadata in one place per page or layout, automatically generating the right tags for SEO and social sharing without repetitive code.

Before vs After
✗ Before
import Head from 'next/head';

export default function Page() {
  return <><Head><title>Home</title><meta name="description" content="Welcome" /></Head><main>...</main></>;
}
✓ After
export const metadata = { title: 'Home', description: 'Welcome' };
export default function Page() { return <main>...</main>; }
What It Enables

This makes your app more consistent, easier to maintain, and improves SEO and social previews effortlessly.

Real Life Example

A blog site where each post automatically gets correct titles and descriptions for search engines and social media previews without extra code in every post component.

Key Takeaways

Manual metadata is repetitive and error-prone.

Next.js Metadata API centralizes static metadata per page.

Improves SEO, sharing, and developer experience.

Practice

(1/5)
1. What is the primary purpose of exporting a metadata object in a Next.js page or layout?
easy
A. To provide static information like title and description for SEO and social sharing
B. To define dynamic routes for the page
C. To handle user authentication on the page
D. To style the page with CSS variables

Solution

  1. Step 1: Understand the role of metadata in Next.js

    The metadata object is used to add static information such as page title and description.
  2. Step 2: Connect metadata to SEO and social sharing

    This information helps search engines and social media platforms display the page correctly.
  3. Final Answer:

    To provide static information like title and description for SEO and social sharing -> Option A
  4. Quick Check:

    Metadata = SEO info [OK]
Hint: Metadata sets page info for SEO and sharing [OK]
Common Mistakes:
  • Confusing metadata with routing or styling
  • Thinking metadata handles user login
  • Assuming metadata is dynamic by default
2. Which of the following is the correct way to export static metadata in a Next.js page?
easy
A. export default { metadata: { title: 'Home' } }
B. export function metadata() { return { title: 'Home' } }
C. export const metadata = { title: 'Home' }
D. const metadata = { title: 'Home' }; export metadata

Solution

  1. Step 1: Recall the syntax for static metadata export

    Next.js expects a named export called metadata as an object.
  2. Step 2: Check each option's syntax

    export const metadata = { title: 'Home' } correctly exports a constant object named metadata. The other options use incorrect export forms or syntax.
  3. Final Answer:

    export const metadata = { title: 'Home' } -> Option C
  4. Quick Check:

    Named export of object = export const metadata = { title: 'Home' } [OK]
Hint: Use named export const metadata = {...} [OK]
Common Mistakes:
  • Using default export instead of named export
  • Exporting a function instead of an object
  • Incorrect export syntax causing errors
3. Given this metadata export in a Next.js page:
export const metadata = { title: 'About Us', description: 'Learn about our team' }

What will be the page's title shown in the browser tab?
medium
A. About Us
B. Learn about our team
C. metadata
D. No title will be shown

Solution

  1. Step 1: Identify the title property in metadata

    The metadata object has a title set to 'About Us'.
  2. Step 2: Understand how Next.js uses metadata

    Next.js uses the title property to set the browser tab's page title.
  3. Final Answer:

    About Us -> Option A
  4. Quick Check:

    Page title = metadata.title [OK]
Hint: Page title comes from metadata.title [OK]
Common Mistakes:
  • Confusing description with title
  • Expecting metadata object name as title
  • Assuming no title is set without explicit <title> tag
4. You wrote this metadata export:
export const metadata = { title: 'Contact', description: Contact us page }

Why does this cause an error?
medium
A. export keyword is not allowed here
B. Missing quotes around the description string
C. title property cannot be 'Contact'
D. metadata must be a function, not an object

Solution

  1. Step 1: Check the syntax of the description value

    The description value is written without quotes, which is invalid for strings in JavaScript.
  2. Step 2: Understand JavaScript string syntax

    Strings must be enclosed in quotes (' or ") to be valid. Missing quotes cause a syntax error.
  3. Final Answer:

    Missing quotes around the description string -> Option B
  4. Quick Check:

    Strings need quotes [OK]
Hint: Always quote string values in metadata [OK]
Common Mistakes:
  • Forgetting quotes around strings
  • Thinking metadata must be a function
  • Misplacing export keyword
5. You want to add static metadata with a title, description, and open graph image to a Next.js layout. Which is the correct way to include all these in the metadata export?
hard
A. export const metadata = { title: 'Blog', description: 'Latest posts', openGraph: { images: { src: '/blog.png' } } }
B. export const metadata = { title: 'Blog', description: 'Latest posts', openGraph: '/blog.png' }
C. export const metadata = { title: 'Blog', description: 'Latest posts', openGraph: { image: '/blog.png' } }
D. export const metadata = { title: 'Blog', description: 'Latest posts', openGraph: { images: [{ url: '/blog.png' }] } }

Solution

  1. Step 1: Understand openGraph image format in Next.js metadata

    The openGraph images property expects an array of objects with a url key.
  2. Step 2: Check each option's openGraph structure

    export const metadata = { title: 'Blog', description: 'Latest posts', openGraph: { images: [{ url: '/blog.png' }] } } correctly uses an array with an object containing url. The other options use incorrect formats.
  3. Final Answer:

    export const metadata = { title: 'Blog', description: 'Latest posts', openGraph: { images: [{ url: '/blog.png' }] } } -> Option D
  4. Quick Check:

    openGraph images = array of {url} objects [OK]
Hint: Use array of objects with url for openGraph images [OK]
Common Mistakes:
  • Using string instead of array for images
  • Using wrong property name like image instead of images
  • Not wrapping image url in an object
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