March 26, 2026
I BUILT THE WIFI NOTIFICATION macOS SHOULD HAVE HAD ALL ALONG
Here's something that's been driving me insane for years. You're in the middle of a Zoom call. Or pushing code. Or downloading something that took twenty minutes to get to 94%. And your WiFi silently drops.
No notification. No sound. No banner. Nothing. The WiFi icon in the menu bar changes to empty bars and hopes you notice. You don't. You find out three minutes later when your video freezes and your terminal hangs and you look up at the menu bar and think: how long has that been like that?
Every time, the same thought: why doesn't Apple just tell me?
So I built it myself.
macOS has had WiFi since 1999. It still doesn't notify you when it drops. That's twenty-seven years of silence.
MEET DROPOUT
Dropout is a lightweight macOS menu bar app that does one thing: tells you the moment your WiFi connection changes. Disconnect, reconnect, signal degradation, network switches — instant native macOS notifications for all of it.
It's free. It's open source. It uses zero battery. And it solves a problem that's annoyed every Mac user since WiFi existed.
Download Dropout — Free
macOS 13 Ventura or later. 352KB DMG. Signed and notarized by Apple.
Download Dropout-1.0.0.dmgWHAT IT DOES
Click the WiFi icon in your menu bar and you get a clean status overview: your current network, signal strength in dBm, internet reachability, a timeline of recent events, and daily stats showing how many times your connection dropped and total downtime.
When your WiFi drops, you get an immediate macOS notification with the network name. When it reconnects, you get another one — this time showing exactly how long you were offline. "Back on HomeWiFi — 47s offline." That downtime duration is something I've never seen in any other tool. It turns an invisible problem into a measurable one.
THE FULL FEATURE SET
| Feature | What It Does |
|---|---|
| Disconnect alerts | Instant notification when WiFi drops, with network name |
| Reconnect alerts | Notification with exact downtime duration |
| Signal warnings | Alerts before your connection drops (below -75 dBm) |
| SSID change detection | Know when your Mac silently switches networks |
| Dead network detection | Auto-disconnects from WiFi with no internet |
| Internet reachability | Distinguishes "WiFi up, no internet" from "WiFi down" |
| Event log | Full history in SQLite, exportable as CSV |
| Event hooks | Run custom scripts when events happen (Slack, automation) |
| Notification throttling | Smart dedup prevents spam during WiFi flapping |
| Daily stats | Total disconnects and downtime in the menu bar |
THE DEAD NETWORK FIX
This is the feature that convinced me this needed to exist as an app, not just a notification script.
You know the scenario: you walk into a coffee shop. Your Mac auto-connects to a saved network — maybe the shop's old router, maybe a hotspot you used once. The WiFi shows full bars. Connected. Looks fine. But the network has no internet. It's dead.
The only way macOS lets you escape? Forget the network. Delete it from your saved networks entirely. Next time you're at that coffee shop and the WiFi actually works, you have to re-enter the password.
Dropout fixes this. When it detects you're connected to a network with no internet for 15 seconds, it automatically disconnects. Not forgets — disconnects. macOS then auto-joins the next preferred saved network. The dead network stays in your saved list for when it's actually working.
You can also hit Cmd+D in the Dropout menu to manually disconnect from the current network anytime. Same behavior: leave without deleting.
Dropout disconnects you from dead networks without deleting them. macOS should have done this from day one.
HOW IT WORKS (AND WHY IT USES ZERO BATTERY)
Every other WiFi monitoring tool I found uses some version of the same approach: poll the WiFi status every few seconds. Check if it changed. Wait. Check again. This wastes CPU cycles, drains battery, and — critically — misses events that happen between polls.
Dropout doesn't poll at all. It uses Apple's CoreWLAN framework to register for kernel-level WiFi events. When your WiFi state changes, the OS notifies Dropout directly. The app is essentially asleep until something happens.
MONITORING LAYER
CWEventDelegate.linkDidChange → WiFi connect/disconnect
CWEventDelegate.ssidDidChange → Network switches
CWEventDelegate.linkQualityDidChange → Signal degradation
CWEventDelegate.powerDidChange → WiFi radio on/off
NWPathMonitor → Internet reachability
The result: zero polling loop, zero battery impact, zero missed events. The app binary is 248KB. It sits in your menu bar doing nothing until the instant something changes — then it reacts in milliseconds.
EVENT HOOKS: AUTOMATION FOR POWER USERS
Every WiFi event in Dropout can trigger a custom shell script. Drop an executable .sh file into the hooks folder and it runs automatically with full event context passed as environment variables.
~/Library/Application Support/Dropout/hooks/
on-disconnect.sh
#!/bin/bash
curl -X POST "https://hooks.slack.com/your/webhook" \
-d "{\"text\":\"WiFi dropped from $DROPOUT_SSID at $(date)\"}"
Available hooks: on-disconnect.sh, on-connect.sh, on-ssid-change.sh, on-signal-weak.sh, on-internet-lost.sh, on-internet-restored.sh. Each receives DROPOUT_EVENT, DROPOUT_SSID, DROPOUT_BSSID, DROPOUT_RSSI, and DROPOUT_TIMESTAMP as environment variables.
Pause your torrent client when WiFi drops. Alert your team on Slack. Trigger a home automation scene. Log to a remote server. Whatever you want.
PRIVACY: ZERO NETWORK REQUESTS
Dropout makes zero network requests. No analytics. No telemetry. No update checks. No data leaves your Mac, ever. The WiFi event log is a local SQLite database. Preferences are local UserDefaults. That's it.
The only reason the app asks for Location Services is because Apple requires it for apps to read WiFi network names on macOS 14 and later. Your location is never stored, logged, or transmitted. If you deny the permission, Dropout still works — it just can't show you the network name.
THE TECHNICAL DETAILS
For anyone who wants to know what's inside:
- Language: Swift 5.9, built with Swift Package Manager
- Framework: CoreWLAN (WiFi events), Network framework (NWPathMonitor), UserNotifications
- Architecture: NSApplication with
.accessoryactivation policy (no Dock icon) - Storage: SQLite via the C API (zero external dependencies)
- Distribution: Developer ID signed, hardened runtime, notarized by Apple
- Size: 248KB binary, 352KB DMG
- Compatibility: macOS 13 Ventura and later
- License: MIT
The entire app is about 1,500 lines of Swift across 10 files. No external dependencies. No frameworks beyond what Apple ships with macOS. It builds in under 2 seconds.
Get Dropout
Free, open source, 352KB. Signed and notarized by Apple. The WiFi notification Apple forgot to build.
Download Dropout-1.0.0.dmgWHY THIS EXISTS
I searched for a macOS WiFi disconnect notifier. The options were: heavyweight network monitoring suites that cost money, shell script hacks that drain battery and miss events, or Hammerspoon configurations that require a 100MB scripting runtime.
There was no lightweight, event-driven, native macOS app that just tells you when your WiFi drops. So I built one. The dead network auto-disconnect was the feature that pushed it from "personal utility" to "something other people need."
If your WiFi has ever dropped without you knowing — and it has — give Dropout a try.