Bird
Raised Fist0
NextJSframework~5 mins

GenerateMetadata for dynamic metadata in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of generateMetadata in Next.js?
It is a special function used to create dynamic metadata like page titles and descriptions based on data or route parameters.
Click to reveal answer
intermediate
How does generateMetadata improve SEO in Next.js apps?
By generating metadata dynamically, it helps search engines see relevant titles and descriptions for each page, improving search ranking and user experience.
Click to reveal answer
beginner
What type of data can generateMetadata use to create metadata?
It can use route parameters, fetched data, or any async data to customize metadata for each page.
Click to reveal answer
beginner
True or False: generateMetadata runs on the client side in Next.js.
False. It runs on the server side during rendering to provide metadata before the page loads.
Click to reveal answer
intermediate
What is the return type of generateMetadata in Next.js?
It returns an object containing metadata fields like title, description, and other SEO-related properties.
Click to reveal answer
Where does generateMetadata run in a Next.js app?
AOn the server during rendering
BIn the browser after page load
COnly during client-side navigation
DIn a separate metadata service
What can you use inside generateMetadata to customize metadata?
AOnly static strings
BRoute parameters and fetched data
CBrowser cookies
DClient-side events
Which of these is a valid return value from generateMetadata?
A{ title: 'Page Title', description: 'Page description' }
BA React component
CA string with HTML tags
DAn array of strings
Why is dynamic metadata important in Next.js?
AIt speeds up client-side rendering
BIt replaces CSS styling
CIt helps search engines understand each page better
DIt caches pages on the client
Can generateMetadata be asynchronous?
AOnly in development mode
BNo, it must be synchronous
COnly if using client-side hooks
DYes, it can fetch data asynchronously
Explain how generateMetadata works in Next.js and why it is useful.
Think about when and where metadata is created and how it helps search engines.
You got /4 concepts.
    Describe a simple example of using generateMetadata to set a dynamic page title.
    Imagine a blog post page where the title changes based on the post ID.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the generateMetadata function in Next.js?
      easy
      A. To fetch data on the client after page load
      B. To handle client-side routing between pages
      C. To create dynamic page titles and descriptions before rendering
      D. To style components dynamically using CSS

      Solution

      1. Step 1: Understand the role of generateMetadata

        This function runs on the server before the page renders to set metadata dynamically.
      2. Step 2: Identify its main use

        It is used to create dynamic page titles and descriptions for SEO and relevant info.
      3. Final Answer:

        To create dynamic page titles and descriptions before rendering -> Option C
      4. Quick Check:

        Dynamic metadata = To create dynamic page titles and descriptions before rendering [OK]
      Hint: Remember: generateMetadata sets SEO info before page loads [OK]
      Common Mistakes:
      • Confusing generateMetadata with client-side data fetching
      • Thinking it handles routing or styling
      • Assuming it runs on the client
      2. Which of the following is the correct syntax to export a generateMetadata function in a Next.js page?
      easy
      A. export const generateMetadata = () => { document.title = 'Page' }
      B. export async function generateMetadata() { return { title: 'Page' } }
      C. function generateMetadata() { console.log('metadata') } export generateMetadata
      D. export default function generateMetadata() { return Page }

      Solution

      1. Step 1: Recall correct export syntax

        Next.js expects generateMetadata as an exported async function returning an object with metadata.
      2. Step 2: Check each option

        export async function generateMetadata() { return { title: 'Page' } } correctly exports an async function returning an object with a title property.
      3. Final Answer:

        export async function generateMetadata() { return { title: 'Page' } } -> Option B
      4. Quick Check:

        Correct export syntax = export async function generateMetadata() { return { title: 'Page' } } [OK]
      Hint: Use async function returning object for generateMetadata [OK]
      Common Mistakes:
      • Using default export instead of named export
      • Returning JSX instead of an object
      • Trying to set document.title inside generateMetadata
      3. Given this generateMetadata function, what will be the page title?
      export async function generateMetadata({ params }) {
        return { title: `User: ${params.username}` };
      }

      And the URL is /user/jane.
      medium
      A. User: jane
      B. User: params.username
      C. User: undefined
      D. User: /user/jane

      Solution

      1. Step 1: Understand parameter usage

        The function receives params with username from the URL segment.
      2. Step 2: Substitute params.username with actual value

        Since URL is /user/jane, params.username is 'jane', so title becomes 'User: jane'.
      3. Final Answer:

        User: jane -> Option A
      4. Quick Check:

        Dynamic title uses params.username = User: jane [OK]
      Hint: URL params fill template strings in generateMetadata [OK]
      Common Mistakes:
      • Using literal string 'params.username' instead of value
      • Assuming params is undefined without route setup
      • Confusing URL path with metadata title
      4. What is wrong with this generateMetadata function?
      export function generateMetadata() {
        return { title: 'Home' }
        console.log('Metadata generated')
      }
      medium
      A. generateMetadata cannot be a named export
      B. The function must be async to work
      C. The return value must be a string, not an object
      D. The console.log runs after return and is unreachable

      Solution

      1. Step 1: Analyze function flow

        The return statement ends the function immediately, so code after it won't run.
      2. Step 2: Identify unreachable code

        The console.log after return is unreachable and will never execute.
      3. Final Answer:

        The console.log runs after return and is unreachable -> Option D
      4. Quick Check:

        Code after return is unreachable = The console.log runs after return and is unreachable [OK]
      Hint: Code after return is ignored, place logs before return [OK]
      Common Mistakes:
      • Thinking function must be async always
      • Expecting return to accept strings only
      • Confusing export types
      5. You want to create dynamic metadata for a blog post page that shows the post title and author. Which generateMetadata implementation correctly handles this using params and fetch to get post data asynchronously?
      hard
      A. export async function generateMetadata({ params }) { const post = await fetch(`/api/posts/${params.id}`).then(res => res.json()); return { title: post.title, description: `By ${post.author}` }; }
      B. export function generateMetadata({ params }) { const post = fetch(`/api/posts/${params.id}`).then(res => res.json()); return { title: post.title, description: `By ${post.author}` }; }
      C. export async function generateMetadata() { const post = await fetch('/api/posts').then(res => res.json()); return { title: post.title, description: post.author }; }
      D. export async function generateMetadata({ params }) { return { title: params.title, description: params.author }; }

      Solution

      1. Step 1: Identify async data fetching

        To get post data dynamically, generateMetadata must be async and await the fetch call.
      2. Step 2: Check usage of params and fetch

        export async function generateMetadata({ params }) { const post = await fetch(`/api/posts/${params.id}`).then(res => res.json()); return { title: post.title, description: `By ${post.author}` }; } correctly awaits fetch with params.id and returns metadata using fetched data.
      3. Final Answer:

        export async function generateMetadata({ params }) { const post = await fetch(`/api/posts/${params.id}`).then(res => res.json()); return { title: post.title, description: `By ${post.author}` }; } -> Option A
      4. Quick Check:

        Async fetch with params used correctly = export async function generateMetadata({ params }) { const post = await fetch(`/api/posts/${params.id}`).then(res => res.json()); return { title: post.title, description: `By ${post.author}` }; } [OK]
      Hint: Use async/await with params to fetch dynamic metadata [OK]
      Common Mistakes:
      • Not awaiting fetch causing unresolved promises
      • Ignoring params and fetching all posts
      • Returning params directly without fetching data
      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