import {
mergeSEOConfig,
buildCanonicalUrl,
createArticleSchema,
createBreadcrumbSchema,
SEOHead,
JsonLd,
} from "react-ssr-seo";
import { siteConfig, SITE_URL } from "../config/seo";
// 1. Merge page config with site defaults
const pageConfig = mergeSEOConfig(siteConfig, {
title: "Understanding React Server Components",
description: "A deep dive into React Server Components...",
canonical: buildCanonicalUrl(SITE_URL, "/blog/react-server-components"),
openGraph: {
title: "Understanding React Server Components",
description: "A deep dive into RSC architecture.",
type: "article",
url: `${SITE_URL}/blog/react-server-components`,
images: [{
url: `${SITE_URL}/images/rsc.jpg`,
width: 1200,
height: 630,
alt: "React Server Components diagram",
}],
},
twitter: {
creator: "@janedoe",
image: `${SITE_URL}/images/rsc.jpg`,
},
});
// 2. Create structured data schemas
const articleSchema = createArticleSchema({
headline: "Understanding React Server Components",
url: `${SITE_URL}/blog/react-server-components`,
description: "A deep dive into RSC architecture.",
datePublished: "2025-06-15",
dateModified: "2025-07-01",
author: [
{ name: "Jane Doe", url: `${SITE_URL}/authors/jane` },
{ name: "John Smith" },
],
publisher: { name: "Acme Store", logo: `${SITE_URL}/logo.png` },
images: [`${SITE_URL}/images/rsc.jpg`],
section: "Technology",
keywords: ["React", "Server Components", "SSR", "RSC"],
});
const breadcrumb = createBreadcrumbSchema([
{ name: "Home", url: SITE_URL },
{ name: "Blog", url: `${SITE_URL}/blog` },
{ name: "React Server Components", url: `${SITE_URL}/blog/react-server-components` },
]);
// 3. Render in JSX
<head>
<SEOHead {...pageConfig} />
<JsonLd data={articleSchema} />
<JsonLd data={breadcrumb} />
</head>