Nuxt
Integrate with a Nuxt 3 / Nuxt 4 app
Nuxt Integration
The Fitting Widget integrates seamlessly with Nuxt 3 and Nuxt 4.
1. Load the Script
Use the useHead composable, or add scripts to your nuxt.config.ts.
Option A — Per Page with useHead
<!-- pages/product/[slug].vue -->
<template>
<div>
<h1>{{ product.name }}</h1>
<TryOnWidget :product-name="product.name" :image-url="product.image" />
</div>
</template>
<script setup lang="ts">
import { useHead } from '#app'
useHead({
script: [
{
src: 'https://widget.try-on.ru/fitting-widget-bundle.js',
id: 'fitting-widget-bundle',
},
{
id: 'fitting-init',
innerHTML: `
window.fitting = window.fitting || function() {
(window.fitting.q = window.fitting.q || []).push(arguments);
};
window.fitting('init', {
apiKey: '${import.meta.env.VITE_TRY_ON_API_KEY}'
});
`,
},
],
})
</script>
Option B — Global in nuxt.config.ts
export default defineNuxtConfig({
app: {
head: {
script: [
{
src: 'https://widget.try-on.ru/fitting-widget-bundle.js',
id: 'fitting-widget-bundle',
},
{
id: 'fitting-init',
innerHTML: `
window.fitting = window.fitting || function() {
(window.fitting.q = window.fitting.q || []).push(arguments);
};
window.fitting('init', {
apiKey: '${import.meta.env.VITE_TRY_ON_API_KEY}'
});
`,
},
],
},
},
})
2. Create the Wrapper Component
<!-- components/TryOnWidget.vue -->
<template>
<div>
<div id="widget-container" class="aspect-[3/4] w-full max-w-[600px]" />
<button @click="handleTryOn">Try On</button>
</div>
</template>
<script setup lang="ts">
const props = defineProps<{
productName: string
imageUrl: string
}>()
const handleTryOn = () => {
window.fitting('create', {
targetElementId: 'widget-container',
model: 'balanced',
tryonItems: [
{
productName: props.productName,
url: props.imageUrl,
},
],
})
}
</script>
Environment Variable
Add to .env:
VITE_TRY_ON_API_KEY=pk_live_xxx