Pretty cool! (I can't test it, seems unavailable in Germany).

How are you handling the text extraction with Readability.js? Does that run in a WebView in the background? I've built a similar, albeit less feature-complete, read-it later app in the past [1]. Spent most of my rewriting the core of the Postlight parser [2] in native Swift.

Anyway, cool project, and I'd probably buy this once its available.

[1] https://franz.hamburg/writing/read-later-app.html

[2] https://github.com/postlight/parser

Thanks! It should be available in Germany now — let me know if you still have trouble finding it.

Yes, Readability.js is injected into a hidden WKWebView for each extraction. I also recently added Defuddle as a second engine to handle JS-heavy sites and ones with custom extractors (Twitter/X, Reddit, YouTube, Hacker News, GitHub, etc.). A coordinator routes to the right engine based on the domain. After extraction, the HTML gets parsed into typed content blocks and rendered as native SwiftUI views — much nicer for theming and performance than using a web view. The Share Extension just grabs the URL and hands it off to the main app for full processing.

That's really cool that you rewrote the Postlight parser in native Swift — that's a serious undertaking. I considered going fully native for parsing but the JS engines are surprisingly capable when you let them run in a WebView. Really enjoyed reading your write-up too! The scoring approach you took for content extraction is essentially what Readability.js does under the hood too — scoring DOM nodes by heuristics and bubbling scores up to parents. Impressive that you reimplemented that in native Swift.