diff --git a/apps/tauri/src-tauri/Cargo.toml b/apps/tauri/src-tauri/Cargo.toml
index 3752fda..19b69ec 100644
--- a/apps/tauri/src-tauri/Cargo.toml
+++ b/apps/tauri/src-tauri/Cargo.toml
@@ -19,14 +19,16 @@ tauri-plugin-dialog = "2"
tauri-plugin-os = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
-onyx-core = { path = "../../../crates/onyx-core" }
+onyx-core = { path = "../../../crates/onyx-core", default-features = false }
tokio = { version = "1", features = ["full"] }
uuid = { version = "1", features = ["serde", "v4"] }
chrono = { version = "0.4", features = ["serde"] }
-notify = "7"
-notify-debouncer-mini = "0.5"
+notify = { version = "7", optional = true }
+notify-debouncer-mini = { version = "0.5", optional = true }
[package.metadata.tauri]
[features]
+default = ["desktop"]
+desktop = ["notify", "notify-debouncer-mini", "onyx-core/keyring-storage"]
custom-protocol = ["tauri/custom-protocol"]
diff --git a/apps/tauri/src-tauri/src/lib.rs b/apps/tauri/src-tauri/src/lib.rs
index 75bf467..7cbe413 100644
--- a/apps/tauri/src-tauri/src/lib.rs
+++ b/apps/tauri/src-tauri/src/lib.rs
@@ -4,6 +4,7 @@ use std::time::Instant;
use chrono::Utc;
+#[cfg(not(target_os = "android"))]
use notify_debouncer_mini::{new_debouncer, DebouncedEventKind};
use serde::{Deserialize, Serialize};
use tauri::{Emitter, Manager, State};
@@ -17,10 +18,12 @@ use onyx_core::{
webdav,
};
+#[cfg(not(target_os = "android"))]
/// Active file watcher stored globally so it lives for the app lifetime.
static WATCHER: Mutex