The CMP boots **once** on the initial page load and persists across client-side
navigations — you don't re-run `init()` on every route change. The banner, the
stored decision, and every [bridge](/integrations/bridges/) stay live for the
lifetime of the app session.

- Install the [Quickstart](/quickstart/) snippet in your app shell / document
  `<head>`, exactly as for a static site.
- Read consent anywhere in app code via `LightningCMP.getConsent()` and react to
  changes with `LightningCMP.onConsentChange(fn)` — see the
  [JavaScript API](/api/javascript-api/).
- Open preferences from your own UI (e.g. a settings screen) with
  `LightningCMP.openPreferences()`.

:::note[More detail coming]
Framework-specific SPA notes are being migrated from `docs/INSTALL.md` §
_“Single-page apps & route changes.”_
:::