---
title: 'Install Unhead Schema.org with Solid.js'
description: 'Get started with Unhead Schema.org in your Solid.js project.'
navigation:
title: 'Installation'
---
## Setup
1. Install `@unhead/schema-org` dependency to your project:
::code-group
```bash [yarn]
yarn add -D @unhead/schema-org
```
```bash [npm]
npm install -D @unhead/schema-org
```
```bash [pnpm]
pnpm add -D @unhead/schema-org
```
::
2. Setup with Solid.js
Import and use Schema.org with Solid.js:
```tsx
import { SchemaOrgUnheadPlugin, useSchemaOrg } from '@unhead/schema-org'
import { createHead, UnheadContext } from '@unhead/solid-js'
import { render } from 'solid-js/web'
import App from './App'
// Create the head instance with the Schema.org plugin
const head = createHead({
plugins: [
SchemaOrgUnheadPlugin({
// Configure Schema.org params
host: 'https://example.com',
// ... other options
}),
]
})
// Provide it via context
render(() => (
), document.getElementById('root'))
```
3. Add Schema.org nodes in your components:
```tsx
import { defineWebPage, defineWebSite, useSchemaOrg } from '@unhead/schema-org'
function SiteSchema() {
// Add Schema.org structured data
useSchemaOrg([
// Define identity (Organization or Person)
defineWebSite({
name: 'My Awesome Website',
}),
defineWebPage(),
])
return null
}
// Use it in your App
function App() {
return (
<>
{/* Rest of your app */}
>
)
}
```
## Schema.org Configuration Options
At a minimum you should provide a [host](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls) in your Schema.org configuration.
Here's a more complete example:
```tsx
const head = createHead({
plugins: [
SchemaOrgUnheadPlugin({
// Base URL for your site (required)
host: 'https://example.com',
// Default language
defaultLanguage: 'en',
// Organization or Person identity
identity: {
type: 'Organization',
name: 'My Company',
logo: 'https://example.com/logo.png',
},
// Enable debug mode for development
debug: process.env.NODE_ENV !== 'production',
}),
]
})
```
See the [Schema.org Params](/docs/schema-org/guides/core-concepts/params) for all available options.
## Recommended: Tree-shaking for SSR
If you're using Vite SSR with Solid.js, it's highly recommended to add the [Unhead tree-shaking plugin](/docs/head/guides/advanced/vite-plugin):
```ts [vite.config.ts]
import UnheadVite from '@unhead/addons/vite'
import { defineConfig } from 'vite'
import solidPlugin from 'vite-plugin-solid'
export default defineConfig({
plugins: [
solidPlugin(),
UnheadVite(),
]
})
```
This will remove the `@unhead/schema-org` dependency from your client bundle, and only include it in your server bundle.
## Optional: Auto-Imports
If you're using Vite with [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import), you can configure automatic imports for Schema.org composables:
```ts [vite.config.ts]
import { schemaAutoImports } from '@unhead/schema-org'
import AutoImport from 'unplugin-auto-import/vite'
import { defineConfig } from 'vite'
import solidPlugin from 'vite-plugin-solid'
export default defineConfig({
plugins: [
solidPlugin(),
AutoImport({
imports: [
// Auto-import Schema.org composables
{
'@unhead/schema-org': schemaAutoImports,
},
],
}),
]
})
```
## Using Schema.org with Reactivity
You can leverage Solid.js's reactivity system with Schema.org:
```tsx
import { defineArticle, useSchemaOrg } from '@unhead/schema-org'
import { createResource, createSignal } from 'solid-js'
async function fetchArticleData(id) {
const response = await fetch(`/api/article/${id}`)
return response.json()
}
function ArticleSchema(props) {
const [article] = createResource(() => props.id, fetchArticleData)
useSchemaOrg(() => [
defineArticle({
headline: article()?.title || 'Loading...',
description: article()?.summary || '',
image: article()?.featuredImage || '',
datePublished: article()?.publishDate || new Date().toISOString(),
author: {
name: article()?.author?.name || 'Anonymous',
}
})
])
return null
}
```
## Next Steps
Your Solid.js app is now serving basic Schema.org structured data, congrats! 🎉
The next steps are:
1. Choose an [Identity](/docs/schema-org/guides/recipes/identity)
2. Set up your pages for [Schema.org structures](/docs/schema-org/guides/core-concepts/nodes)
3. Then follow some recipes:
- [Breadcrumbs](/docs/schema-org/guides/recipes/breadcrumbs)
- [FAQ Page](/docs/schema-org/guides/recipes/faq)
- [Site Search](/docs/schema-org/guides/recipes/site-search)