docs/wiki/4.23-Managing-Your-Data.md
Your data in Super Productivity is everything the app stores to represent your work: tasks (active and archived), projects, tags, time tracking, metrics, notes, reminders, configuration, and more. The app is local-first: data lives on your device (or in your browser), and you control how it is backed up, exported, imported, and synced. Understanding what “your data” includes, how import and export work, how backups are created, and how sync and conflicts are handled helps you keep your data safe and move it between devices or recover from problems.
For where data is stored, where backups go by platform, and technical details of backup/import/export/sync, see [[3.06-User-Data]]. For how to restore from a backup file, see [[2.02-Restore-Data-From-Backup]].
Your data is a complete snapshot of the application state. It includes:
Nothing is omitted from a full backup or export: when you export or when the app creates an automatic backup, it includes all of the above (and when archives are included, both recent and old archive tiers). So “your data” is everything the app uses to restore your workspace on another device or after a reinstall.
Import replaces your current app data with the data from a backup or export file. The app supports full backup format: a single JSON structure that contains (or wraps) the complete application state. Older legacy formats are detected but no longer migrated; you see a message that migration is not supported.
Validation and repair: Before applying an import, the app validates the data (structure and relationships, e.g. tasks referencing existing projects and tags). If validation fails, it may still repair the data automatically when possible—for example fixing orphaned tasks, missing project or tag references, or inconsistent lists—so you end up with a consistent state instead of a failed import. If repair is not possible, the import is aborted and you get an error.
Encryption: If the backup was encrypted and your app is not (or the opposite), the app warns you before importing and asks you to confirm, because importing would change whether data is encrypted.
Effect of import: Import replaces current state. The app persists the imported data (including writing archive data to storage) and treats it as the new source of truth. Your previous state is no longer active; restore it only by importing an older backup if you have one.
Export produces a snapshot of your data at the time you export. It is not a “live” view: whatever is in the app at that moment (including archives if you choose to include them) is serialized into one JSON file. You can use that file as a backup, move it to another device, or archive it. Relationships (e.g. task → project, task → tags, subtask → parent) are preserved by ID references in the JSON; the validation and repair logic used on import ensures those references stay consistent when the file is later imported.
So export = “save everything as it is right now”; import = “load everything from this file and replace current data.”
Automatic backups — When enabled in settings, the app creates a backup on a schedule (e.g. every 5 minutes). Where it is stored depends on the platform: on desktop (Electron), backups are JSON files in the User Data Folder (e.g. a backups/ directory, one file per day). On Android and iOS, backups are stored in platform-appropriate storage (e.g. IndexedDB or a dedicated file). On the web, there is no automatic file-based backup; you use “Export data” to download a file. See [[3.06-User-Data]] for exact locations and behavior per platform.
Manual backups — You can trigger a backup by: (1) using “Create manual backup” in settings, (2) relying on safety backups the app creates before certain sync operations (the app keeps a limited number of recent and daily slots), or (3) using “Export data” to download a backup file. Exported files can be imported later via Settings → Import/Export (see [[2.02-Restore-Data-From-Backup]]).
What is included: Backups and exports include all application data; nothing is excluded. When archives are included, both recent and old archive tiers are part of the backup so you can restore full history.
The app uses local-first, operation-based sync: your device is the primary copy; sync sends changes (operations) to the remote side (or a single sync file) rather than uploading the entire dataset every time. That keeps sync fast and bandwidth low. Multiple sync providers are supported (e.g. SuperSync server (beta), WebDAV, Dropbox, local file); file-based providers typically use a single sync file that contains a state snapshot plus recent operations.
Conflicts — When the same data is changed in two places (e.g. on two devices) before they sync, the app detects a conflict. It resolves most conflicts automatically using last-write-wins: the change with the newer timestamp is kept; if timestamps tie, the remote (server) side wins. When your local change wins, the app creates a new operation so your version is sent to the remote. In some cases (e.g. first sync when both local and remote already have data), the app may ask you to choose use local or use remote instead of applying automatic resolution. After resolution, the app validates and can repair state so references (e.g. tasks to projects) stay consistent.
So in practice: newer wins; you only choose when the app prompts you (e.g. first-sync).