https://github.com/google/react-schemaorg
Type-checked Schema.org JSON-LD for React
https://github.com/google/react-schemaorg
json-ld jsonld react schema-org schemaorg semantic-web typescript
Last synced: 11 months ago
JSON representation
Type-checked Schema.org JSON-LD for React
- Host: GitHub
- URL: https://github.com/google/react-schemaorg
- Owner: google
- License: apache-2.0
- Created: 2019-02-05T20:50:35.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2024-06-18T11:42:59.000Z (over 1 year ago)
- Last Synced: 2025-04-08T20:07:44.511Z (11 months ago)
- Topics: json-ld, jsonld, react, schema-org, schemaorg, semantic-web, typescript
- Language: TypeScript
- Homepage:
- Size: 579 KB
- Stars: 497
- Watchers: 4
- Forks: 19
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/react-schemaorg) [](https://github.com/google/react-schemaorg/actions/workflows/ci.yml) [](https://coveralls.io/github/google/react-schemaorg?branch=master)
# react-schemaorg
Easily insert valid Schema.org JSON-LD in your React apps.
This library provides `` for plain React apps, and `helmetJsonLdProp()`
for use with [``](https://github.com/nfl/react-helmet).
Uses [schema-dts](https://github.com/google/schema-dts) for Schema.org
TypeScript definitions.
Note: This is not an officially supported Google product.
## Usage
Install [`react-schemaorg`](https://www.npmjs.com/package/react-schemaorg) and
your desired version of
[`schema-dts`](https://www.npmjs.com/package/schema-dts):
```sh
npm install schema-dts
npm install react-schemaorg
```
### Plain React Usage
To insert a simple JSON-LD snippet:
```tsx
import { Person } from "schema-dts";
import { JsonLd } from "react-schemaorg";
export function GraceHopper() {
return (
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 `` 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:
```tsx
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](https://github.com/nfl/react-helmet) Usage
To set JSON-LD in React Helmet, you need to pass it to the `script={[...]}` prop
array in the `Helmet` component:
```tsx
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:
```sh
npm install
```
Use tsc to build:
```sh
tsc
```
To contribute changes, see [the CONTRIBUTING.md file](./CONTRIBUTING.md).