@nuxtjs/partytown

219,849
Install
npm install @nuxtjs/partytown
Latest Version:2.0.0
Vue:3
License:MIT
Last Updated:Oct 17, 2025
Links: npm
Maintainer: danielroe

@nuxtjs/partytown

npm version npm downloads Github Actions CI Codecov License

Partytown integration for Nuxt

Features

  • 👌 Zero-config required
  • 🔥 Relocates resource intensive scripts into a web worker
  • ⚡️ Speeds up your site
  • 💯 Nuxt 3 and Nuxt Bridge support

Quick setup

  1. Install @nuxtjs/partytown!

    npx nuxi@latest module add partytown
    
  2. Add it to the modules section of nuxt.config.ts

    export default defineNuxtConfig({
      modules: ['@nuxtjs/partytown'],
    })
    
  3. Add type: 'text/partytown' attribute to any scripts you want to be handled by partytown.

    <template>
      <div>
        <Script type="text/partytown" src="https://example.com/analytics.js" />
      </div>
    </template>
    

Configuration

Partytown supports a number of options, which you can pass in your nuxt.config.ts file:

export default defineNuxtConfig({
  // ...
  partytown: {
    /**
     * When `true`, Partytown scripts are not minified. See https://partytown.builder.io/configuration
     * on how to enable more logging.
     *
     * @default true in development
     */
    debug: boolean
    /**
     * Path (relative to your base URL) where the Partytown library should be served from.
     *
     * @default '~partytown'
     */
    lib: string
    // For other options, see https://partytown.builder.io/configuration
  },
})

Example Configurations

Crisp

export default defineNuxtConfig({
  modules: ['@nuxtjs/partytown'],
  partytown: {
    forward: ['$crisp', '$crisp.push'],
  },
  app: {
    head: {
      script: [
        // Insert your CRISP Script here e.g.:
        { innerHTML: 'window.$crisp = []; window.CRISP_WEBSITE_ID = "0000"' },
        { src: 'https://client.crisp.chat/l.js', async: true, type: 'text/partytown' },
      ],
    },
  },
})

Google Tag Manager

export default defineNuxtConfig({
  modules: ['@nuxtjs/partytown'],
  partytown: {
    forward: ['dataLayer.push'],
  },
  app: {
    head: {
      script: [
        // Insert your Google Tag Manager Script here
        { src: '-', async: true, type: 'text/partytown' },
      ],
    },
  },
})

Plausible Analytics

export default defineNuxtConfig({
  modules: ['@nuxtjs/partytown'],
  partytown: {
    forward: ['$plausible', '$plausible.push'],
  },
  app: {
    head: {
      script: [
        { innerHTML: 'window.$plausible = [];' },
        // Update this
        {
          src: 'https://plausible.io/js/script.js',
          defer: true,
          type: 'text/partytown',
          'data-domain': 'your-domains',
        },
      ],
    },
  },
})

Development

  • Run yarn prepare to generate type stubs.
  • Use yarn dev to start playground in development mode.

Licence

MIT Licence

Related Packages

@nuxtjs/i18n

Internationalization for Nuxt

23,877,608 2,085
@nuxtjs/color-mode

Dark and light mode for Nuxt with auto detection

20,659,199 1,228
@nuxtjs/tailwindcss

Tailwind CSS module for Nuxt

16,852,917 1,868
@nuxtjs/sitemap

Powerfully flexible XML Sitemaps that integrate seamlessly, for Nuxt.

8,341,086 441
@nuxtjs/mdc

Nuxt MDC module

7,786,445 400

Version History

Version Released Vue License
2.0.0 ^3.0 MIT
1.6.0 ^3.0 MIT
1.5.0 ^3.0 MIT
1.4.0 ^3.0 MIT
1.3.0 ^3.0 MIT