# react-schemaorg

> Typed Schema.org JSON-LD in React

Latest version **2.0.1** (published 2026-02-19) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install react-schemaorg
pnpm add react-schemaorg
yarn add react-schemaorg
bun add react-schemaorg
```

## Health

**Score 55/100 (C)** — status: stable.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2026-02-19 |
| First published | 2019-02-05 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=12.0.0 |
| Dependencies | 0 |
| Unpacked size | 24 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 521 |
| Maintainers | google-wombot |
| Keywords | react, jsonld, JSON-LD, typescript, schema.org, Semantic Web, semantic-web, Linked Data, linked-data, react-helmet, helmet, script, seo |

## Links

- npm: https://www.npmjs.com/package/react-schemaorg
- Repository: https://github.com/google/react-schemaorg
- Homepage: https://github.com/google/react-schemaorg#readme
- Issues: https://github.com/google/react-schemaorg/issues
- npm.io page: https://npm.io/package/react-schemaorg

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 2.0.1 (latest) — 2026-02-19
- 2.0.0 — 2021-07-19
- 1.3.3 — 2021-06-02
- 1.3.2 — 2021-06-02
- 1.3.1 — 2020-12-04
- 1.3.0 — 2020-11-25
- 1.2.0 — 2020-07-20
- 1.1.0 — 2020-06-19
- 1.0.2 — 2020-05-11
- 1.0.1 — 2020-03-17
- 1.0.0 — 2019-05-22
- 0.1.0 — 2019-02-05

## README

[![react-schemaorg npm version](https://badge.fury.io/js/react-schemaorg.svg)](https://www.npmjs.com/package/react-schemaorg) [![Node.js CI](https://github.com/google/react-schemaorg/actions/workflows/ci.yml/badge.svg)](https://github.com/google/react-schemaorg/actions/workflows/ci.yml) [![Coverage Status](https://coveralls.io/repos/github/google/react-schemaorg/badge.svg?branch=master)](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 `<JsonLd>` for plain React apps, and `helmetJsonLdProp()`
for use with [`<Helmet>`](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 (
    <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:

```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).

---
_Source: https://npm.io/package/react-schemaorg · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
