Zackriya-Solutions/meetily · warning · anyhow::Error

Failed to show notification: {}

Error message

Failed to show notification: {}

What it means

builder.show() on a Tauri system notification returned an error - the OS rejected or failed to deliver it. On macOS this is almost always notification permission not granted or denied; on Linux it is typically a missing notification daemon/DBus session; a missing bundle identifier in packaged builds also breaks delivery.

Source

Thrown at frontend/src-tauri/src/notifications/system.rs:44

            log_info!("DND is active, skipping notification: {}", notification.title);
            return Ok(());
        }

        // Use Tauri notification for all platforms
        log_info!("Showing Tauri notification: {}", notification.title);

        let builder = self.app_handle.notification().builder()
            .title(&notification.title)
            .body(&notification.body);

        match builder.show() {
            Ok(_) => {
                log_info!("Successfully showed Tauri notification: {}", notification.title);
                Ok(())
            }
            Err(e) => {
                log_error!("Failed to show Tauri notification: {}", e);
                Err(anyhow!("Failed to show notification: {}", e))
            }
        }
    }

    /// Check if Do Not Disturb is currently active
    /// Note: DND is managed through app settings, not system-level checks
    pub async fn is_dnd_active(&self) -> bool {
        // App manages DND through its own notification settings
        // No need to check system-level DND status
        false
    }

    /// Get the actual system DND status
    /// Note: DND is managed through app settings, not system-level checks
    pub async fn get_system_dnd_status(&self) -> bool {
        // App manages DND through its own notification settings
        // No need to check system-level DND status
        false

View on GitHub (pinned to 0281737d87)

Solutions

  1. Check/request permission first via the notification plugin (is_permission_granted / request_permission) and guide the user
  2. Enable notifications for Meetily in OS settings (macOS System Settings > Notifications)
  3. On Linux, ensure a notification daemon and DBus session exist
  4. Ensure the packaged app has a valid bundle identifier
Defensive patterns

Strategy: validation

Validate before calling

// Check permission before attempting to show
use tauri_plugin_notification::NotificationExt;

fn can_notify<R: tauri::Runtime>(app: &tauri::AppHandle<R>) -> bool {
    app.notification().is_permission_granted().unwrap_or(false)
}

Try / catch

match builder.show() {
    Ok(_) => Ok(()),
    Err(e) => {
        warn!("System notification failed: {e}");
        show_in_app_banner(&notification); // notifications are non-critical
        Ok(())
    }
}

Prevention

When it happens

Trigger: show() called when the user denied notification permission (macOS), when no notification daemon is reachable (headless Linux, no DBus session), or when the app bundle lacks an identifier the OS can register notifications under.

Common situations: First run after the user clicks 'Don't Allow' on the notification prompt; running under cargo tauri dev where permission attribution differs; Linux without a desktop environment.

Related errors


AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16). Data as JSON: /api/errors/f73f3f4da5794401. Report an issue: GitHub.