---
title: Any JavaScript app
description: Use init() from @nuniapp/widget in Vue, Nuxt, Svelte, SvelteKit, Astro, Angular or plain bundled JavaScript.
sidebar:
  order: 2
---

```bash
npm install @nuniapp/widget@latest
```

```ts
import { init } from "@nuniapp/widget"

const nuni = init({ project: "nuni_..." })
// later, if you ever need to: nuni.destroy()
```

Call `init` once, on the client. Calling it again with the same project does nothing.

**Vue**

```ts src/main.ts
import { init } from "@nuniapp/widget"

createApp(App).mount("#app")
init({ project: "nuni_..." })
```

**Nuxt**

```ts plugins/nuni.client.ts
import { init } from "@nuniapp/widget"

export default defineNuxtPlugin(() => {
  init({ project: "nuni_..." })
})
```

**SvelteKit**

```svelte src/routes/+layout.svelte
<script>
  import { onMount } from "svelte"
  import { init } from "@nuniapp/widget"

  onMount(() => init({ project: "nuni_..." }).destroy)
</script>

<slot />
```

**Astro**

```astro src/layouts/Layout.astro
<script>
  import { init } from "@nuniapp/widget"
  init({ project: "nuni_..." })
</script>
```
