3 ms·
Show HN: On-device article extraction and ePub generation in a React Native app
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 https://github.com/Xatpy/send-to-x4-mobile-app
Product page + screenshots: https://chapiware.com/send-to-x4 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