---
title: Options
description: Everything init() and the Nuni component accept.
sidebar:
  order: 1
---

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

const instance = init({
  project: "nuni_...", // required
})
instance.destroy()
```

| Prop | Type | Default | Description |
| - | - | - | - |
| `project` | `string` | - | Your public project ID. Commit it; it is not a secret. |
| `getPageKey?` | `(url: URL) => string` | - | Which URLs share comments. Defaults to the normalized path. |
| `convexUrl?` | `string` | - | Self-hosting or local development: the Convex deployment URL. |
| `convexSiteUrl?` | `string` | - | Self-hosting or local development: the Convex HTTP actions URL. |
| `appUrl?` | `string` | - | Self-hosting or local development: where the dashboard is served. |

`<Nuni />` from `@nuniapp/react` takes the same props.

## Keyboard

| Key | Action |
| --- | --- |
| <kbd>C</kbd> | Start or stop adding a comment |
| <kbd>Esc</kbd> | Cancel, close the comment, then the panel |
| <kbd>Cmd</kbd> + <kbd>Enter</kbd> | Post the comment |
