Extensions

Extensions are the tile content of a GM screen. Every tile displays one extension — whether it’s a dice roller, a character sheet, an initiative tracker, or a tool you built yourself. Extensions are built with HTML, CSS, and JavaScript.

Three extension types

Iframe

Loads a URL in a standard HTML iframe. Use this when you want to embed an existing website and don’t need to communicate with other extensions.

No SDK access — the extension is isolated from Overseer’s event system.

Good for: reference wikis, embedded video players, character builders, any site with a useful URL.

Bundled

Ships HTML, CSS, and JavaScript files with your plugin. Your files load directly in the tile. This is how you build custom tools — a stat block viewer, a custom initiative tracker, a homebrew encounter generator.

Has full SDK access: import from @overseer-studio/sdk to send and receive events.

Good for: custom tools you write yourself, anything that doesn’t exist as a hosted website.

Webview

Loads an external URL with SDK access. Use this when you need an existing hosted site to communicate with other extensions in Overseer.

Webview also supports injecting JavaScript into third-party pages via injectJavaScript in the manifest — Overseer prompts the user to grant permission before the script runs.

Good for: hosted tools that need app integration, external sites you want to extend with events.

Choosing a type

IframeBundledWebview
Loads a URLYesNoYes
Ships local filesNoYesNo
SDK accessNoYesYes
Best forEmbedding existing sitesCustom-built toolsHosted sites needing integration

If you’re not sure, start with iframe for embedded sites or bundled for custom-built tools. Both are straightforward and can be changed later.

Next steps