Nicheloom

Market intelligence for builders — see what's gaining traction before it's crowded.

I built a fast RSS reader in Zig

Details

External ID
46293564
Source
HN
Company
—
Product
I built a fast RSS reader in Zig
Website domain
github.com
Launched
Dec. 16, 2025
Cohort
—
Upvotes
90
Upvotes percentile
0.8874045801526718
Tags
—
Fetched at
Sept. 7, 2026, 9:25 p.m.
Updated at
Sept. 7, 2026, 9:25 p.m.

Description

Well, I certainly tried. I had to, because it has a certain quirk inspired by "digital minimalism."The quirk is that it only allows you to fetch new articles once per day (or X days).Why? Let me explain...I want my internet content to be like a boring newspaper. You get it in the morning, and you read the whole thing while sipping your morning coffee, and then you're done! No more new information for today. No pings, no alerts, peace, quiet, zen, etc.But with that, I needed it to be able to fetch all articles from my hundreds of feeds in one sitting. This is where Zig and curl optimisations come in. I tried to do all the tricks in the book. If I missed something, let me know!First off, I'm using curl multi for the network layer. The cool thing is it automatically does HTTP/2 multiplexing, which means if your feeds are hosted on the same CDN it reuses the same connection. I've got it configured to handle 50 connections total with up to 6 per host, which seems to be the sweet spot before servers start getting suspicious. Also, conditional GETs. If a feed hasn't changed since last time, the server just says "Not Modified" and we bail immediately.While curl is downloading feeds, I wouldn't want CPU just being idle so the moment curl finishes downloading a single feed, it fires a callback that immediately throws the XML into a worker thread pool for parsing. The main thread keeps managing all the network stuff while worker threads are chewing through XML in parallel. Zig's memory model is perfect for this. Each feed gets its own ArenaAllocator, which is basically a playground where you can allocate strings during parsing, then when we're done, we just nuke the entire arena in one go.For parsing itself, I'm using libexpat because it doesn't load the entire XML into memory like a DOM parser would. This matters because some podcast feeds especially are like 10MB+ of XML. So with smart truncation we download the first few X mb's (configurable), scan backwards to find the last complete item tag, cut it there, and parse just that. Keeps memory usage sane even when feed sizes get massive.And for the UI I just pipe everything to the system's "less" command. You get vim navigation, searching, and paging for free. Plus I'm using OSC 8 hyperlinks, so you can actually click links to open them on your browser. Zero TUI framework needed. I've also included OPML import/export and feed groups as additional features.The result: content from hundreds of RSS feeds retrieved in matter of seconds, and peace of mind for the rest of the day.The code is open source and MIT licensed. If you have ideas on how to make it even faster or better, comment below. Feature requests and other suggestions are also welcome, here or GitHub.

Enrichment

Theme
alternative social platforms and feed readers
Vertical
Horizontal
Function
Dev tools
Audience
Developer
AI stance
Not AI
Project type
Hobby / open-source project
Normalized one-liner
fast rss reader written in zig
Manually corrected
False

Could you build this?

Partial While RSS parsing and article storage logic can be vibe-coded, doing so idiomatically in Zig with strict manual memory management and concurrency requires systems programming skill.

What it would actually take: The core application is built in Zig, utilizing its standard library for manual memory allocation, POSIX socket or libcurl wrappers for HTTP/HTTPS requests, and an XML parser for RSS/Atom feeds. Local persistence typically uses SQLite with C ABI bindings or an embedded key-value store. Zig's strict compile-time checks, lack of garbage collection, and early ecosystem maturity require hands-on low-level systems programming experience.

Discussion

20 comments analyzed.

Competitors mentioned: Kagi News, Social media algorithms, Traditional RSS readers with filtering

Concerns raised: Memory safety vulnerabilities parsing untrusted internet data in Zig, Premise that limiting sources prevents doomscrolling, Limited innovation - combination of pre-existing ideas

Feature requests: E-reader support, Advanced filters, categories, and search capabilities, Weekly/monthly source list update restrictions, Browser plugin with site reload blocking

Competitors

Other products that read as similar to this one — 61 launches clear the similarity bar, closest 8 shown.

Attention rank: #11 of 62 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).

Launched 27 days after the earliest competitor.

Other launches for this product

Same idea, different domain

Nobody's really built a dev tools tool for Sales yet.