I kept clicking the wrong icon in my Mac's Dock and launching heavy apps like After Effects by accident. Then I'd wait for it to load, quit it, and go back to what I was doing. Several times a day.
I'm a graphic designer, not a full-time developer. But I'd started vibe coding, and this felt like a small enough problem to fix myself. So I made Freeze.
What it does
Freeze is a small menu bar app. You pick which Dock apps to "freeze":
- A single click on a frozen app does nothing, except show a short hint on how to open it
- You open it on purpose with a double-click, a press and hold, or a modifier+click (you choose the key: Control, Option, Shift or Command)
- An optional "only when not running" mode lets apps that are already open still switch with one click
- Everything else in the Dock works exactly as usual
How it works
Freeze uses the Accessibility API to figure out which Dock icon was clicked. If it's a frozen app, the click doesn't get passed on to the Dock.
That's also why it isn't on the Mac App Store. Sandboxed apps can't identify Dock icons, so Freeze is notarized by Apple and distributed directly, the same way apps like Rectangle or BetterTouchTool are. It doesn't collect any usage data. The only network call is the license check.
Building it as a designer
A few things made this possible for someone like me:
- Claude Code could read my whole Swift project and work through hard bugs with me, like clicks in a few-pixel gap at the screen edge slipping past the Dock. That's how Freeze got built at all.
- Vercel already hosted my studio site, so the landing page (5 languages), downloads and update feed went there too. Shipping a fix is just a push.
- Polar covered checkout, license keys and a free trial for a one-time Mac app purchase, without me building a backend. It took an afternoon to set up.
Try it
Freeze is $4.99 one-time, for up to 2 Macs, with a 3-day free trial. macOS 13+, Apple Silicon and Intel.
https://heiter.studio/landing/freeze/en
I'm still learning, so I'd really like to hear about edge cases or setups where it doesn't work.
