Skip to content

google/react-schemaorg

react-schemaorg npm version Node.js CI Coverage Status

react-schemaorg

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.

Usage

Install react-schemaorg and your desired version of schema-dts:

npm install schema-dts npm install react-schemaorg

Plain React Usage

To 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"], }} /> ); }

Directly creating <script> tags (for next/head and elsewhere)

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> ); }

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"], }), ]} />;

Developers

Use NPM to install dependencies:

npm install

Use tsc to build:

tsc

To contribute changes, see the CONTRIBUTING.md file.

About

Type-checked Schema.org JSON-LD for React

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 5