Tate’s IP Utility – Version 3.0.0
Another big step forward for Tate’s IP Utility, now at version 3.0.0!
This is a free update for all existing users, and you can grab it on the Mac App Store.
What’s New?
The headliner for this release: IP address changes now update almost instantly.
This is especially helpful for users on dynamic networks or VPNs—your menu bar will stay accurate in real-time with less delay.
Beyond that:
- Minor interface improvements
- Performance gains
- Smaller app footprint
Under the Hood
This update also includes two major behind-the-scenes upgrades that developers and the technically curious might appreciate.
✅ Replacing Reachability with Network Path Monitor
In previous versions, I used the popular Reachability library– originally a paste-in sample from Apple that later evolved into a community-maintained GitHub repo. It served me well and is a go-to for many iOS/macOS devs (I’ve personally used it across tons of client projects).
But while revisiting the codebase, I decided to look for something more modern. That’s when I discovered Apple’s Network Path Monitor, introduced in 2018– a year before I released v1.0.0. 🙃
After diving in, I rewrote the IP monitoring logic using this official API. The results were immediate:
- Faster, more accurate detection of network changes
- Simpler, more native integration
- Less code
Honestly, it felt like a huge win. If you’re still relying on Reachability, I’d encourage you to take a look at Apple’s Network Framework– it’s clean, fast, and built-in.
🧠 Embracing a Reactive Architecture (Inspired by SwiftUI)
Although I rewrote the app in Swift for 2.0.0, I’ve since spent time learning SwiftUI. While it didn’t turn out to be the right fit for this app (more on that in a sec), some of its underlying ideas inspired architectural improvements in this release.
Here’s what I took from SwiftUI:
- Reactive Design: When data changes, the UI updates automatically– no manual sync needed. Using property observers (like Swift’s didSet) and data bindings, the app now responds to changes much more fluidly.
- Model-View Simplicity: Not quite MVVM, and not quite MVC– just a clean separation between data and UI. Apple’s own sample code often takes this “MV” approach: expose a shared model, and let views observe it. No duplication or glue code. Just state flowing one way, with minimal ceremony.
This shift eliminated a lot of the glue logic I previously had to manually manage– like syncing the menu bar with the settings window. Now they just stay in sync by design. Make a change in one, and it shows up in the other, instantly.
Why Not SwiftUI?
I did consider rewriting the interface in SwiftUI… but it didn’t quite fit the app’s structure. SwiftUI assumes your app is centered around a windowed interface, but Tate’s IP Utility lives in the menu bar, with an optional settings window.
Until SwiftUI becomes more flexible for non-standard macOS apps like this one, I’m sticking with AppKit, which continues to be the best choice here.
That’s it for this release! I’m excited about the direction things are heading, and hope the update improves your day-to-day experience with the app.
Thanks for using Tate’s IP Utility!
