# Design a Mobile News App: Personalization, Push, and Offline

Source: https://www.techinterview.org/post/3233475099/design-mobile-news-app-personalization/
Updated: 2026-07-26 · techinterview.org

Mobile news apps (Apple News, Google News, Flipboard, NYT app) sit at an unusual intersection of [feed personalization](/post/3233474168/system-design-twitter-news-feed-timeline-fanout-on-write-fanout-on-read-celebrity-problem-ranking-caching/), time-sensitive push delivery, offline reading, and ad-supported business models. The interview tests whether you understand the constraints and the engineering tradeoffs.

## Functional requirements

- Personalized feed of news articles — each user sees a different ordering based on their interests, not a single global front page. Interviewers want you to separate the ranking layer from the content store so the feed can be recomputed without touching the articles themselves.

- Topic and source preferences — users follow topics (sports, politics) and specific publishers, and can mute sources they dislike. These explicit signals are the strongest and least noisy input to ranking.

- Breaking-news push notifications — the app delivers time-sensitive alerts within seconds, which pushes you toward a fan-out system that can reach millions of devices quickly without falling behind.

- Offline reading of saved or downloaded articles — a user on a commute or a plane expects saved stories to open with no network. That means pre-downloading body text and images, not just caching URLs that fail when offline.

- Search — users look up past coverage of a topic or a specific event. A full-text [index](/post/3233461821/database-indexing-interview-guide/) over article bodies with filters for date, source, and topic covers most of these queries.

- Comments and reactions — the moderation pipeline matters more than raw throughput here, since news comment sections attract abuse and need both automated filtering and human review.

## Architecture

Three pipelines: **ingest** (publishers send articles), **ranking** (personalization), **delivery** (feed + push).

## Ingest

Publishers feed articles via:

- RSS / Atom feeds — the lowest-friction path, where you poll each publisher's feed on an interval. Be ready to talk about polling frequency, deduplicating re-published items, and handling malformed feeds.

- Direct API (newsroom-side push) — large partners push articles to you the moment they publish, cutting the latency that polling adds. This is how breaking news reaches the pipeline fastest.

- News aggregator partnerships — third-party feeds that bundle many small publishers, useful for breadth but requiring extra normalization and careful attribution back to the original source.

Articles are normalized: extract title, author, body (HTML), images, publish time, topic tags. Stored in a [content database](/post/3233459967/sql-vs-nosql/).

## Personalization

Server-side ranking. Inputs:

- User's explicit topic preferences — the topics and sources the user chose directly, the highest-signal input and the easiest to reason about.

- User's historical reading behavior — what they opened, how long they read, and what they scrolled past. Interviewers probe how you log these events and how you avoid overfitting to a single viral article.

- Article freshness — news decays fast, so a time-decay factor keeps stale stories from dominating the feed even when they were once popular.

- Article popularity (signals from other users) — click-through and dwell time across the whole user base, which is what you fall back on for cold-start users who have little history.

- Source diversity to avoid filter bubbles — deliberately inject stories from outside the user's usual sources so the feed doesn't collapse into one viewpoint. Expect follow-up questions on how you measure and tune this.

Output: a ranked list per user. Cached for sub-second serving.

## Push notifications

Two types:

- **Editorial breaking news:** human-curated, sent to broad audiences

- **Personalized:** ML-decided per user — "you read X yesterday; here is a follow-up"

Editorial pushes have strong social impact (they wake millions simultaneously). Personalized pushes have lower impact but tighter relevance.

## Offline reading

User saves articles for offline. Implementation:

- Article body downloaded as HTML/text — store a self-contained version so rendering needs no network round-trip later.

- Images downloaded — fetch and store images locally, usually at a lower resolution to save space and battery.

- Stored in SQLite + filesystem — metadata and text go in SQLite for querying, while large binaries like images live on the filesystem with paths referenced from the database.

- Render in WebView with offline shell CSS — bundle the styling with the app so a saved article looks right without fetching any external CSS.

Many apps auto-download top stories overnight on Wi-Fi for "morning brief" reading on commute.

## Article rendering

Native rendering for performance and consistency:

- Strip publisher CSS; apply your own typography — gives a consistent look across sources and avoids broken layouts from arbitrary publisher markup.

- Lazy-load images — load images as they scroll into view to keep the initial render fast and cut data use.

- Embedded videos render in native players — hand video off to the platform player for hardware decoding and correct fullscreen behavior instead of a web embed.

- Reader mode is the default UX in 2026 — a clean, text-first view stripped of clutter, with the original web layout available as an option for readers who want it.

## Live updates

Breaking news scenarios — live blog of an event. Client subscribes to an SSE or [WebSocket](/post/3233474372/system-design-design-discord-voice-text-channels-server-architecture-webrtc-permissions-bots-real-time-presence/) stream for the article. Updates appear without manual refresh.

## Battery and data

- Background sync only on Wi-Fi by default — avoids burning a user's cellular allowance on pre-fetching they never asked for.

- Image quality down-tuned on cellular — serve smaller image variants when the device is on a metered connection.

- Auto-play video off by default to save data — let users opt in rather than streaming video the moment a card scrolls into view.

- Push frequency capped per user to avoid annoyance — enforce a per-user [rate limit](/post/3233474159/system-design-rate-limiter-token-bucket-sliding-window-leaky-bucket-distributed-rate-limiting-api-gateway/) so a busy news day doesn't trigger a flood of alerts and a wave of uninstalls.

## Ads

Most news apps are ad-supported. Architecture concerns:

- Ad SDK loaded conditionally based on consent (GDPR, CCPA)

- Ad rendering must not block content rendering

- Track ad viewability for accurate billing

## Frequently Asked Questions

### How does Apple News handle the difference between subscribed and free content?

Subscribed publications open in full reader; free articles may show only summary with link to publisher. Per-article paywall logic governs UX.

### Why are some articles missing from my personalized feed?

Personalization filters can over-prune. Most apps offer a "less personal" view (chronological, by source) as a fallback.

### How is breaking news different from regular?

Editorial classification at the publisher; aggregator may amplify based on velocity and corroboration. Push delivered with high priority.
