Keeping a window visible on macOS sounds simple, but the OS still doesn’t include a native “always on top” toggle. After switching between apps, losing my reference notes, and fighting with fullscreen Spaces, I finally built a tiny tool to solve this problem for myself — and ended up making something other people wanted too.

This post shares the story behind Floaty: why I built it, how it works under the hood, what surprised me along the way, and what I learned as an indie developer shipping a small macOS utility.

1. Why I wanted a window always on top

I switch between multiple apps constantly — coding, writing, reading docs, watching tutorials, and checking reference material. On Windows, “pin this window” is one click away. On macOS, the moment you click another app, the window you want disappears behind everything.

I tried every workaround:

  • Afloat (broken on modern macOS)
  • Rectangle/BetterTouchTool scripts
  • Picture-in-Picture hacks
  • Note apps with floating modes

Nothing worked consistently. I wanted something lightweight, modern, and stable — ideally a one-click pin window mac workflow. That’s when I decided to build my own tool.

Floating window controls sitting on top of Google Chrome Floaty adds lightweight controls directly above the window you want to keep visible.

2. What I Used to Build It

Floaty started as a very small prototype: a button that pushes a window to a higher level than normal macOS apps.

To make this work reliably, I had to use:

  • Accessibility API — to identify and control external app windows
  • Window levels — to push a window above others without breaking system UI
  • Screen Recording permission — required by macOS to read window frames
  • Swift + SwiftUI — to build something clean and native
  • Hotkey support — so users can pin windows instantly while working

Most of Floaty’s features (opacity, click-through, multi-window pinning) started as experiments to see what macOS would allow.

Floaty window picker listing apps ready to pin The original prototype window picker let me choose which apps should stay on top.

3. The Hardest Parts

Some things took much longer than I expected:

Full Screen Windows

macOS moves fullscreen apps into separate Spaces. A floating window cannot cross this boundary — not even system UI can.

That meant Floaty had to gracefully fail or dim the “pin” button when fullscreen isn’t possible, instead of pretending it works.

Window Identity

Many apps redraw windows frequently (Electron apps, browsers, design tools). That means the “same window” technically becomes a new window in the system.

I had to build logic that re-identifies and re-applies the floating state seamlessly.

Permissions Experience

Accessibility + Screen Recording prompts can be intimidating, so I rewrote the onboarding flow four times, simplified the copy, and made it impossible to get stuck—every step explains why the permission exists and what Floaty does with it.

Settings polish

Once permissions are out of the way, the settings view focuses on daily controls: launch at login, menu bar visibility, activation mode, button position, opacity slider, excluded apps, and global shortcuts. Those touches keep the utility feeling native instead of hacky.

Floaty settings view highlighting launch, activation, button position, and shortcut toggles The settings panel keeps behavior toggles and shortcuts in one tidy place.

4. When Other People Started Using It

Floaty was meant for myself, but after sharing a tiny GIF online, people asked for a download link. Then I started getting messages like:

“Finally a clean always-on-top tool for macOS.”

“This is great for coding logs.”

“Exactly what I needed for study notes over videos.”

“Opacity + click-through is brilliant for tutorials.”

I added multi-window support, custom hotkeys, and small QoL improvements based on feedback. The tool slowly grew into something polished.

5. What I Learned as an Indie Developer

Building something small teaches you more than building something big. A few lessons:

  • Solve your own problem first. Floaty exists because I needed it.
  • Minimal tools can be incredibly useful. Not every product needs to be a platform.
  • macOS APIs are powerful but strict. Apple gives you flexibility but expects you to respect system boundaries.
  • Good UX matters more than features. Clear permissions, clean UI, predictable behavior.
  • Small utilities can have real audiences. People appreciate focused tools.

6. What’s Next

I’m continuing to improve Floaty with:

  • Better window tracking
  • Per-app rules
  • More customizable shortcuts
  • Small quality-of-life improvements
  • More mac window pin workflows and tutorial content

If you want updates or tips for macOS window management, I share new ideas regularly here.