Back to browse
GitHub Repository
21 starsTypeScript

On-device article extraction and ePub generation in a React Native app

by chapiware·Mar 2, 2026·1 point·0 comments

AI Analysis

●●SolidNiche GemSolve My ProblemZero to One

On-device article extraction + EPUB generation for e-ink readers, zero cloud involvement.

Strengths
  • Mozilla Readability + linkedom for lightweight extraction inside React Native without bloat
  • Headless WebView rendering handles JS-heavy sites (Twitter) where static parsing fails
  • Direct LAN transfer to device means genuine privacy — no cloud intermediaries at all
Weaknesses
  • Audience limited to Xteink X4 owners; won't resonate with Kindle, Kobo, or generic e-reader users
  • No cloud sync or cross-device support — intentional, but limits utility for multi-device workflows
Category
Target Audience

Xteink X4 e-reader owners, avid readers, privacy-conscious content archivists

Similar To

Pocket · Instapaper · Omnivore

Post Description

I'm open-sourcing Send to X4, an iOS/Android app that turns shared links into clean EPUBs entirely on-device, then transfers them to an Xteink X4 over local Wi-Fi — no accounts, no cloud.

Repo (MIT): https://github.com/Xatpy/send-to-x4-mobile-app Product page + screenshots: https://chapiware.com/send-to-x4

WHY I BUILT IT The X4 is a focused e-ink device, but getting long-form content onto it from a phone almost always involves a cloud step somewhere. I wanted a pipeline where the phone handles extraction and packaging entirely, and the device only ever receives finished files over LAN. Turns out doing this well on-device is more interesting than I expected.

INTERESTING TECHNICAL BIT - Reader mode extraction: Mozilla Readability + linkedom (a fast DOM implementation) to keep extraction lightweight inside RN. - Client-side rendered pages: for sites where "fetch HTML and parse" fails, I use a headless WebView render → DOM capture → extract pipeline. This is the most fragile part of the stack and where I'd most value outside eyes. - EPUB generation: downloads inline images locally, normalizes formats (transcoding problem types to JPEG for e-ink compatibility), then builds a compliant EPUB. - Local transfer: pushes the resulting EPUB / .xtc / .bmp to the device via its local API (stock + CrossPoint firmware supported).

STACK React Native / Expo (Hermes + new architecture).

WHAT I'M LOOKING FOR - Feedback on the on-device extraction architecture — JS thread vs native, the WebView approach, perf pitfalls - Ideas for making extraction less whack-a-mole (site adapters, heuristics, test corpus) - PRs for niche sites / edge cases are very welcome

Similar Projects

Productivity●●Solid

CrossX – iOS/macOS App to Convert web/X articles to ePub for e-reader

Sends cleaned EPUBs straight to an Xteink over its Wi‑Fi hotspot using on‑device parsing, a Safari share extension, and automatic mDNS detection for stock and CrossPoint firmware. Nice local-first stance — no cloud or accounts — and it even bundles a file manager and activity history. Parsing images and batch conversion are called out as next steps; those would make this useful beyond its already-specific audience.

Niche GemShip It
pompeii
224mo ago