Phoenix Alerts
Phoenix Alerts follows the Phoenix Fire Department's dispatch feed, ADOT freeway incidents and cameras, and National Weather Service alerts. It alerts you once when something serious happens near you or the places you care about, and lets you browse everything happening across the Valley on a map. It is one native SwiftUI app for iPhone, iPad, Mac, Apple Watch and Apple TV.
At a glance
- Type
- App
- Industry
- Public safety
- Built with
- SwiftUI, one shared Swift package for every platform, XcodeGen
- Platforms
- iPhone, iPad, Mac, Apple Watch, Apple TV
- Codebase
- About 12,400 lines of Swift, with a Swift Testing suite and XCUITest flows
- Timeline
- April 2025 to September 2026, 115 commits; rebuilt for every Apple platform in September 2026
Every Apple platform
Everything the apps share lives in one Swift package: the models, the feed decoders, the incident ledger, the alert engine, live polling and the SwiftUI views each app builds on. The fire feed is polled every 30 seconds.
Widgets and a Live Activity on iPhone, complications on Apple Watch, a menu bar view on the Mac, and a wall of freeway cameras on Apple TV. Siri and Shortcuts work through App Intents, and deep links open any incident.
Alerting without the noise
Watched places each have their own radius, with categories, a minimum severity, and quiet hours that critical alerts can break through.
One alert per incident: an escalation alerts again, and bursts are summarized. Dispatch shorthand is decoded into readable titles and addresses, and weather alerts are deduplicated by event across updates and places.
Color means severity only, and always comes with a symbol and a text label.
The core tests run against real feed payloads saved as fixtures, and UI tests drive the iPhone app against live data, attaching a screenshot at each step.
Highlights
- One shared Swift package behind five platform apps.
- An alert engine with per-place radius, quiet hours, deduplication, escalation and burst limits, all covered by tests.
- Feed decoding tested against real API payloads saved as fixtures.
Let's talk.
Tell me what you're building. I read every message myself and usually reply within one business day.