The bookmarklet is intentionally a thin loader: it injects a single script tag, which then renders the FoxChat UI inside a Shadow DOM. When something goes wrong, it is almost always one of five failures. Here they are with their fixes.
Symptom: you click the bookmarklet, nothing happens, and your browser console shows a CSP violation like Refused to load the script 'https://app.getfoxchat.com/bookmarklet-recorder.js' because it violates the following Content Security Policy directive: "script-src 'self'".
The fix: the host site's CSP forbids third-party script tags, and bookmarklets are subject to the host page's CSP just like any other inline script. Workarounds:
https://app.getfoxchat.com to your script-src directive. This unblocks the bookmarklet permanently for that site.Symptom: the FoxChat panel appears, but it looks broken — text is huge, colors are wrong, or the layout has collapsed.
The FoxChat panel renders inside a Shadow DOM root precisely to isolate its styles from the host page. In modern browsers this works automatically. In rare cases the issue is one of:
* { all: initial } reset that crosses Shadow DOM boundaries. Some legacy reset libraries do this. The fix is to refresh the page; FoxChat retries with a fallback style sheet on the second injection.!important rules target attributes the panel uses. If the host has div { font-size: 30px !important } with no scoping, that can leak into the Shadow DOM in older browsers. Workaround: open the bookmarklet on a different page on the same site (like the homepage or a logged-out marketing page) where the rule isn't applied.vw/vh sizing; if you're at 67% zoom or 200% zoom on a small screen, the panel can clip. Reset zoom to 100% with Ctrl+0.Symptom: the panel is open, you press Esc, nothing happens.
The most common cause is that the host page captures the keydown event in a global handler that calls preventDefault. Some custom video players and presentation tools do this for their own keyboard shortcuts. Workarounds:
F12) and run document.querySelector('foxchat-shadow-host')?.remove() in the console.If Esc consistently fails on a specific site, please report it — we maintain a per-site quirks list.
Symptom: the playback bookmarklet shows a step, you click Replay, the highlight does not re-animate.
This happens when the underlying element has been removed or recycled by the host page's framework between the time the step rendered and the time you clicked replay. Single-page apps that use virtual DOM diffing (React, Vue, Svelte) can swap out a button while leaving its visual position the same. Workaround:
Symptom: you try to drag the orange Record button from the bookmarklet page to your bookmarks bar, the cursor refuses to drop, or the drop creates a regular bookmark to the page itself instead of a javascript: URL.
Browser-specific causes:
javascript: URLs as drag targets if the bookmarks bar is in compact mode. Switch the bookmarks bar to expanded mode (View → Show Favorites Bar in expanded view).Ctrl+Shift+B first.Most users never hit any of these; the bookmarklet just works on most sites.
Start free trial