Watermelon Studio
Why Watermelon Studio?
Debugging sync issues in WatermelonDB usually means switching tools, pulling files manually, and running ad-hoc SQL queries.
Watermelon Studio keeps this workflow inside your editor:
- Visual table of Watermelon rows (
id, _status, table, updated date)
- Full JSON payload per row in a side details panel
- One-click copy JSON for quick sharing/debugging
- Direct sync from Android emulator using
adb run-as
- Direct sync from iOS simulator using
xcrun simctl
- Works with Expo and React Native CLI projects (automatic path detection)
It is intentionally focused: practical inspection, not a full DB admin suite.
Preview
Current feature set
✅ What works well today
- Sidebar integration in VS Code Activity Bar (left side)
- Webview inspector UI with filters by ID and sync status
- Row details panel with formatted full JSON payload
- Copy JSON action in details panel
- Automatic Android package detection (workspace + device heuristics)
- Android DB auto-sync when no local
.db/.sqlite/.sqlite3 is found
- iOS simulator DB auto-sync when no local
.db/.sqlite/.sqlite3 is found
- Cache pruning to avoid uncontrolled growth of synced files
⚠️ Scope and current limitations
- Read-only inspector (no write/update/delete actions)
- Focused on Watermelon-like tables containing
id + _status
- Android sync depends on
adb and a debuggable app (run-as access)
- iOS sync depends on a booted simulator and
xcrun availability
Quick start
Option A: Auto-sync from Android emulator (recommended)
- Keep your app running on Android emulator.
- Open Watermelon Studio from the left sidebar.
- Run command: Watermelon Studio: Open.
- If no local DB is found, extension will attempt auto-sync from emulator.
Option B: Manual sync command
- Run Watermelon Studio: Sync Android Emulator Database
- Then run Watermelon Studio: Open
Commands
Watermelon Studio: Open
Watermelon Studio: Find Database
Watermelon Studio: Sync Android Emulator Database
Watermelon Studio: Sync iOS Simulator Database
Watermelon Studio: Set Android Package Name
Settings
Namespace: watermelonStudio
watermelonStudio.android.packageName
watermelonStudio.clearCache (command) – delete temporary database copies created by the extension
- Android app id for
adb run-as (example: com.example.app)
watermelonStudio.android.dbFileName
- DB path relative to app sandbox
- Expo SQLite default:
files/SQLite/watermelon.db
- Standard Android default:
databases/watermelon.db
watermelonStudio.android.autoSyncOnOpen
- If
true, auto-sync is attempted when no local DB file is found
watermelonStudio.ios.bundleId
- iOS app bundle id (example:
com.example.app)
watermelonStudio.ios.dbFileName
- DB path relative to iOS app data container
- Expo SQLite default:
Library/LocalDatabase/watermelon.db
watermelonStudio.ios.simulatorId
- Optional simulator UDID; if empty, uses currently booted simulator
watermelonStudio.ios.autoSyncOnOpen
- If
true, auto-sync is attempted when no local DB file is found
Example configurations (.vscode/settings.json):
For Expo projects:
{
"watermelonStudio.android.packageName": "com.watermelon.testapp",
"watermelonStudio.android.dbFileName": "files/SQLite/watermelon.db",
"watermelonStudio.android.autoSyncOnOpen": true
}
For React Native CLI projects:
{
"watermelonStudio.android.packageName": "com.myapp",
"watermelonStudio.android.dbFileName": "databases/watermelon.db",
"watermelonStudio.android.autoSyncOnOpen": true
}
Note: The extension auto-detects Expo package names from app.json. For RN CLI projects, you'll need to configure the package name manually.
Android sync notes
Watermelon Studio uses:
adb shell run-as <package> ls <db-path>
adb exec-out run-as <package> cat <db-path>
For this to work reliably:
adb must be available in PATH
- emulator/device must be connected (
adb devices)
- app should be debuggable and installed for the same user
iOS sync notes
Watermelon Studio uses:
xcrun simctl get_app_container <simulator-udid> <bundle-id> data
For this to work reliably:
- Xcode Command Line Tools must be installed (
xcrun available)
- an iOS simulator must be booted
- the app must be installed on that simulator
Vision
Watermelon Studio aims to be the fastest way to answer questions like:
- “Which rows are
created, updated, deleted, synced right now?”
- “What payload is actually stored for this record?”
- “Did my local database change after this action?”
Simple, visual, and grounded in real mobile debugging workflows.
Support
For bugs and suggestions, open an issue with context (project type, command used, and expected behavior).