Shiori
A native iOS client for shiori.sh
A SwiftUI app built on top of shiori.sh, Brian Lovin’s read-it-later bookmarking service. I took his web design as a starting point and built a native iOS client with Liquid Glass, iPad split-view, tweet rendering, and Apple Intelligence summaries.

Role
Design & Engineering
Timeline
March 2026
Stack
SwiftUI, Apple Intelligence
The Spark
I wanted to get back to Swift. The kind of craft work I got into with Tiller — native UI, platform conventions, an app that actually feels like it belongs on the device.
Brian Lovin had just launched shiori.sh, his read-it-later service. Clean API, no native iOS client. Weekend project.
Sixteen years ago I built Faveous because I couldn’t find my saved content across services. Now I’m building a native client for someone else’s version of the same problem.
Clean API, no native client. That’s a weekend project.
The Build
Built in a weekend with Claude Code and the Xcode MCP. I started from Brian’s web design, translated it to native iOS with Liquid Glass, then kept adding: iPad split-view, Mac sidebar navigation, home screen widgets, a share extension, on-device AI summaries via Apple Intelligence.
I didn’t open Figma once. SwiftUI was the design tool. Iterate in code, check the simulator, ship from Xcode. For something this size, separating design from implementation just slows you down.
The Details
Features that go beyond the web app.
On-device daily summaries
Apple Foundation Models generate a categorized digest of recent bookmarks, grouped by topic with highlights from each article. Entirely on-device, no API keys.
This feature also feeds into Daily Digest, my AI-generated podcast. The pipeline pulls links directly from the Shiori API every morning.

Tweet & X post rendering
Saved a tweet URL? Shiori renders it inline with author, text, and thread context — no need to open the browser.

Share extension
Tap share from Safari, Twitter, or any app — Shiori saves the bookmark in one tap. Runs in its own process with shared keychain auth.

Weekend Well Spent
Shiori started as an excuse to write Swift. I use it every day now.