feat(announcements): add SEO metadata via server layout.tsx
The announcements page is a public, crawlable route but its page.tsx is
'use client', so it can't export metadata itself and falls back to the
root app/layout.tsx. Add a server-component layout.tsx under
app/(home)/announcements/ that exports route-specific metadata (title,
description, canonical, OpenGraph, Twitter) in the same shape as the
neighboring /blog, /changelog, /contact, /privacy, /terms routes.
page.tsx is unchanged.
Canonical URL matches app/layout.tsx's metadataBase
(https://surfsense.com).
Fixes #1244
2026-04-24 02:26:58 -07:00
|
|
|
import type { Metadata } from "next";
|
|
|
|
|
import type { ReactNode } from "react";
|
|
|
|
|
|
|
|
|
|
export const metadata: Metadata = {
|
|
|
|
|
title: "Announcements | SurfSense",
|
|
|
|
|
description: "Latest product updates, feature releases, and news from SurfSense.",
|
|
|
|
|
alternates: {
|
2026-05-15 12:35:15 -07:00
|
|
|
canonical: "https://www.surfsense.com/announcements",
|
feat(announcements): add SEO metadata via server layout.tsx
The announcements page is a public, crawlable route but its page.tsx is
'use client', so it can't export metadata itself and falls back to the
root app/layout.tsx. Add a server-component layout.tsx under
app/(home)/announcements/ that exports route-specific metadata (title,
description, canonical, OpenGraph, Twitter) in the same shape as the
neighboring /blog, /changelog, /contact, /privacy, /terms routes.
page.tsx is unchanged.
Canonical URL matches app/layout.tsx's metadataBase
(https://surfsense.com).
Fixes #1244
2026-04-24 02:26:58 -07:00
|
|
|
},
|
|
|
|
|
openGraph: {
|
|
|
|
|
title: "Announcements | SurfSense",
|
|
|
|
|
description: "Latest product updates, feature releases, and news from SurfSense.",
|
2026-05-15 12:35:15 -07:00
|
|
|
url: "https://www.surfsense.com/announcements",
|
feat(announcements): add SEO metadata via server layout.tsx
The announcements page is a public, crawlable route but its page.tsx is
'use client', so it can't export metadata itself and falls back to the
root app/layout.tsx. Add a server-component layout.tsx under
app/(home)/announcements/ that exports route-specific metadata (title,
description, canonical, OpenGraph, Twitter) in the same shape as the
neighboring /blog, /changelog, /contact, /privacy, /terms routes.
page.tsx is unchanged.
Canonical URL matches app/layout.tsx's metadataBase
(https://surfsense.com).
Fixes #1244
2026-04-24 02:26:58 -07:00
|
|
|
type: "website",
|
|
|
|
|
},
|
|
|
|
|
twitter: {
|
|
|
|
|
card: "summary_large_image",
|
|
|
|
|
title: "Announcements | SurfSense",
|
|
|
|
|
description: "Latest product updates, feature releases, and news from SurfSense.",
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default function AnnouncementsLayout({ children }: { children: ReactNode }) {
|
|
|
|
|
return <>{children}</>;
|
|
|
|
|
}
|