<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/rss-is-dead-el3fwb91h" -->

---
title: RSS is dead | daily.dev
description: A personal essay tracing one developer's long relationship with RSS, from building a minimal jQuery-based reader years ago, through writing a Go-based CORS...
canonical: https://daily.dev/posts/rss-is-dead-el3fwb91h
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: RSS is dead | daily.dev
og:description: A personal essay tracing one developer's long relationship with RSS, from building a minimal jQuery-based reader years ago, through writing a Go-based CORS...
og:url: https://daily.dev/posts/rss-is-dead-el3fwb91h
og:image: https://api.daily.dev/og/posts/eL3FWb91H.png
og:image:alt: RSS is dead
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# RSS is dead

**[zserge's blog](https://daily.dev/sources/zserge)** · 7 min read · 0 upvotes · 0 comments

## Summary

A personal essay tracing one developer's long relationship with RSS, from building a minimal jQuery-based reader years ago, through writing a Go-based CORS proxy when public proxies died, to reviving the project as a modern single-page app called Headline. The rewrite favors vanilla ES6 and CSS over frameworks, turns the app into a PWA with offline caching, works around WebKit's local storage eviction by encoding feeds into the URL (enabling QR-code device sync), and describes failed experiments with word2vec and NLP for news filtering before settling on simple keyword highlighting. Concludes that RSS isn't really dead, just less central than it used to be.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://zserge.com/posts/rss>

## Questions this post answers

### How can I persist a web app's user data as a PWA if WebKit clears local storage after inactivity?

Serialize the data into the page URL itself instead of relying on local storage. Since WebKit and Safari can erase local storage for PWAs unused for a period, encoding a list of feeds (or other state) into the URL means bookmarking the page preserves that data permanently, and it can even be shared across devices by converting the URL into a QR code.

_Developers hardening PWAs against storage eviction quirks can find similar workarounds shared on daily.dev._

### How do you build a CORS proxy in Go to fetch RSS feeds from another origin in the browser?

A minimal Go CORS proxy listens on an address, reads a target URL from a query parameter, forwards the request with the original User-Agent, copies the response headers and status code back, and adds Access-Control-Allow-Origin and related CORS headers so client-side JavaScript can fetch RSS/Atom XML from another origin without being blocked.

_Anyone wiring up cross-origin data fetching can compare approaches like this on daily.dev._

## Similar posts on daily.dev

- [The Death of Social Media is the Renaissance of RSS – Smartlab](https://daily.dev/posts/the-death-of-social-media-is-the-renaissance-of-rss-smartlab-dekbnoags) · Hacker News · 1 upvotes · 1 comments
- [RSS doesn’t have to be boring](https://daily.dev/posts/rss-doesn-t-have-to-be-boring-idvrxci23) · Bite Code · 0 upvotes · 0 comments
- [Building a local LLM news brief taught me my real problem wasn't the sources, it was the apps](https://daily.dev/posts/building-a-local-llm-news-brief-taught-me-my-real-problem-wasn-t-the-sources-it-was-the-apps-eggpshxlp) · XDA Developers · 0 upvotes · 0 comments
- [Current](https://daily.dev/posts/current-osgu1ri8r) · Lobsters · 0 upvotes · 0 comments
- [The View From RSS](https://daily.dev/posts/the-view-from-rss-1fuef8cxw) · Hacker News · 0 upvotes · 0 comments

---

Tags: [#webdev](https://daily.dev/tags/webdev), [#javascript](https://daily.dev/tags/javascript), [#startup](https://daily.dev/tags/startup), [#golang](https://daily.dev/tags/golang)

[View this post on daily.dev](https://daily.dev/posts/rss-is-dead-el3fwb91h)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"RSS is dead","url":"https://daily.dev/posts/rss-is-dead-el3fwb91h","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/rss-is-dead-el3fwb91h"},"datePublished":"2026-08-23T10:20:13.067Z","dateModified":"2026-08-23T10:20:42.348Z","description":"A personal essay tracing one developer's long relationship with RSS, from building a minimal jQuery-based reader years ago, through writing a Go-based CORS...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/80114f03f4e1e6b2bbec7afaf31421a3?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/80114f03f4e1e6b2bbec7afaf31421a3?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"zserge's blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"zserge's blog","logo":"https://media.daily.dev/image/upload/s--KQnFBOIT--/f_auto,q_auto/v1787480407/logos/zserge","url":"https://daily.dev/sources/zserge"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/rss-is-dead-el3fwb91h","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"webdev,javascript,startup,golang","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"zserge's blog","item":"https://daily.dev/sources/zserge"},{"@type":"ListItem","position":3,"name":"RSS is dead"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/rss-is-dead-el3fwb91h#faq","mainEntity":[{"@type":"Question","name":"How can I persist a web app's user data as a PWA if WebKit clears local storage after inactivity?","acceptedAnswer":{"@type":"Answer","text":"Serialize the data into the page URL itself instead of relying on local storage. Since WebKit and Safari can erase local storage for PWAs unused for a period, encoding a list of feeds (or other state) into the URL means bookmarking the page preserves that data permanently, and it can even be shared across devices by converting the URL into a QR code. Developers hardening PWAs against storage eviction quirks can find similar workarounds shared on daily.dev."}},{"@type":"Question","name":"How do you build a CORS proxy in Go to fetch RSS feeds from another origin in the browser?","acceptedAnswer":{"@type":"Answer","text":"A minimal Go CORS proxy listens on an address, reads a target URL from a query parameter, forwards the request with the original User-Agent, copies the response headers and status code back, and adds Access-Control-Allow-Origin and related CORS headers so client-side JavaScript can fetch RSS/Atom XML from another origin without being blocked. Anyone wiring up cross-origin data fetching can compare approaches like this on daily.dev."}}]}
```

