Sync & Collaboration
Offline-first sync keeps your API collections, requests, and environments synchronized across all your devices and your team.
RESTK uses offline-first sync — you can work without internet and sync when ready. When you sync, the app pulls the latest changes from your team, merges them with your local changes using field-level smart merge, and pushes your changes to the server.
Quick Start
Work Anywhere
Make changes on any device — create, edit, delete, and reorder requests fully offline.
Sync When Ready
Tap Sync Now or enable Auto-Sync to push your changes and pull your team's updates.
Smart Merge
RESTK merges changes at the field level — non-conflicting changes merge automatically, and when both sides edit the same field, your local version is preserved.
How Sync Works
When you tap Sync Now (or Auto-Sync triggers), the app follows this sequence:
- Pull the latest changes from the server
- Merge them with your local changes (field-level smart merge)
- Push your local changes to the server
Collections sync before folders, and folders before requests. This ensures parent items exist before syncing their children.
Auto-Sync
Auto-Sync periodically syncs your workspace in the background. You can configure the interval in settings:
| Interval | Best for |
|---|---|
| Manual | Full control — sync only when you tap "Sync Now" |
| 30 seconds | Real-time collaboration with teammates |
| 4 minutes | Balanced — recommended for most teams |
| 6 minutes | Light collaboration |
| 10 minutes | Minimal background activity |
Push Notifications
When a teammate syncs changes, you receive a push notification. If Auto-Sync is enabled, the app automatically pulls the latest data in the background — no manual action needed.
Working Offline
You can use RESTK fully offline. All changes are saved locally and queued as pending changes.
When offline, you can:
- Create new collections, folders, and requests
- Edit existing items
- Delete and reorder items
- Execute requests (to reachable servers)
- View history
No Data Loss
Your changes are saved safely on your device even if you quit the app while offline. Everything syncs when you reconnect.
Pending Changes
Pending changes are local edits that haven't been pushed to the server yet. These include:
- Modified requests, collections, or folders
- Newly created items
- Deleted items
- Reordered items (drag-and-drop changes)
You can view all pending changes in the Sync dialog and manage them before syncing.
Discarding Pending Changes
In the Sync dialog, tap View all changes to see pending items. You can:
- Select individual items using checkboxes
- Select All / Clear All to toggle selection
- Discard Selected to revert those changes
What Discard Does
Discarding a modified item keeps it in your workspace but reverts it to the last synced version. Discarding a locally-created item deletes it entirely.
How Merging Works
RESTK uses smart field-level merge — not whole-item replacement. Each field of a request, collection, or folder is merged independently:
- If only you changed a field → your version is kept
- If only your teammate changed a field → their version is applied
- If both changed the same field → your local version wins (last-writer-wins)
For list fields like headers, parameters, and variables — additions from both sides are kept, deletions are respected, and reordering is preserved.
Non-Conflicting Changes Merge Automatically
If you change the URL and someone else changes the method, both changes are kept automatically. No manual resolution is needed.
What If I Haven't Synced In a While?
Your local changes are safe. When you sync:
- Fields you didn't modify get updated with the latest from your team automatically
- Fields you modified keep your local version — your work is never lost
- If a teammate also changed the same field you changed, your local version takes priority
To minimize overwriting teammates' recent work, we recommend enabling Auto-Sync.
What Gets Synced
Here's exactly what syncs across devices and what stays local.
| Entity | Synced | Local-Only |
|---|---|---|
| Request | Name, URL, method, sort order, parent references, headers, parameters, body type + data, auth type, scripts, skip-parent-scripts flag, variable keys + enabled status, description | Auth credentials (stored in Keychain), selected tab, request settings, variable values |
| Collection | Name, sort order, visibility, auth type, scripts, variable keys + enabled status | Auth credentials (stored in Keychain), AI sharing preference, variable values |
| Folder | Name, sort order, parent references, auth type, auth override flag, scripts, variable keys + enabled status | Auth credentials (stored in Keychain), variable values |
| Environment | Name, workspace, creator, description | Active selection (per-user) |
| Env Variable | Key, type, enabled status, display order | Values (stored locally), secret values, script-set values (runtime overrides) |
Always stays on your device (never synced):
- Response history and saved responses
- Cookies
- Mock server configurations
- Window layout and open tabs
Environment Variable Values
Environment variable keys (names) are synced so your team shares the same variable structure. Variable values stay local — each team member can have their own API keys, tokens, and secrets without exposing them to the server or teammates.
This means:
- Your team shares
{{base_url}},{{auth_token}},{{api_key}}as variable names - Each person sets their own values locally (dev server, staging, production)
- No secrets are ever sent to the sync server
Variable Values Stay Local
All variable values stay local — only keys and enabled status sync. This applies to collection, folder, request, and environment variables alike. Secret variable values and script-set overrides always stay local.
Auth Inheritance and Sync
Authentication settings sync with their inheritance chain:
- Collection-level auth syncs and is inherited by all folders and requests within it
- Folder-level auth syncs and overrides collection auth for requests in that folder
- Request-level auth syncs and overrides folder/collection auth for that specific request
When a teammate updates the collection's OAuth config, all requests inheriting from it automatically use the new config after your next sync.
Workspace Roles and Permissions
Sync respects your workspace role:
| Role | Can push changes? | Can pull changes? |
|---|---|---|
| Owner / Admin / Manager | Yes | Yes |
| Editor | Yes | Yes |
| Viewer | No (read-only) | Yes (pull only) |
Viewers can browse the workspace and pull updates but cannot push changes. If your role changes, the app updates automatically on next sync.
Multi-Device Sync
Your workspace syncs across all your devices. Sign in on your Mac at home and at work — both stay in sync. Each device maintains its own:
- Environment variable values (your API keys stay per-device)
- Response history
- Cookie jar
- Window layout and open tabs
Drag-and-Drop Reordering
When you reorder requests or folders by dragging, the new order syncs to your team. Each item's position is tracked individually — reordering one item doesn't require updating every other item in the list.
Data Security
Workspaces with end-to-end encryption enabled encrypt sensitive fields before they leave your device:
- Request body content
- Auth configuration (tokens, credentials)
- Header and parameter values
The server only sees encrypted data. See Security & Encryption for details.
Sync Status Indicators
Visual indicators show the sync state of your items.
| Indicator | Meaning |
|---|---|
| Green checkmark | Synced successfully |
| Orange badge with count | Pending sync (changes waiting) |
| Blue spinner | Currently syncing |
| Red X | Sync error, check connection |
What If Sync Fails?
If sync fails (network error, server unavailable), your local data is safe. The app will:
- Show an error message in the Sync dialog
- Keep your pending changes queued
- Retry on the next Auto-Sync interval or when you tap "Sync Now"
No data is ever lost due to a sync failure.
Best Practices
- Enable Auto-Sync — the 4-minute interval works well for most teams
- Sync before major edits — pull the latest before making big changes
- Check pending changes — review what's pending before syncing
- Use environments for secrets — keep API keys in environment variables, not hardcoded in requests
- Use auth inheritance — set auth at collection level so the whole team benefits from updates
Troubleshooting
Changes Not Syncing
Check:
- Internet connection is active
- You're signed in on both devices
- You're in the correct workspace
- Your workspace role allows pushing changes
Solution:
- Click the sync icon to force sync
- Check the Sync dialog for error messages
- Restart the app if needed
Sync Keeps Failing
Cause: Network issues or server unavailable.
Solution:
- Check your internet connection
- Wait for the next Auto-Sync interval to retry automatically
- Tap "Sync Now" to retry manually