Table of Contents
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.
Quick Steps
- Create a folder with at least:
manifest.json(id, name, version, description, manifestVersion, minSupVersion)plugin.js(runs on load; can register header buttons, shortcuts, hooks), orindex.htmlfor an iframe-only plugin
- Add
index.htmland setiFrame: truein the manifest for custom iframe UI. If all behavior lives inindex.html,plugin.jscan be omitted. - Package the files as a ZIP with
manifest.jsonat its root. - In the app, open Settings → Plugins → Choose Plugin File and select the ZIP.
- Use DevTools (F12 or Ctrl+Shift+I) to debug.
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.
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.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.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.