Easily insert valid Schema.org JSON-LD in your React apps.
This library provides <JsonLd> for plain React apps, and helmetJsonLdProp()
for use with <Helmet>.
Uses schema-dts for Schema.org TypeScript definitions.
Note: This is not an officially supported Google product.
Install react-schemaorg and
your desired version of
schema-dts:
npm install schema-dts
npm install react-schemaorgTo insert a simple JSON-LD snippet:
import { Person } from "schema-dts";
import { JsonLd } from "react-schemaorg";
export function GraceHopper() {
return (
<JsonLd<Person>
item={{
"@context": "https://schema.org",
"@type": "Person",
name: "Grace Hopper",
alternateName: "Grace Brewster Murray Hopper",
alumniOf: {
"@type": "CollegeOrUniversity",
name: ["Yale University", "Vassar College"],
},
knowsAbout: ["Compilers", "Computer Science"],
}}
/>
);
}Certain <head> management libraries require <script> tags to be directly
included, rather than wrapped in a component. This includes NextJS's
next/head, and react-helmet. With these, we can use the jsonLdScriptProps
export to do the same thing:
import { Person } from "schema-dts";
import { jsonLdScriptProps } from "react-schemaorg";
import Head from "next/head";
export default function MyPage() {
return (
<Head>
<script
{...jsonLdScriptProps<Person>({
"@context": "https://schema.org",
"@type": "Person",
name: "Grace Hopper",
alternateName: "Grace Brewster Murray Hopper",
alumniOf: {
"@type": "CollegeOrUniversity",
name: ["Yale University", "Vassar College"],
},
knowsAbout: ["Compilers", "Computer Science"],
})}
/>
</Head>
);
}React Helmet Usage
To set JSON-LD in React Helmet, you need to pass it to the script={[...]} prop
array in the Helmet component:
import { Person } from "schema-dts";
import { helmetJsonLdProp } from "react-schemaorg";
import { Helmet } from "react-helmet";
<Helmet
script={[
helmetJsonLdProp<Person>({
"@context": "https://schema.org",
"@type": "Person",
name: "Grace Hopper",
alternateName: "Grace Brewster Murray Hopper",
alumniOf: {
"@type": "CollegeOrUniversity",
name: ["Yale University", "Vassar College"],
},
knowsAbout: ["Compilers", "Computer Science"],
}),
]}
/>;Use NPM to install dependencies:
npm installUse tsc to build:
tscTo contribute changes, see the CONTRIBUTING.md file.