Component
Testimonial Schema
Emits individual schema.org Review nodes from studio testimonials. Headless — no AggregateRating by design.
Headless
TestimonialSchema — Review JSON-LD (no AggregateRating)
Emits individual Review nodes from studio testimonials. Intentionally skips AggregateRating (spam risk for self-published stars).
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Alex R.",
"jobTitle": "Founder",
"worksFor": {
"@type": "Organization",
"name": "Dev tools startup"
}
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"reviewBody": "Koustav shipped what would have taken me two months in a week. I talked to the person building i…",
"itemReviewed": {
"@type": "ProfessionalService",
"name": "Makershot"
}
},
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Priya M.",
"jobTitle": "Head of Product",
"worksFor": {
"@type": "Organization",
"name": "Legal tech"
}
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"reviewBody": "The AI feature actually fits our workflow — not a chatbot bolted on the side. Our ops team uses …",
"itemReviewed": {
"@type": "ProfessionalService",
"name": "Makershot"
}
}
]
}Full graph is injected on this page — sample above shows the shape.
Installation
import { TestimonialSchema } from "atroui"Usage
Place on pages where reviews should be eligible for rich results. Skips AggregateRating to avoid self-published star spam signals.
API Reference
| Prop | Type | Default | Description |
|---|---|---|---|
| pageUrl | string | site URL | Canonical URL for itemReviewed. |