Compatibility

What RTO can control, and common browser limitations.
Docs updated: 2026-03-24

Supported pages

  • Normal http:// and https:// pages in a regular browser tab.
  • Hosts that are on the allow-list (this is the main safety boundary).
  • Top-frame only: the admin-page bridge runs only in the tab’s top frame. Iframes may exist, but RTO will not operate inside them.
  • The site docs/examples work with individual helpers, helper packs, or the bundled RTO.min.js file.
Top-frame only (important)
RTO intentionally ignores messages from iframes (including embedded login widgets and some CAPTCHAs). If the element you want is inside an iframe, the command won’t reach it.

Common unsupported pages

  • Browser internal pages: chrome://, edge://, about:, moz-extension://, settings pages, extension pages, etc.
  • Store pages that block extension scripts (ex: Chrome Web Store, some addon galleries).
  • Special schemes / sandboxed contexts: file:// (unless permission is granted), view-source:, many data:/blob: contexts (depends on browser policy).
  • Tabs where the extension cannot run (example: Incognito without permission, restricted profiles, enterprise policy blocks).
Typical symptoms and what they mean
  • DOMAIN_NOT_ALLOWED: host not in allow-list.
  • NO_CONTROLLED_TAB: no tab is currently adopted/controlled for that tabKey.
  • PROTECTED_ELEMENT: RTO blocks touching its own UI / protected nodes.
  • BACKGROUND_NO_RESPONSE or repeated timeouts: MV3 service worker slept/reloaded, or the tab is not injectable/eligible.
MV3 note: the background is a service worker and may suspend. When it wakes up, the first request can be slower. Use reasonable timeoutMs and retry patterns.

SPAs & dynamic pages

Single Page Apps often change content without a full navigation. Recommended patterns:

  • Always waitForSelector before interacting (click/setValue/getText).
  • Increase timeoutMs on slow sites and after logins.
  • Prefer stable selectors: [data-test], [data-testid], fixed IDs, or semantic anchors.
  • Expect “URL changed but DOM not ready” moments; treat navigation and readiness as separate steps.

Next