Table of Contents
- Web App Vs Desktop
- Features Unavailable or Restricted in the Web App
- Due Task Badge
- Plugin System
- Calendar Integration
- Local File System
- Time Tracking
- App Updates
- URL Scheme Actions
- Browser-Related Limitations
- Storage, Memory, and Performance
- File Size and Upload Limits (Sync)
- Time Tracking Button
- Offline and Background Processing
- Plugin and Integration Limitations (Web)
- Native Features Not Available in the Web App
- Spell Checking
- Platform-Specific Availability
- Task Completion on Touch Devices
- Side Navigation Menus on Touch Devices
- Receive Shared Links and Text on iOS
- Receive Shared Links and Text on Android
- Add a Task from the Android Home-Screen Widget
- Exact Reminder Timing on Android
- Donation and Contribution Links
- Documented Error Conditions (Web)
- Notes
Web App Vs Desktop
This reference enumerates functional differences and limitations of the web app compared with the desktop (Electron) app. Most limitations stem from browser security (CORS, CSP, sandboxing) rather than intentional feature removal.
When the web app is embedded in another Electron application, it retains web app capabilities and limitations. Desktop features require Super Productivity's own desktop app.
Features Unavailable or Restricted in the Web App
Due Task Badge
The desktop app can show a badge for incomplete tasks scheduled for today or earlier. Enable it in Miscellaneous settings; it is off by default. Windows uses a taskbar overlay, macOS uses a Dock badge, and Linux support depends on the launcher. The web app does not expose this native app-icon setting.
Plugin System
Plugins that require Node.js execution (elevated permissions) are disabled in the web version. When such a plugin is loaded, the app shows a disabled placeholder with an error stating the plugin requires the desktop version.
Listed community plugins install with one click in the desktop app. The web app links to their ZIP instead, which you then install by hand.
Plugins are not strongly sandboxed from the host app on either platform. See 2.21-Manage-Plugins before installing third-party code.
Calendar Integration
Calendar providers can be disabled for the web app or Android app via an isDisabledForWebApp flag to avoid CORS and WebView failures. When this flag is set and the app runs in a browser or Android WebView, calendar event requests return empty results instead of performing the HTTP request. The UI shows a prominent warning that calendar integration will likely not work in the browser or Android app and recommends downloading the desktop version.
Local File System
- Automatic backups to file system: Available only in Electron (desktop) and Android; not in the web browser.
- Local file sync: The web app cannot sync to local or network folders; that sync provider is not available in the browser.
Time Tracking
In the web version, time tracking only works while the app is open. Idle time tracking in the browser requires the Super Productivity Chrome Extension to be installed. Without the extension there is no idle detection, so a forgotten timer keeps running; while a task is tracked the browser tab title shows the time logged on it today and its name (for example 25m - Write report), which keeps a running timer visible from a background tab.
App Updates
The web app updates itself through its service worker and prompts for a reload when a new version is deployed. The desktop app instead checks the GitHub releases API once a day and shows a dismissible notice linking to the download page (configurable via the Misc setting "Automatically check for new versions"; not present on Microsoft Store, Mac App Store, or Snap builds, which update through their stores).
URL Scheme Actions
The create-task/complete-task URL scheme actions (see 3.01-API) rely on the app having a registered custom URL scheme, which Electron and the Capacitor iOS and Android builds have. Not available in the web (browser) build.
The same scheme also carries UI actions that just open something: add-task (the quick-add bar), today and inbox. On iOS and Android all three work, and both expose them as launcher shortcuts — long-press the app icon to get New Task, Today and Inbox (Home Screen quick actions on iOS, app shortcuts on Android 7.1 and later). On desktop all three are superproductivity:// actions, offered in the macOS Dock menu and the Windows jump list (installer version). The web app has no launcher shortcuts.
Browser-Related Limitations
CORS (Cross-Origin Resource Sharing)
WebDAV sync and calendar integration are likely to fail in the browser due to CORS. The app detects CORS-related failures and can show localized messages suggesting the user check server configuration. The desktop and mobile (iOS/Android) apps issue these requests through a native HTTP layer and are not subject to browser CORS; the web app is. This is why CalDAV calendar sync (e.g. with iCloud) works in the desktop and mobile apps but typically fails in the web app, where the server does not send the required CORS headers.
WebCrypto API
The web app depends on modern browser support for:
- Dropbox PKCE authentication: Requires
window.crypto.getRandomValuesandwindow.crypto.subtle.digest. - Secure context: WebCrypto (e.g.
crypto.subtle) is only available in secure contexts (HTTPS). The app shows alerts when WebCrypto is unavailable or when run over non-HTTPS.
Multi-Tab Instance Prevention
The web version uses BroadcastChannel to prevent multiple tabs from running the app at once. If another tab already has the app open, the new tab shows a blocker message asking the user to close one of the tabs.
Storage, Memory, and Performance
Browser Storage Persistence
The web app requests persistent storage from the browser. If the request is denied, the user sees a warning that data may be lost. Denial is surfaced via a snack notification.
Storage Quota Monitoring
The app uses the Storage API to estimate usage and quota. When available space falls to 333 MiB or less, the user is alerted that disk space is low and the app may be affected.
IndexedDB Quota Exceeded
When IndexedDB quota is exceeded, the app triggers emergency compaction with reduced retention (24 hours instead of 7 days) and uses a circuit breaker to avoid infinite retry loops.
Service Worker
The web app registers a Service Worker for offline caching (PWA). This is disabled for Electron and Android. Background behavior is limited to what the browser's Service Worker API allows.
File Size and Upload Limits (Sync)
These limits are enforced by the sync server; they affect web users who sync:
- Operation payloads: 20 MB maximum.
- Compressed operations: 10 MB maximum.
- Snapshots: 30 MB compressed, 100 MB decompressed.
- WebDAV: 10 MB maximum for XML responses; 100 MB maximum for file content.
Time Tracking Button
In mobile layouts, the header's play button uses a flat icon appearance when time tracking is inactive. While tracking, it shows a raised pause button. This applies to mobile browsers as well as the Android and iOS apps.
Offline and Background Processing
Background Throttling
The desktop app disables background throttling for its window. The web app is subject to the browser's background tab throttling, which can affect timer accuracy and background task execution when the tab is in the background.
In the web app, a browser notification when a Pomodoro session or break ends is opt-in (see 3.02-Settings-and-Preferences#focus-mode-this-device). The desktop app flashes its taskbar or dock icon instead, and Android posts its own notification. Because of background tab throttling, the notification can arrive up to about a minute late in a tab that has been hidden for a while.
On Android, a Focus session's foreground service keeps its timer and task time while the app is in the background. If a Pomodoro or Countdown session ends while the app is in the background, returning to the app records the task time up to the session end; a Pomodoro then starts its break. If time tracking continues during breaks, the time after the session end is recorded too. With manual break start, the session keeps running in overtime and records all of the background time. If Android recreates the app screen while that service is still running, the app restores the session and task time. This recovery does not cover Android terminating the entire app process.
Reminders Set on Another Device
On iOS, a reminder for a task you scheduled on another device only arrives once the iPhone or iPad app has synced that task, which happens when you open the app. The app schedules reminders as local notifications while it is running; there is no background sync on iOS. After the app has synced, the reminder is scheduled on the device and fires even if you close the app again. On Android with SuperSync, WebDAV or Nextcloud, a background worker picks up reminders from other devices without opening the app. It checks about every 15 minutes while the device is online, so a reminder due within that time may only show once you open the app. With WebDAV or Nextcloud this does not work when sync uses the split-file format. Each time another device has synced, the worker downloads the whole sync file, also on mobile data; sync files over 10 MB are skipped.
iOS lets an app keep 64 notifications waiting. The app sets your 60 soonest reminders, including those of repeating tasks up to 60 days ahead, and sets later ones when you start it or change a task; bringing it back to the front alone does not. If that leaves less than two weeks of reminders set, the app tells you once, and at most once a month.
Offline Support
The web app uses a Service Worker (production builds) to cache assets for limited offline use. Full offline behavior is more limited than on desktop and Android. The app shows an offline banner when the network is unavailable.
Plugin and Integration Limitations (Web)
Plugin API in Iframes
Iframe plugins receive a filtered window.PluginAPI object injected into index.html.
The iframe can use the injected task/project/tag APIs, dialog and notification APIs,
navigation helpers, persistence helpers, registration helpers, counters, and action
dispatch. APIs not injected into the iframe are unavailable, even if they exist on the
host-side plugin bridge.
executeNodeScript() is proxied through the host bridge for iframe plugins when
the desktop app grants the plugin nodeExecution permission. Both built-in and
uploaded plugins may request it. Uploaded plugins receive a native warning that
their identity is unverified and that granting access permits full machine
access.
Iframe Boundary
Iframe plugins use a supported bridge, but it is not a security boundary:
- The iframe includes
allow-same-origin, which is required for the packaged desktop UI. - Same-origin iframe code can reach the parent directly. The filtered Plugin
API
postMessagebridge is the intended interface, not enforced isolation. - Inline CSS, JavaScript, and small assets in
index.htmlfor portable iframe plugins. Arbitrary extra files from uploaded plugin ZIPs are not served to the iframe; external URLs depend on the app/runtime CSP.
Chrome Extension for Integrations
Jira integration and idle time tracking in the web version require the Super Productivity Chrome Extension to be installed.
For self-hosted Jira instances where the server is configured with appropriate CORS headers, the extension requirement can be bypassed: enable Fetch Jira directly from the browser (bypass extension) in the Jira advanced settings. When active, the app sends API requests directly from the browser instead of routing them through the extension. This option has no effect in the desktop app or on Android.
If the Jira API is reachable at a different host than the public issue links (e.g. an internal API endpoint vs. a public URL), set Alternative host for Jira links to the public host. That value is used only for constructing browser URLs in task details, not for API calls.
Native Features Not Available in the Web App
The web version does not have:
- Native file system access (open/save dialogs, automatic backups to disk).
- OS-level notifications (it uses the Web Notifications API instead).
- Window management (minimize to tray, global show/hide, custom title bar).
- System tray integration.
- Global keyboard shortcuts (only in-page shortcuts; desktop can register system-wide shortcuts).
Certain UI elements tied to these features are hidden in the web build via platform-specific CSS or logic.
Spell Checking
Spell checking (red underlines for misspelled words) is intentionally disabled in the desktop (Electron) app on every operating system. On Windows and Linux, Electron's spellchecker downloads Hunspell dictionaries from Google's CDN by default, which conflicts with the app's offline-first, zero-data-collection approach. On macOS, Electron uses the operating system's native spellchecker instead. The desktop app disables spell checking at startup on all platforms. The setting is reapplied on every launch, which is why editing Electron's internal Preferences file to re-enable it does not stick.
The web app is not affected: in the browser, the notes editor uses the browser's own spell checking. Task titles and other short inputs have spell checking turned off on all platforms, a deliberate choice — red squiggles in task titles were repeatedly reported as distracting (issues #2874 and #4040).
Re-enabling spell checking in the desktop app is not currently configurable. On Windows and Linux, avoiding Google's dictionary downloads would require shipping or self-hosting spellcheck dictionaries; macOS uses native spellchecking APIs. If spell checking matters to your workflow, please describe it in an issue.
Platform-Specific Availability
Task Completion on Touch Devices
On touch devices, the task context menu omits Mark as completed and Mark as not completed. Use the task's completion button to change its status.
Side Navigation Menus on Touch Devices
On touch devices, side navigation rows have no ⋮ button. Long-press a row
(a project, tag, folder, Today, Inbox, or a view such as Planner) to open the
menu that right-click opens elsewhere. Keyboard and screen-reader users can
still reach the ⋮ button: it shows while it has focus.
Receive Shared Links and Text on iOS
In the native iOS app, choose Super Productivity from another app's share sheet, review the link or text, and tap Save. Each share creates one new Inbox task when you next open Super Productivity. The supplied title is used when available; otherwise the title comes from the shared text. The complete shared content is stored in the task's notes. Task titles are limited to 300 characters and shared text to 100,000 characters.
Capture works offline. Pending shares stay on the device until imported; they sync as ordinary tasks after import. Photos and file attachments are not supported. This share extension is part of the native iOS app, not the web app.
Receive Shared Links and Text on Android
In the native Android app, choose Super Productivity from another app's share sheet. The share is saved at once and you stay in the app you shared from; a short "Saved to Super Productivity" notice confirms it. Each text or link share creates one new Inbox task the next time you open Super Productivity.
The shared subject or title is used as the task title when the sending app
provides one; otherwise a link becomes a readable form of its URL and plain
text uses its first line. Titles longer than 150 characters are shortened. The
title is stored literally: no short syntax in a shared page title, such as
#tag, @date or +project, is applied (see 3.04-Short-Syntax). A shared
link is attached to the task as a link attachment; shared text is stored in
the task's notes, up to 100,000 characters.
Capture works offline: shares stay on the device until imported, then sync as ordinary tasks. With SuperSync and Let AI assistants add tasks switched on (see 3.02-Settings-and-Preferences#supersync-ai-assistants), the phone also sends each share to the SuperSync server, encrypted on the phone so the server cannot read it. Your other devices then add the task on their next sync, even if the app never opened on the phone. An offline share is sent once the phone is back online, unless you open the app first, which then adds it itself; text longer than 8 KiB always waits for the app. Empty shares are ignored. Shared images and files are not supported. This share target is part of the native Android app, not the web app.
Add a Task from the Android Home-Screen Widget
Tap + in the header of the Super Productivity home-screen widget, type a
title and tap Add. The app does not open: the task appears at the top of
the widget right away and is added to Today the next time you open Super
Productivity. Until then, tapping it opens the app. Short syntax works as in
the app's add-task bar, so Call Anna @tomorrow +Work schedules the task and
moves it to the Work project (see 3.04-Short-Syntax); the widget shows the
title as typed until the app has applied it, and a task scheduled for another
day then leaves the Today list. Like shares, quick adds work offline and stay
on the device until imported.
Exact Reminder Timing on Android
On Android 12 and later, reminders fire on time only while Alarms & reminders is allowed for Super Productivity in the system settings. Android 14 and later turn it off by default for new installs. While it is off, reminders are still delivered but Android may delay them, and the schedule and deadline dialogs show a note with an Open settings button next to the reminder option. After you allow it, reminders that are already scheduled switch to exact timing without restarting the app.
Donation and Contribution Links
The Support Us page and links that can lead to GitHub Sponsors are unavailable in native iOS and macOS desktop builds. They remain available in the web app, native Android, Windows desktop, and Linux desktop builds.
Documented Error Conditions (Web)
- CORS errors: WebDAV (and similar) sync may report CORS failures with localized messages suggesting server configuration checks.
- WebCrypto unavailable: Dropbox OAuth and other crypto-dependent features show alerts when WebCrypto is missing or not in a secure context.
- Storage persistence denied: A snack notification warns when the browser denies the persistent storage request.
- Quota exceeded: The app handles multiple quota-exceeded variants (e.g. Firefox
NS_ERROR_DOM_QUOTA_REACHED, Safari code 22) and triggers emergency compaction.
Notes
- The project README describes the web version as "a bit limited" and recommends the desktop version for full functionality, especially for calendar, file system access, and plugin support.
- The Android app offers a "Connectivity-Free Mode" for fully offline use; the web app does not provide an equivalent.
- Some integration features in the browser depend on the Chrome extension to work around security limits.
For installation and download options, see 2.01-Downloads and Install. For sync backends and limitations, see 2.09-Configure-Sync-Backend.
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.