Design a Mobile Read-It-Later App

Read-it-later apps (Pocket, Instapaper, Matter, Readwise Reader) save articles for later consumption — stripped of ads, formatted for reading, available offline. The interview tests whether you understand article extraction, offline-first sync, and the polish that distinguishes serviceable from delightful.

Functional requirements

  • Save an article via share sheet, email, or browser extension
  • Strip ads, navigation, sidebars
  • Format for reading (typography, dark mode, spacing)
  • Read offline
  • Tag and search
  • Sync across devices
  • Optional: text-to-speech reading

Article extraction

The hardest technical challenge. Strategies:

  • Mercury Parser / Readability: heuristic algorithms that detect article body
  • Server-side rendering: fetch the page, run extraction, return clean HTML
  • LLM-based: modern approach; passes the page to an LLM that extracts the article

Most apps use server-side extraction. On-device is too costly per article.

Storage

Per article:

  • URL, title, author, publish date
  • Extracted body (HTML)
  • Hero image (cached)
  • Tags (user-applied)
  • Read status
  • Highlights and annotations

Stored in local SQLite for instant access; synced to server.

Offline reading

On save:

  1. Server extracts article
  2. Client downloads extracted body + hero image
  3. Stored locally for offline access

Saved articles accumulate (~50KB each typical). Cap library size; offer manual cleanup.

Reading UI

Best practices:

  • Generous typography (16–18pt body)
  • Adjustable font size, family, theme (light/sepia/dark)
  • Single-column layout
  • Progress bar showing time remaining
  • Tap to scroll to next page (some apps)

Highlights and annotations

Like a Kindle:

  • Long-press to select text → highlight
  • Add a note
  • Color-coded highlights for category
  • Sync to server; available across devices
  • Export highlights to Notion, Obsidian, Readwise
  • User-applied tags
  • Auto-tags via ML (topic detection)
  • Full-text search via local FTS5
  • Filter by source, date, read status

Text-to-speech

Modern apps offer TTS for articles:

  • iOS: AVSpeechSynthesizer or third-party (ElevenLabs)
  • Android: TextToSpeech
  • Background playback works like a podcast

High-quality TTS makes articles audio-consumable. Hot feature in 2026.

Sync

Per-device library + cloud master:

  • Device adds article → uploads to cloud
  • Cloud notifies other devices via push
  • Other devices download
  • Read state and progress sync (similar to Kindle position sync)

Browser extension

The primary save mechanism. Extension hits a save endpoint on the server. Server fetches and extracts; client gets it on next sync.

Email-to-save

User forwards a newsletter to a unique email address. Server parses the article and adds to library. Common feature for newsletter consumers.

Common gotchas

  • Paywalled articles — strip behind paywall fails
  • JavaScript-heavy pages — server extraction misses content
  • Multi-page articles — only first page extracted
  • Image-heavy articles — local storage explodes

Frequently Asked Questions

Why did Pocket lose ground?

Mozilla acquired Pocket; product slowed; competitors (Readwise Reader, Matter, Omnivore) shipped faster. Sometimes the sale is the death.

How do I handle a user with 1000+ saved articles?

Pagination, filters, search. Auto-archive after 6 months unread.

What about audio articles?

Some apps generate TTS audio on save; let user listen during commute. Storage hit but valuable feature.

Scroll to Top