Docs · Help

Troubleshooting

The widget is small (under 40kb gzipped) and has very few moving parts. When it doesn't render, it's almost always one of these five things.

The bell isn't rendering

  1. Check the workspace slug. Open DevTools → Network → filter for widget/v1. A 404 on /widget/v1/<slug>/entries means the slug in data-workspace doesn't match any workspace.
  2. Check your Content-Security-Policy. The widget needs script-src to allow https://showkit.dev, and connect-src for the same origin. See CSP setup below.
  3. Check for ad-blockers. uBlock Origin with aggressive lists sometimes flags any third-party script tagged "widget." Confirm by disabling and reloading.
  4. Check the script is in the rendered HTML. View source (not the inspected DOM) and confirm the <script> tag is actually there. SSR frameworks sometimes strip unknown tags.
  5. Check the console. The widget logs a single warning if it can't initialize. The message will tell you exactly what's missing.

CSP setup

If your site uses a strict Content-Security-Policy, allow these origins:

script-src 'self' https://showkit.dev;
connect-src 'self' https://showkit.dev;
style-src 'self' 'unsafe-inline';

The widget renders into a Shadow DOM with its own <style> block, which is why style-src needs 'unsafe-inline' (Shadow-scoped, not page-scoped — it can't leak).

My styles are leaking into the widget

They shouldn't — everything renders inside a Shadow DOM with an isolated stylesheet. If you see your global CSS bleeding in, you're likely on a very old browser without Shadow DOM support (pre-2018). File an issue and tell us the browser.

Dark mode looks wrong

With data-theme="auto" (the default), the widget follows the browser's prefers-color-scheme. If your site has a manual theme toggle that diverges from that, force the widget to match by setting data-theme to light or dark explicitly — and update the attribute when the user toggles.

Still stuck?

Email hello@showkit.dev with your workspace slug and the URL where the embed should be loading. We'll dig in.