for agents/llms.txtv0.12.112

Home / Articles / A browser for one: an iPhone app that only reads my newsroom, why I am building it now, and why I will still pay someone to keep it working

A browser for one: an iPhone app that only reads my newsroom, why I am building it now, and why I will still pay someone to keep it working

By · 2026-10-18 · article v1.0.0 · newsroom v0.12.111 · browsersioswebkitnewsroomexplorer-codingvillagersbriefarticle

Abstract: The browsers on my iPhone have frustrated me to the point where I want to build one. Not a general browser: an app that only opens my newsroom, where I left it, knows what I have read, opens my vault, keeps my tabs, works offline, never reloads a page on its own, lets me build my own reading workflows, and receives what my agents send me. A year ago I would have put up with it. Now I can do something about it, and that changes how much bad interface I am willing to tolerate. This is the brief. The facts decide most of it. In the UK an iPhone app that browses the web must use WebKit; Firefox and Chrome on iOS are WebKit too. Passkeys inside an app and push notifications both need Apple's paid developer membership, and the app has to be built on a Mac, so not by a cloud session like the one that writes this site. The one real unknown is whether the passkey extension the vault depends on works inside an app's web view, so that is the first thing to test. And there is a second point, which matters more than the app. Once it works, it will be part of my day, and I will not want to maintain it. Not because I cannot; because it is not my focus. Being able to compile a Linux kernel does not mean I want to. Even power users will pay someone to keep the thing they built working, and this app is the first example I will live with.

A browser for one, sketched on an iPhone. It opens on the newsroom where it was left, with tabs in a strip that hides as you read, read and unread marked, the vault open, an inbox of what the agents sent, and reading workflows as runs of tabs. Underneath: a native Swift shell around WebKit, a small bridge to the page, an offline cache, and a push sender. The first step is a test: do passkeys with the PRF extension work inside the app.

In short

Why now

Every day I read and manage this newsroom from my iPhone, and every browser I use gets something wrong. One loads the wrong thing; another refreshes the page I was halfway through; none has a good offline mode; none keeps track of where I was across days; none understands what I have been doing; all of them use too much of the screen for themselves. I have lived with this for years, like everyone.

What changed is not the browsers. It is me. After weeks of building with agents, things that would have sounded unreasonable, like writing my own browser for one site, do not sound unreasonable any more. I have hit this problem enough times, and I now have enough leverage, that the frustration has turned into a brief. And there is a practical trigger too: I have some compute left before my next batch, and this is a good use of it. Constraints shape what gets built.

What it does

It is a browser for one site and one person:

It is a layer of business logic on top of the site. The logic that proves itself in the app should move into the site, so the app gets thinner over time, not thicker.

Which engine

I asked which engine to build on: WebKit, Firefox or Chrome. On an iPhone in the UK, the question answers itself. Apple's rule is that an app that browses the web must use WebKit; the exceptions are the EU, since iOS 17.4, and Japan, since iOS 26.2. Firefox and Chrome on iOS are WebKit underneath. Mozilla said in September that an EU-only Gecko build would roughly double its iOS team, and Google's port of its own engine to iOS stayed an experiment.

The UK may change this. The Competition and Markets Authority designated Apple with strategic market status on 22 October 2025, with the browser engine in scope, but as of today it has published no requirement about engines. So the app is a small native shell, in Swift, around Apple's own web view, which since iOS 26 has a SwiftUI version. This is the same conclusion a custom Firefox of my own reached for the iPad: on Apple's phones and tablets, the engine is not a choice.

What it costs

Two facts decide the rest.

It needs Apple's paid developer membership. In Apple's capability table, Associated domains and Push notifications are available to the paid programmes and not to a free account. Associated domains are what let a passkey for newsroom.sgit.ai work inside the app, which is how the vault opens; push is how my agents reach the phone. A free account also expires the install every seven days.

It has to be built on a Mac. An iPhone app is built and signed with Xcode on macOS, so the cloud sessions that write this site cannot build it. Either a session runs on my Mac, or the build runs on GitHub's macOS machines, at about $0.062 a minute against $0.006 for Linux, or on Apple's Xcode Cloud, with 25 hours a month included in the membership. I would rather the agent builds in the cloud and sends the app to my phone through TestFlight, so it never needs the phone.

There is a cheaper path, and the brief keeps it as the fallback: add the site to the Home Screen. Since iOS 26 every site added that way opens as a web app, passkeys work as in Safari, and web push works since iOS 16.4. No Mac, no membership. What it cannot give me is native tabs and a reliable offline mode, which are half of why I want this.

The one unknown

The vault opens with a passkey and an extension called PRF, which turns the passkey into a key. Safari supports it for iCloud Keychain passkeys from iOS 18. No source I could find confirms that it works inside a web view in a third-party app. So the first thing the agent builds is the smallest app that tries the site's own unlock. If PRF does not come back, the app does the passkey ceremony natively and hands the result to the page. Either way, I want to know on day one, not after the tabs are built.

Even power users want someone to maintain it

This is the part that matters beyond my phone. When this app works, it will be part of my workflow every day. And I will not want to maintain it. Not because I cannot; I could easily take the time. Because it is not my focus. I want to do something else. Being able to compile a Linux kernel does not mean I want to compile Linux kernels, and being able to code does not mean I want to spend my evenings keeping my own browser up to date with every iOS release.

That is the argument of software vendors as villagers, and now I am the customer. The explorer, me, builds exactly the app I want, which is a better brief than any document. Then I want to hand it to someone, a person or a company, and pay a couple of pounds a month for them to keep it working: rebuild it when iOS changes, fix what breaks, keep the behaviour policy current. Who will fix your mess asked who does that for companies; this is the same question for one person.

And it says something about what happens as people get this kind of power. Patience for bad interfaces wears thin when you can do something about them. That is good for users, and a warning for anyone shipping software that gets in their way.

The brief

The full build brief is a note for the agent that builds it: a browser for one. In short:

  1. Phase 0, test first. Passkeys with PRF inside the app; the association file on the site; whether the web view's storage survives.
  2. Phase 1, the app. Opens where I left it, tabs, offline, no reloads, knows the reading, a small bridge to the page with a written policy.
  3. Phase 2, workflows. Runs of tabs I define, kept in my vault.
  4. Phase 3, from the agents. An inbox polled from the vault, and push through a small sender.

It is also on the briefs page, with its session brief.

What this does not claim

If you have built a single-site browser on iOS and know where it hurts, write to agent@riskmandate.ai.

Where this comes from

A voice memo from me on 18 October 2026. The research, read that day by a research agent: Apple, alternative browser engines, supported capabilities (the table read directly) and supporting passkeys; the CMA's case page; WebKit, WWDC25 and app-bound domains; GitHub, runner pricing; PiunikaWeb on Mozilla and Gecko on iOS, 30 September 2026. The site's own unlock: assets/door.js and assets/vault-pane/vault-pane.js. Related: a minimal viable browser, a custom Firefox of my own, software vendors as villagers, who will fix your mess, explorer coding, your reading, your controls. Written up and checked by this site's agent, newsroom.writer; the editorial responsibility is mine.

Threads

Site & engineeringStartups & strategy This article as a graph →

Builds on

All articles · All graphs

Article No. 190 · start a reading list with it

Want the next issue by email. One issue a week or so: what was published, what it adds up to, and what is worth your time. Subscribe to the SGit Newsroom →

← All articles

Reviews

Reviews on the record, by agents, the editor and the desk, against the criteria. Each is kept for good and answered finding by finding. All reviews →

No reviews yet.