Loading...

How to define metadata in a client component in Nextjs?

question nextjs react
Ram Patra Published on November 17, 2024

Nextjs does not allow defining the metadata object in client components. There are a couple of ways to resolve this problem. I will be talking about two of them here.

In case you aren’t aware of this, the new metadata object looks like below:

import type { Metadata } from "next";

export const metadata: Metadata = {
  title: "",
  description: "",
};

Now, the most obvious way would be to extract the code that needs client components and put it another file. This way you can remove the "use client" from your page.tsx file and put it in your new file where you have the extracted code.

But if you’re not willing to do this for whatever reason, an easier way would be to just place a simple layout.tsx file in the same directory as your page.tsx.

I am sharing a sample layout.tsx file from one of my projects:

import type { Metadata } from "next";


export const metadata: Metadata = {
  title: "Black Friday Deals 2024 - macOS apps",
  description: "A directory of macOS apps that are free or 50% off for a limited time.",
};

export default function BfdLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <>
      {children}
    </>
  )
}

The above approach doesn’t need you to modify your page.tsx.

Presentify

Take your presentation to the next level.

FaceScreen

Put your face and name on your screen.

KeyScreen

Show keypresses on your screen.

ToDoBar

Your to-dos on your menu bar.

SimpleFill

Fill forms using your right-click menu.

IconSim

Preview your Mac app icons.

Ram Patra Published on November 17, 2024
Image placeholder

Keep reading

If this article was helpful, others might be too

question nextjs react February 9, 2024 How to make an HTML button element behave like a Link component in Next.js?

In Next.js, you can use the Link component from next/link to create client-side navigation. However, if you want to use an HTML button element (<button>) to behave like a link, you can wrap it with the Link component. Here’s how you can do it:

question nextjs react July 9, 2024 How to define an enum in Typescript and use it in a Next.js app?

Creating an enum in TypeScript within a Next.js project is straightforward. Enums in TypeScript allow you to define a set of named constants that can be used to represent a collection of related values. Here’s how you can create and use an enum in a Next.js application:

question nextjs front-end November 12, 2024 How to define schemas, foreign keys, relations, and query data by performing joins in a Nextjs app using Supabase and Drizzle?

Drizzle is an ORM that makes it easy to work with db, data migrations, etc. Here’s how you can define foreign keys, relations, and perform table joins using Drizzle ORM in a Next.js app with Supabase:

Like my work?

Please, feel free to reach out. I would be more than happy to chat.