---
title: "useScript · Nuxt Scripts"
meta:
  description: "Nuxt Scripts lets you load third-party scripts with better performance, privacy, security and DX. It includes many popular third-parties out of the box."
  "og:description": "Nuxt Scripts lets you load third-party scripts with better performance, privacy, security and DX. It includes many popular third-parties out of the box."
  "og:title": "useScript · Nuxt Scripts"
---

```

Nuxt Scripts on GitHub

**

**Api**

# **useScript**

[Copy for LLMs](https://scripts.nuxt.com/docs/v0/api/use-script.md)

This composable is a wrapper around the Unhead [**~~useScript~~**](https://unhead.unjs.io/usage/composables/use-script) with extra Nuxt goodies on top, for full documentation please refer to this.

## Signature

```
export function useScript<T extends Record<string | symbol, any>>(input: UseScriptInput, options?: NuxtUseScriptOptions): T & { $script: Promise<T> & VueScriptInstance<T> } {}
```## Arguments ### `UseScriptInput` This is the script tag input. For example, you can pass a URL string or an object with the script tag attributes.```
export type UseScriptInput = string | {
  src?: string
  async?: boolean
  defer?: boolean
  type?: string
  integrity?: string
  crossorigin?: string
  text?: string
  innerHTML?: string
  innerText?: string
  content?: string
  referrerPolicy?: string
  attributes?: Record<string, string>
}
``` See the [**~~Script Input~~**](https://unhead.unjs.io/usage/composables/use-script#argument-script-options) documentation for more information on the options. ### `NuxtUseScriptOptions` See the [**~~Script Options~~**](https://unhead.unjs.io/usage/composables/use-script#argument-use-script-options) documentation for more information on the options. - `use` - The function to resolve the script. - `trigger` - [**~~Triggering Script Loading~~**](https://scripts.nuxt.com/docs/guides/script-triggers) - `bundle` - [**~~Bundling Remote Scripts~~**](https://scripts.nuxt.com/docs/guides/bundling) for more information.```
export type NuxtUseScriptOptions<T = any> = Omit<UseScriptOptions<T>, 'trigger'> & {
  /**
   * The trigger to load the script:
   * - \`onNuxtReady\` - Load the script when Nuxt is ready.
   * - \`manual\` - Load the script manually by calling \`load()\`
   * - \`Promise\` - Load the script when the promise resolves.
   */
  trigger?: UseScriptOptions<T>['trigger'] | 'onNuxtReady'
  /**
   * Should the script be bundled as an asset and loaded from your server. This is useful for improving the
   * performance by avoiding the extra DNS lookup and reducing the number of requests. It also
   * improves privacy by not sharing the user's IP address with third-party servers.
   * - \`true\` - Bundle the script as an asset.
   * - \`false\` - Do not bundle the script. (default)
   */
  bundle?: boolean
  /**
   * Skip any schema validation for the script input. This is useful for loading the script stubs for development without
   * loading the actual script and not getting warnings.
   */
  skipValidation?: boolean
}
```## Return See the [**~~Understanding proxied functions~~**](https://scripts.nuxt.com/docs/guides/key-concepts) and [**~~$script~~**](https://unhead.unjs.io/usage/composables/use-script#argument-use-script-options) documentation for more information on the return. [~~Edit this page~~](https://github.com/nuxt/scripts/edit/0.x/docs/content/docs/v0/3.api/1.use-script.md) [~~Markdown For LLMs~~](https://scripts.nuxt.com/docs/v0/api/use-script.md) [**Facade Components** Facade Components are fake UI elements that get replaced once a third-party script loads.](https://scripts.nuxt.com/docs/v0/guides/facade-components) [**useScriptTriggerConsent** API documentation for the useScriptTriggerConsent function.](https://scripts.nuxt.com/docs/v0/api/use-script-trigger-consent)**On this page **- [Signature](#signature) - [Arguments](#arguments) - [Return](#return)