When “Installed community plugins” sync is enabled but “Active community plugin list” sync is disabled on the device where a plugin is uninstalled, that plugin’s ID can stay permanently stuck in community-plugins.json (and therefore in app.plugins.enabledPlugins) on other synced devices — even though the plugin’s files were correctly removed by sync. Nothing ever reconciles the two, so the ID lingers indefinitely with no matching manifest.
Steps to reproduce
- Set up Sync across two devices (A and B) with “Installed community plugins” ON everywhere, but “Active community plugin list” OFF on device A.
- On device A, install and enable a community plugin. Let it sync — the plugin’s files and enabled state should now also appear on device B.
- On device A, uninstall the plugin the normal way (Settings → Community plugins → Installed plugins → trash/uninstall icon).
- Let sync finish.
- On device B, check
.obsidian/community-plugins.json, or runArray.from(app.plugins.enabledPlugins)in the developer console.
Actual result
The plugin’s files are correctly removed from device B via sync, but its ID remains in device B’s community-plugins.json / enabledPlugins, with no corresponding manifest or folder on disk. This persists across restarts. The only way to clear it is to reinstall and then properly uninstall the plugin locally on device B, which forces that device to rewrite its own active list.
Expected result
Either:
- Obsidian prunes any plugin ID from the enabled list at startup if it has no matching installed manifest, regardless of sync settings; or
- If that’s intentionally not automatic, this interaction should be documented — it silently leaves orphaned entries in
community-plugins.jsonthat accumulate over time, and can produce false positives in anything that readsapp.plugins.enabledPluginsto check what’s actually running. (This is how I found it: a plugin that warns about known-conflicting plugins kept warning about one I’d already deleted, weeks earlier.)
Workaround
On the affected device, reinstall then uninstall the plugin locally via Settings → Community plugins → Installed plugins, rather than relying on sync to carry the removal.
Did you read and follow the Troubleshooting Guide ? Yes/No
Environment
- Obsidian desktop (macOS) + Obsidian mobile (iOS), same vault, Obsidian Sync
- Sync settings: “Installed community plugins” enabled on all devices; “Active community plugin list” disabled on desktop, enabled among mobile devices
SYSTEM INFO:
Obsidian version: 1.13.7
Installer version: 1.11.4
Operating system: Darwin Kernel Version 25.6.0: Sat Jul 11 15:26:21 PDT 2026; root:xnu-12377.161.13~4/RELEASE_ARM64_T6000 25.6.0