SEO, out of the box.
Built on next-seo. 17 JSON-LD components, dynamic sitemap, robots.txt, manifest, and a dynamic OpenGraph image route — all pre-wired with our site config.
17
JSON-LD components
4
native route files (sitemap, robots, manifest, og)
100%
of public pages have meta + JSON-LD
Every component
Click any card to see the live JSON-LD emitted on this page.
import { createMetadata } from "@/lib/seo";
export const metadata = createMetadata({
title: "Components",
description: "Browse 30+ shadcn-grade UI primitives.",
path: "/components",
});Emitted in app/layout.tsx (site-wide).
<OrganizationJsonLd />Live on this page ↓
<WebSiteJsonLd />Live on this page ↓
<SoftwareApplicationJsonLd />Live on this page ↓
<BreadcrumbJsonLd
items={[
{ name: "Home", url: "/" },
{ name: "Templates", url: "/templates" },
{ name: "SaaS landing", url: "/templates/saas-landing" },
]}
/>Live on this page ↓
<ProductJsonLd
name="Button"
description="6 variants × 4 sizes, asChild via Radix Slot."
url="/components#button"
category="UI primitive"
offers={{ price: "0", priceCurrency: "USD" }}
rating={{ value: 4.9, count: 127 }}
/>Live on this page ↓
<ItemListJsonLd
name="JSN UI Components"
items={[
{ name: "Button", url: "/components#button" },
{ name: "Card", url: "/components#card" },
{ name: "Dialog", url: "/components#dialog" },
]}
/>Live on this page ↓
<FAQJsonLd
questions={[
{ question: "What is JSN UI?", answer: "..." },
{ question: "Is it free?", answer: "..." },
]}
/>Live on this page ↓
<HowToJsonLd
name="Install JSN UI in 30 seconds"
description="Three commands and you're shipping."
steps={[
{ name: "Initialize", text: "Run npx jsn-ui init my-app" },
{ name: "Add a component", text: "Run npx jsn-ui add button" },
{ name: "Use it", text: "Import Button from @/components/ui/button" },
]}
/>Live on this page ↓
<CourseJsonLd
name="Building AI products with JSN UI"
description="A hands-on tutorial series."
url="/learn/ai-products"
isFree
/>Live on this page ↓
<EventJsonLd
name="JSN UI launch week"
description="Live walkthrough + AMA with the team."
startDate="2026-07-01T18:00:00Z"
endDate="2026-07-08T18:00:00Z"
location="Online"
url="/events/launch-week"
/>Live on this page ↓
<ArticleJsonLd
headline="Ship AI products in an afternoon"
description="A practical guide to the JSN UI kit."
url="/blog/ship-ai-products"
author="JSN UI team"
datePublished="2026-06-21"
/>Live on this page ↓
<VideoJsonLd
name="JSN UI in 60 seconds"
description="A quick tour through the kit."
thumbnailUrl="https://jsn-ui.vercel.app/og"
contentUrl="https://cdn.jsn-ui.com/intro.mp4"
uploadDate="2026-06-21"
duration="PT1M"
/>Live on this page ↓
<ProfilePageJsonLd
name="Mira Okafor"
description="Designer & developer making AI products feel human."
url="/templates/portfolio"
jobTitle="Designer & Developer"
worksFor="Okafor Studio"
sameAs={["https://twitter.com/mira"]}
/>Live on this page ↓
<LocalBusinessJsonLd
name="Okafor Studio"
description="Independent design studio in Lisbon."
url="/contact"
address={{ city: "Lisbon", country: "PT" }}
openingHours={["Mo-Fr 09:00-18:00"]}
/>Live on this page ↓
<DatasetJsonLd
name="JSN UI registry"
description="The full set of 76 components, blocks, and tools."
url="/registry"
license="MIT"
keywords={["shadcn", "react", "next", "ui-kit"]}
/>Live on this page ↓
Native Next.js route files
/sitemap.tsDynamic XML sitemap from the registry
/robots.tsrobots.txt with AI bot rules
/manifest.tsPWA manifest with theme colors
/og/route.tsxDynamic 1200×630 OpenGraph image
FAQ
What is next-seo and why does JSN UI use it?
next-seo by garmeeh is the de-facto SEO library for Next.js (8.5k+ stars). It provides JSON-LD components for every Google Search supported structured data type. JSN UI wraps each one for the App Router and ships them pre-wired with the site config.
Does this work with the Next.js App Router?
Yes. JSN UI's SEO components emit <script type="application/ld+json"> tags, which work in both Pages and App Router. The page metadata uses Next.js's built-in generateMetadata factory createMetadata().
Will Google actually use this?
Yes. JSON-LD is the format Google recommends for structured data. We emit all 17 types in the correct shape — verified against schema.org and Google Search Central docs.
Do I need a Google Search Console account?
Not to use these tools, but to see how Google indexes your site. Submit your sitemap.xml there after deploying.
Is the dynamic OG image free?
Yes. /og runs on Vercel's Edge Runtime with next/og and no extra cost beyond the standard Vercel plan.