# Iris.update

> Changes widget options after Iris.init. Today it changes only launcher.

```ts
Iris.update(options: { launcher?: boolean }): void
```

## Usage

Hide the launcher on a page where it covers your own UI. Show it again on other pages.

```js title="checkout.js"
// Checkout page: hide the launcher
Iris.update({ launcher: false });

// Other pages: show it again
Iris.update({ launcher: true });
```

## Init or update

[`Iris.init`](/reference/init/) starts the widget once, with every option. `Iris.update` changes an option while the widget runs, with no reload. Call `Iris.init` first: `Iris.update` before it changes nothing.

## Options

| Name | Type | Required | Default | Description | Example |
| --- | --- | --- | --- | --- | --- |
| `launcher` | `boolean` | No | `true` | Shows the launcher. Pass `false` to hide it and open the widget from your own button with [`data-iris-open`](/guides/open-from-a-link/) or `Iris.open()`. To change it later, call [`Iris.update`](/reference/update/). | `launcher: false` |

## Console warnings

| Message | What happened | Fix |
| --- | --- | --- |
| `Iris: <method> ran before Iris.init, so nothing changed.` | `identify`, `logout` or `update` ran before `Iris.init`. After an early `identify`, the contact stays anonymous. | Call `Iris.init({ appId })` first. Calls made before `iris.js` loads wait in a queue, in order. |
| `Iris: update ignored <option>, because update changes only launcher.` | `Iris.update` got an option other than `launcher`. Iris applied `launcher` and ignored the rest. | Pass that option to `Iris.init`. |
