v0.10.0 Release Notes
nuxt-x-restaurants v0.10.0 — Stable
Released: 2026-07-11
First stable release. Quality gates green, ~85% composable statement coverage, caret peer ranges, OG image generation disabled.
Highlights
- Typecheck clean (strict TS fixes across filters, hours, pages, sitemap)
- Full Vitest coverage of 11 composables via
#importsmocks ogImage.enabled: false— no@takumi-rs/corenoiseserver/shipped in packagefilesfor sitemap URL source
Upgrade from 0.9.x
- Bump to
@xenterprises/nuxt-x-restaurants@^0.10.0 - Ensure peers:
@nuxt/ui,@nuxt/content,@nuxtjs/seo,@xenterprises/nuxt-x-marketing,@xenterprises/nuxt-x-cardssatisfy caret ranges - Run
nuxi typecheckin the consumer app
nuxt-x-restaurants v0.9.0 — Schema & meta consolidation
Released: 2026-06-28
A focused polish release that adds the useSchema composable family and migrates all 22 pages from hand-rolled useHead({ script: [{ type: 'application/ld+json', ... }] }) boilerplate to composable calls. No new components, no new pages — purely an internal refactor that makes future sites consistent out of the box.
Why this release
Before v0.9.0, every page that needed SEO had a 15-20 line useHead(...) block with hand-written JSON-LD inline. The same pattern repeated across 22 pages, and the boilerplate grew with each new feature. This release consolidates it into one composable per schema shape.
What's new
useSchema composable family
| Composable | Emits | Drives |
|---|---|---|
useArticleSchema(input) | BlogPosting with author + publisher + dates | Article rich results |
useReviewSchema(input) | Review + Rating block | Per-review SERP snippets |
useProductSchema(input) | Product + AggregateRating + Offer | Star SERPs (Yelp's pattern) |
useBreadcrumbSchema(input) | BreadcrumbList | Breadcrumb SERPs |
useItemListSchema(input) | ItemList (top 50) | Carousel / sitelinks SERPs |
useSiteMeta(input) | <title>, <meta>, OG, Twitter Card, canonical, robots | Standard meta tags |
All composables read site identity from appConfig.xRestaurants.name and appConfig.xSchema.siteUrl automatically. Pattern adapted from nuxt-x-affiliate/app/composables/useSchema.ts.
useSiteMeta consolidates the meta boilerplate
Before:
useHead(computed(() => ({
title: `About Us — ${siteName.value}`,
meta: [
{ name: 'description', content: '...' },
{ property: 'og:type', content: 'website' },
{ property: 'og:title', content: `About Us — ${siteName.value}` },
{ property: 'og:description', content: '...' },
...(siteUrl.value ? [{ property: 'og:url', content: `${siteUrl.value}/about` }] : []),
{ property: 'og:site_name', content: siteName.value },
{ name: 'twitter:card', content: 'summary_large_image' },
{ name: 'twitter:title', content: `About Us — ${siteName.value}` },
{ name: 'twitter:description', content: '...' },
],
})))
After:
useSiteMeta({
title: `About Us — ${siteName.value}`,
description: '...',
path: '/about',
})
Migration
npm install @xenterprises/nuxt-x-restaurants@0.9.0
No breaking changes. If you've written your own pages with hand-rolled useHead, you can opt-in to the composables at your own pace — the old pattern still works. For new pages, prefer useSiteMeta + the relevant schema composables.
Pages migrated (22 total)
articles/[...slug].vue,articles/index.vue—useArticleSchema+useBreadcrumbSchema+useSiteMetafeatures/[...slug].vue,features/index.vue—useArticleSchema+useBreadcrumbSchema+useSiteMetacuisines/[slug].vue,neighborhoods/[slug].vue—useItemListSchema+useSiteMetacuisines/index.vue,neighborhoods/index.vue—useSiteMetarestaurants/[slug].vue+ sub-routes —useSiteMetarestaurants/index.vue,popular/index.vue,index.vue,about.vue,contact.vue,list-restaurant.vue,sitemap.vue,terms.vue,privacy.vue—useSiteMeta
Future work (deferred)
useReviewSchema+useProductSchemaare exported but not yet wired into any page — they'll plug into the restaurant profile page when review aggregate data becomes available.- ~48
as anycasts throughout the layer (mostlyxRestaurants/xMarketingnamespace access). Documented as deliberate pattern.
Upgrading
npm install @xenterprises/nuxt-x-restaurants@0.9.0
No breaking changes. All existing pages continue to work.
Roadmap
Full roadmap at tasks/yelp-roadmap.md.
Full changelog
See CHANGELOG.md.
AI Context
release: v0.9.0
package: "@xenterprises/nuxt-x-restaurants"
released: 2026-06-28
breaking-changes: none
major-features:
- useArticleSchema composable (BlogPosting JSON-LD)
- useReviewSchema composable (Review + Rating)
- useProductSchema composable (Product + AggregateRating + Offer)
- useBreadcrumbSchema composable (BreadcrumbList)
- useItemListSchema composable (ItemList, top 50)
- useSiteMeta composable (consolidated title + description + OG + Twitter Card + canonical + robots)
internal-refactor:
- 22 pages migrated from hand-rolled useHead + useSeoMeta + application/ld+json boilerplate to composable calls
- ~280 lines of duplicated SEO boilerplate removed
- Pattern adapted from nuxt-x-affiliate/app/composables/useSchema.ts
nuxt-x-restaurants
Restaurant directory Nuxt layer — 55 components for listing, filtering, and profile pages, 11 composables for API integration, filtering, analytics, schema.org JSON-LD, and menu cards, plus 25 auto-registered routes.
Cuisines Index (`/cuisines`)
Landing page that lists every cuisine available in the directory with restaurant counts.
