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.
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.
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.
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.
| Iframe | Bundled | Webview | |
|---|---|---|---|
| Loads a URL | Yes | No | Yes |
| Ships local files | No | Yes | No |
| SDK access | No | Yes | Yes |
| Best for | Embedding existing sites | Custom-built tools | Hosted 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.