Develop a Plugin
How to create and test a custom plugin for Super Productivity.
Plugins extend the app with custom UI, hooks (e.g. on task complete), and API access to tasks, projects, and counters. Plugins are executable code and are not strongly sandboxed from the app. Only install or develop from sources you trust. See 2.21-Manage-Plugins for the user-facing trust model.
Build One with an AI Chat
No coding setup needed: open Help → Build your own plugin (or Settings → Plugins → Build one with AI).
- Describe what the plugin should do and copy the generated prompt into an AI chat.
- Paste the AI's whole answer back. The app packs and installs it after the usual install warning.
- If it fails to load, Copy error for your AI gives the chat what it needs to fix it; paste the fixed answer to replace the plugin.
Quick Steps
- Copy the plugin starter
to a folder of your own (its README has the commands). It contains:
manifest.json(id, name, version, description, manifestVersion, minSupVersion)plugin.js(runs on load; can register header buttons, shortcuts, hooks)
- Set a unique
idandnameinmanifest.jsonand editplugin.js. For custom iframe UI, addindex.htmland setiFrame: truein the manifest. If all behavior lives inindex.html,plugin.jscan be omitted. - Run
node scripts/pack.mjsto package the files asplugin.zipwithmanifest.jsonat its root. - In the app, open Settings → Plugins → Choose Plugin File and
select the ZIP. Uploading again with the same
idreplaces the plugin. - Use DevTools (F12 or Ctrl+Shift+I) to debug.
Test on a separate instance, not your real data, for example test-app.super-productivity.com.
Security
Host-side plugin.js code runs in the app renderer, not in a security sandbox.
Iframe plugins use a filtered API as their intended interface, but they are
same-origin with the host and that interface is not a hard security boundary.
Desktop plugins requesting nodeExecution can run native code only after an
explicit native consent dialog; granting it gives the plugin full access
under your user account.
Read the full guide's Security Considerations before distributing a plugin.
Full Documentation and Examples
The full plugin guide and API live in the repository:
It covers:
- Manifest fields, plugin types (JavaScript vs iframe), and security
- Available API methods (tasks, projects, tags, counters, notifications, dialogs)
- Theme variables and UI Kit for iframe plugins
- Best practices and testing
Example plugins in the repo: packages/plugin-dev/yesterday-tasks-plugin, procrastination-buster, api-test-plugin. For UI-heavy plugins: packages/plugin-dev/boilerplate-solid-js. TypeScript API types: packages/plugin-api/src/types.ts, published on npm as @super-productivity/plugin-api.
Related
1.00-Quickstarts
2.00-How_To
Using Super-Productivity
- 2.01-Downloads and Install
- 2.02-Restore-Data-From-Backup
- 2.03-Add-Tasks
- 2.04-Manage-Subtasks
- 2.05-Manage-Scheduled-Tasks
- 2.06-Manage-Repeating-Tasks
- 2.07-Manage-Task-Integrations
- 2.24-Set-Up-CalDAV
- 2.08-Choose-Sync-Backend
- 2.09-Configure-Sync-Backend
- 2.19-Sync-Proton-Drive-via-rclone
- 2.20-Import-from-Todoist
- 2.21-Manage-Plugins
- 2.22-Import-from-TickTick
- 2.23-Connect-an-AI-Assistant
- 2.13-Run-with-Docker
Contributing to Super-Productivity
- 2.18-Contribute-Translations
- 2.11-Run-the-Development-Server
- 2.16-Set-Up-Development-Environment
- 2.12-Package-the-App
- 2.14-Build-for-Android
- 2.15-Develop-a-Plugin
- 2.17-Add-a-New-Issue-Integration
3.00-Reference
- 3.01-API
- 3.02-Settings-and-Preferences
- 3.03-Keyboard-Shortcuts
- 3.04-Short-Syntax
- 3.05-Web-App-vs-Desktop
- 3.06-User-Data
- 3.07-Issue-Integration-Comparison
- 3.08-Sync-Integration-Comparison
- 3.09-Theming
4.00-Concepts
Data-and-Integrations
Organizing
- 4.06-Project-View
- 4.07-Tag-View
- 4.08-Time-Estimates
- 4.09-Task-Attributes
- 4.10-Task-Notes
- 4.11-Subtasks
Planning
Doing
- 4.01-The-Today-View
- 4.02-Inbox-View
- 4.05-Board-View
- 4.14-How-Time-Is-Logged
- 4.15-Timers-and-Focus-Mode
- 4.16-Break-Reminders
- 4.17-Idle-Time
- 4.08-Time-Estimates
Reviewing
If you have further questions, please refer to the discussions page.