Published Build3 min read
The Agent Did the Typing. The Package Manifest Did the Refusing.
A solo developer rebuilt his PWA as a native iOS and Mac app with an AI agent, and says the two arguable parts were putting layer boundaries where the build could enforce them and a sync bug in which a device clock lied...
Written for builders.See today for builders
What happened
- A dev.to post by vscarpenter is headlined "I Rebuilt My PWA as a Native iOS and Mac App with an AI Agent. The Architecture Was the Hard Part." and is a cross-post of a piece originally published on the author's blog.
- The author says two parts seem worth arguing about with the dev.to crowd: enforcing layer boundaries in the package manifest so an agent cannot cross them, and the sync bug where a device clock lied and silently dropped data.
- GSD, short for Get Stuff Done, started as a web app and ran that way for a couple of years.
- The author then wrapped GSD as a PWA so it would follow him onto his phone, using Add to Home Screen, a service worker for offline, and a manifest for an icon and chrome-free launch; he describes 2023 as the year when a PWA was the honest, cheap, responsible answer.
- The author tore the mobile experience down to the studs and rebuilt it as a native iOS and Mac app, knowing almost to the hour what it would cost, with an AI agent doing most of the typing.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
A developer publishing as vscarpenter has cross-posted a build log: GSD, a task app that ran as a web app for a couple of years and then as a PWA, had its mobile experience torn down to the studs and rebuilt as a native iOS and Mac app, with an AI agent doing most of the typing [1][3][4][5]. The two things the author flags as worth arguing about are not the agent's output but the guardrails around it: layer boundaries enforced in the package manifest so the agent could not cross them, and a sync bug in which a device clock lied and silently dropped data [2].
Take the manifest point first, because it is the one with transferable consequence. An architecture rule that lives in a README or in a reviewer's memory is a suggestion, and a suggestion gets re-litigated once per diff. When most of the typing is done by something that produces plausible code quickly, review attention becomes the scarce resource, and a call that reaches across a layer boundary is precisely the defect that looks fine in isolation. Putting the rule where the build reads it changes who enforces it, and how often. The author's framing is that the bottleneck was never the stack but whether the product's intent had been encoded into durable boundaries before the speed arrived [10], and that one person with an agent can ship a real product only when the intent is clear, the architecture enforces the rules, and the verification loop is fast enough to keep everyone honest [9]. Worth saying plainly: the excerpt cross-posted to dev.to stops before the mechanics, so what is on the table today is the claim, not the manifest [15].
The sync bug is the same argument seen from the failure side. The load-bearing word in the author's own description is "silently": a device clock was wrong, and data went away without an error [2]. A constraint that fails loudly is cheap to own. A constraint that depends on the honesty of a client-side clock fails quietly, and quiet failures in a tool you use every day are discovered by absence, which is the worst possible detection mechanism.
The reason for the rebuild is more ordinary than either. GSD is an Eisenhower-matrix app: two axes, urgent and important, four quadrants named do first, schedule, delegate, and eliminate [7]. Its premise is catching a thought before it evaporates, and the author enumerates seven native capture surfaces the PWA could not reach, including Home Screen and Lock Screen widgets, the Share Sheet, Siri, Shortcuts, Spotlight, and App Intents [12][16]. Against that, PWA capture meant unlock, find the icon, wait for the web view, tap the box [11]. He concedes that web push and badging now exist and are enough for many apps [14], and that the platform only changed the surface while the discipline underneath changed the outcome [17]. Note also that this was a working app with natural-language capture, recurrence, subtasks, a dependency graph, time tracking, smart views, and import and export, offline-capable and fast [8], and he rebuilt it anyway, twice, knowing almost to the hour what it would cost [6][5].
What to watch: whether the full post names the enforcement mechanism in the package manifest and shows a build actually failing on a boundary violation, rather than a convention the agent happened to respect; whether that boundary survives the first feature someone wants shipped this week; and how the clock bug was caught, because the fix matters less than the detector.
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
A dev.to post by vscarpenter is headlined "I Rebuilt My PWA as a Native iOS and Mac App with an AI Agent. The Architecture Was the Hard Part." and is a cross-post of a piece originally published on the author's blog.
ReportedView cited source - [2]
The author says two parts seem worth arguing about with the dev.to crowd: enforcing layer boundaries in the package manifest so an agent cannot cross them, and the sync bug where a device clock lied and silently dropped data.
- [3]
GSD, short for Get Stuff Done, started as a web app and ran that way for a couple of years.
ReportedView cited source - [4]
The author then wrapped GSD as a PWA so it would follow him onto his phone, using Add to Home Screen, a service worker for offline, and a manifest for an icon and chrome-free launch; he describes 2023 as the year when a PWA was the honest, cheap, responsible answer.
ReportedView cited source - [5]
The author tore the mobile experience down to the studs and rebuilt it as a native iOS and Mac app, knowing almost to the hour what it would cost, with an AI agent doing most of the typing.
ReportedView cited source - [6]
The author writes that he already had a working app and rebuilt it anyway, twice.
ReportedView cited source
Sources & coverage · 1 publisher
The reporting this story was synthesized from, earliest first. Every link goes to the original.
- dev.toVinny Carpenter 🤓Aug 13I Rebuilt My PWA as a Native iOS and Mac App with an AI Agent. The Architecture Was the Hard Part.
Cited in this coverage: vscarpenter, writing on dev.to
Cited in this coverage: the dev.to excerpt as supplied
Additional citations
- vscarpenter

