Net Health

Go · Wails · React · TypeScript View on GitHub →

Overview

Net Health is a lightweight, cross-platform desktop app that monitors your internet connectivity in real time. It probes a chain of well-known DNS servers via TCP and reports a green / yellow / red status so you always know whether your connection is healthy, degraded, or down — without opening a browser.

Features

  • One-click monitoring — Start and stop the ping cycle with a single button.
  • Live status badge — Colour-coded indicator updates every poll cycle.
  • Per-server latency — See response times for each DNS server in the fallback chain.
  • System tray integration — Status visible from the menu bar even when the window is hidden.
  • Launch at login — Optionally start Net Health automatically when you log in to macOS.
  • Configurable polling — Poll interval (5–60 s), latency threshold, and red-debounce count are all adjustable.
  • Debounce logic — Requires consecutive failures before turning red, preventing false alarms from brief blips.

How It Works

On every poll cycle the app dials TCP :53 against a fallback chain of DNS servers: Google (8.8.8.8), Cloudflare (1.1.1.1), Google secondary (8.8.4.4), Cloudflare secondary (1.0.0.1), Quad9 (9.9.9.9), and OpenDNS (208.67.222.222). No special OS permissions are needed — TCP to port 53 works on any network.

  • 🟢 Green — Primary server (8.8.8.8) responded within 150 ms.
  • 🟡 Yellow — Primary failed or was slow (>150 ms) but a fallback responded.
  • 🔴 Red — All servers failed for 2 or more consecutive cycles.

The backend is written in Go and exposed to the frontend through Wails v2, which compiles the whole app into a single native binary with a React/TypeScript UI rendered in the OS's native WebView.

Tech Stack

  • Go — Core monitoring engine, configuration persistence, and system-tray control.
  • Wails v2 — Bridges Go backend to the frontend; packages everything into a native desktop app.
  • React + TypeScript — Frontend UI, built with Vite for fast hot-reload during development.