# `Events['ar:modes']`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Property of [`Events`](Events.md) · stable · since 2.0.0

```ts
'ar:modes': {
  readonly modes: InfoReport['ar']['modes'];
};
```

`info().ar.modes` or `fileModes` changed: 'webxr' joined once the probe answered after
[`boot`](boot.md), a commit gave or took the product's public plain twin ('scene-viewer'), a document
apply turned AR on or off, the platform's AR switch was read again, or AR crashed, was declined
or failed to load on this page. It also fires once when `info().ar.pending` turns false,
whether or not the modes changed. Read `info().ar.modes` and subscribe in the same task; this then
reports every later change (the WebXR Device API's 'devicechange').

## Fields

<a id="modes"></a>
### `modes`

```ts
readonly modes: InfoReport['ar']['modes'];
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `ar:modes` names no product |
| 2. A precedent | pass: [XRSystem.isSessionSupported()](https://developer.mozilla.org/en-US/docs/Web/API/XRSystem/isSessionSupported) (row `G61`) |
| 3. Two apps, or labs | pass: 21 apps (ledger: app-4fd23bc869, app-822bb9d6aa, app-8675b3225c, app-c1384707fc, app-e3b47169bc, app-e9a33606d2, app-f07e9033d9, app-f3598fad77 and 4 more; fleet cross-check: app-04c2774145, app-0c773a4ee3, app-37356bf09f, app-378d190f1b, app-4762caacdc, app-4fd23bc869, app-822bb9d6aa, app-8675b3225c and 13 more) |
| 4. The cheaper fix first | decided per need in Appendix B: rows `G61` at tier stable (a member only where no rule, data, asset or app code serves the need) |
