How to set metadata to page.tsx rendered as client components?
The
export const metadata
syntax seems to not work ifpage.tsx
is a client component. How do I set my page title and other metadata then?
The metadata
, generateMetadata
, viewport
and generateViewport
exports are only supported in server components. Hence, you need to make your page a server component to use them. A method to do that is to move all your client-side logic to a separate client component and import that client component to the now-server component page.tsx
. So instead of
you need to make a new client component, say page.client.tsx
, and import it to page.tsx
:
How do I set dynamic metadata that depends on client-side states?
Just put <title>
, <meta>
and metadata <link>
tags anywhere in your component tree, including inside client components. React will automatically detect this and put those tags in <head>
for you.