How do you vibe code a Mac app? Part 4: limits & 90% confidence
We're halfway through the week, and it's going better than expected.
Last week, I planned the Mac app from scratch, down to a list of 185 features. Even with that list in hand, I had no idea how far I'd get before I tilted the fuck out.
Turns out the careful planning was the best choice I could have made. Well, kinda.
For anyone landing here for the first time: This series is me trying to vibe code a fully native Mac app for my own SaaS, TWO Docs, with zero Swift experience.
Read also: How do you vibe code a Mac app? Part 3: reset and Claude doing dumb stuff
A shorter list makes it easier to commit
Before I get into the build, something changed this week that has nothing to do with code.
Yesterday, I finally sat down and made the decisions I'd been postponing for weeks: what to cut loose, what to shelve until 2027, and what stays.
I put the directory, Equity, Liyo, and Aegos Intel on the shelf. What's left is two apps, my podcast channels, three blogs, and two tools that keep running without me.
That sounds like a side note, but it isn't. For months, every half-built project took up a little corner of my head, even the ones I wasn't touching.
Now that I have a clear picture of what I will and won't do, it's much easier to focus on the native Mac app. When I open Xcode, nothing else is quietly tugging at me.
Starting with the hardest part
Claude also works as a compass for me, so naturally I asked what my best options were for what to build first.
The answer: the editor itself. That's the biggest challenge of the entire build.
Folders, shared spaces, and sync are much less of an issue. They mostly come down to data and logic that already exist in the web app.
The editor is a different story. On the web, TWO runs on TipTap, which lives in the browser. A native Swift build has nothing I can just carry over, so the editor has to be rebuilt from the ground up.
That made sense to me. The editor, autosave, and all the critical elements around it are the backbone of a docs editor. If those don't fucking work, nothing else on the list matters. Nobody cares about a clean folder structure if the app loses what they just typed.
The catch
It consumes my limits like a motherfucker.
Opus 5.5 is a blessing for vibe coding. Usually, I stick to the default setting, medium. But I figured that for something native, I should go for high.
That choice seems to be right as well. Everything I've built over the last three days was practically one-shotted, prompt after prompt, with very few corrections.
According to Claude, I'm now 70% done with the editor's core structure.
On paper, finishing the whole editor only gets me to about 20% of the app. But apparently the rest is a lot easier. The editor is the most expensive part of the build, and I'm paying for it first.
Claude is finally fucking delivering
I've been hard on Claude on this blog. I wrote about it getting dumb. I wrote about yelling at it in caps lock. And in part 3, it went rogue and started building an iPad app I never freakin' asked for.
Read also: Claude got so dumb, so I stopped relying on it alone
So I want to give credit where it's due. This week, Claude did not let me down on execution. Comparing my initial build from a month ago, or something like that, to what I have now is night and day.
Part of that is probably on me. After the reset, my instructions got a lot tighter, and Claude Code is on a much shorter leash. But the execution with Opus 5.5 on high is on another level from what I'm used to.
And the deeper I went into the sprints to finish the editor, the more my confidence rose. I'm now 90% sure I'll deliver a real, native Mac app. A week ago, I wouldn't have put a number on it at all.
70% gone by Wednesday
Now look at the screenshot below.

My limits are burning up so fucking fast. Faster than I can change my pants. It's just Wednesday, and I'm already at 70% of my weekly limit.
On Monday, two sessions cost me 20%. I knew it would climb. I didn't think it would climb this fast. And most of it went into the Mac app build.
Read also: Monday preparation #5: Story Valley, Mac app and Study Brew app
The mistake: thousands of tests
The biggest mistake I made early on was letting Claude Code run thousands of tests for every single feature we built. And by tests, I mean scenarios and edge cases. Every one of them ate into my limit.
This morning, I started to realize how much it really consumes. It's also the first time I've seen a prompt in Claude Code run for over an hour. An hour, for one feature, watching scenario after scenario scroll past.
Thousands of edge cases make sense for a mature app with thousands of users. For an MVP Mac app that nobody but me is using yet, it's like insuring every room of a house that's still being framed.
So I adjusted the instructions to cut the scenarios down for now, while still making sure everything holds up as an MVP.
Again, a good decision. Nothing I've built in Xcode so far breaks, even after solid, intense testing on my end.
Things like this really jack up my confidence. If I can build the barebones editor in Swift, the rest should be a breeze.
Read also: How do you vibe code a Mac app? Fuck I don’t know.
Surviving until the weekend
The problem now is that it's midweek, and I still have to survive with Claude until the end of it. I doubt that will happen.
But then again, it gives me an opportunity to record more and push my podcast shows, which are surprisingly doing well. If the limit forces me away from Xcode for a few days, the mic is the next best place to be.
Planning in smaller blocks
What I need to do now is plan more, in smaller blocks. And figure out whether I can squeeze more out of my weekly limit before I run out in the middle of the week again.
Planning saved me this week. Planning smaller might save me next week.
Final note
This is the first time I can confidently write about vibe coding my Mac app.
Four parts in, I know a bit more. The editor is the hard part. The limit is the real boss. And for once, Claude isn't the problem.
The editor core is at 70%, my confidence is at 90%, and my weekly limit is at 70% on a Wednesday. Two of those three numbers I'm happy with.
I hope this continues. For now, what's left of my limit goes to the editor, and what's left of the week goes to the mic.
Get new posts before anyone else
No noise, no automation sequences. Just what I'm writing, thinking about, and building, sent when there's something worth sending.
An email once in a while. Unsubscribe anytime.

Written by
Pieter Borremans
Writer·Content creator·Founder
Based in Taichung, Taiwan and London, UK, this is Pieter's personal journal and builder's blog: field notes on entrepreneurship, solo business-building, and the unfiltered reality of creating online. Alongside it, he's chasing one absurd goal in public, $168M USD in lifetime earnings, tracked live from zero.
