Ideal offline reading app for web development content
2023-06-29 17:33:00 +0700 by Mark Smith
I've spent the early part of the week exploring various Read Later apps for reading web development content offline. First I compared Safari Reading Lists, Pocket and then I added a comparison of Instapaper. These are the most popular. What I found was that none of them were adequate. It's important because it's one of those things you don't realise you might need until you do, at which point if it doesn't work, well it's too late.
The main reason the current apps all fail is their handling of images and code snippets. A huge part of web development content is diagrams, screenshots and of course code and configuration examples. Without these it's very difficult to understand what the author is attempting to communicate. Most of the current apps remove page styling in order to save on space and apparently to create a consistent reading experience.
That's all well and good but by removing the styling they also remove the code syntax highlighting and occasionally the formatting, including newlines. Without newlines the entire code snippet is squashed onto 1 really long line. That makes it really really difficult, nay impossible, to comprehend web development articles with any kind of complexity.
The code snippets problem is bad enough to make things really terrible, but on top of that, very often images from the saved articles don't get saved. Instead either empty rectangles where the images used to be, or indeed, nothing at all. You might not even know that something important is missing. Both these bugs together make reading web development content offline effectively impossible.
I put together an opinionated list of features I think is necessary for a Read Later app in order for it to be useful for reading web development content.
Basics
- Setup should be easy, install the app and you are ready to start saving articles
- It should be totally obvious how to save a page from Safari, no wondering if you have to use a bookmarklet or the "share sheet", whatever that is
- No need to configure anything in iOS settings
- Saving always at least adds a new item, or displays an error somewhere if there was an issue, a viewable activity stream for all modifying operations performed would be useful
- All images in a page get saved no matter what
- Code snippets and config file examples remain untouched, with syntax highlighting, newlines etc
- App displays when it is downloading / synching items
- App downloads and syncs in the background so you never have to check that it synched before you go offline, no surprises when you get offline, the articles you saved should be there ready for you to read
- Clear docs with guidelines / best practices for website devs so they know how to structure their pages in order to have their pages save correctly
- App doesn’t randomly refresh pages, once the page is downloaded / synched, you can switch between pages quickly and easily without the page going blank or loosing content
- App doesn’t insist on restarting every time you bring it to the foreground
- Title, description and website address are always saved and displayed correctly on saved articles listing screen
- All text of an article can be copy pasted, including author, date/time, title, images and code snippets
- Images can be zoomed
- Listing page has a thumbnail next to item
Nice to haves
- The page looks identical to the page you saved, don’t remove styling
- In the background save copies of pages linked to by the saved page, and be able to read these pages offline when you click on associated link in the saved page
- Videos get saved for offline viewing
- Widget to easily see the list of items being downloaded / synching
- Automatically create an archive of the page using an archive service like archive.md or archive.org way back machine
I think that a Read Later app with these features would be good enough for reading web development articles offline. Reading articles offline is not only extremely convenient in a busy world but it could even prove vital should you experience internet connectivity issues. Hopefully that's something that many of us have learnt, having now got through the many pandemic lock downs of the past couple of years. App builders please consider making your apps ready for these types of scenarios.