Compatibility
A realistic view of what works well, what is limited by browser rules, and where the extension model draws a clear line.
Supported pages
- Normal
http://andhttps://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.jsfile.
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://is not opened or controlled as a target by RTO Original. A local file may only be a user-opened controller/master page in advanced local workflows.view-source:and manydata:/blob:contexts remain browser-restricted. - 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 thattabKey.PROTECTED_ELEMENT: RTO blocks touching its own UI / protected nodes.BACKGROUND_NO_RESPONSEor repeated timeouts: extension reload, Chrome MV3 service worker wake-up, or the tab is not injectable/eligible.
Browser packaging note: RTO v8.5.0 uses a persistent Firefox background for fast startup and Chrome MV3 packaging for Chromium browsers. On Chrome, service worker wake-up can make the first request slower. Use reasonable
timeoutMs and retry patterns.
SPAs & dynamic pages
Single Page Apps often change content without a full navigation. Recommended patterns:
- Always
waitForSelectorbefore interacting (click/setValue/getText). - Increase
timeoutMson 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.