Vibe Coding an RSS Reader: When AI-Assisted Development Meets Real-World Constraints
#Dev

Vibe Coding an RSS Reader: When AI-Assisted Development Meets Real-World Constraints

Frontend Reporter
6 min read

A developer's journey building an RSS reader with AI assistance reveals the gap between quick prototypes and production-ready software, highlighting both the promise and limitations of 'vibe coding'.

When Simon Willison shared his experience building a presentation app using AI assistance, it sparked something in me. I've always had this idea for an RSS reader that's just a simple list of unread articles, where clicking any one opens it in its original published format. Reeder is already my dream RSS app, but this idea kept nagging at me. So I decided to give it a shot - to "vibe code" my way to a solution.

Featured image

Starting with macOS: The AI-Assisted Leap

The first hurdle was macOS development. Xcode, Swift, Developer Accounts - all completely outside my wheelhouse. But AI changed the equation. It helped me go from nothing to something functional in a single evening. The experience was eye-opening: I could browse articles and see them in their original context, which was genuinely delightful for personal websites with great design.

This was pure vibes. I didn't examine the code because I knew I wouldn't understand it. The first version was pretty crappy but functional. From there, I iterated - using it for a day, fixing issues, repeating the cycle. Eventually, I reached a point where I thought, "Ok, I could use this on my personal computer."

But then reality set in. The app was getting more complex, and the AI was failing more frequently. I was trying to move some buttons around in the UI, and the AI just said, "Nah bro, I can't." That's when I realized the limitations of this approach.

The Distribution Problem

Even if I could get the app working perfectly, I had no idea how to share it with anyone. I wouldn't feel comfortable distributing software I didn't understand, even though I had handled things like security properly by storing credentials in the built-in keychain.

This is where the road stopped for me. I'm picky about software, so my standards are high. But I'm also lazy, so my patience is low. The combination of the LLM failing repeatedly, my inability to troubleshoot anything, and not wanting to learn Apple development created a perfect storm of frustration.

Pivoting to Web: CORS Complications

"Screw it," I thought. "I'll build it as a website!" But websites don't really work for this kind of app because of CORS. I can't just stick an article's URL in an <iframe> and preview it because certain sites have cross-origin headers that prevent display under another domain.

But that didn't stop me. I tried building a simple list view anyway. I could install this as a web app on my Mac and get a basic list view:

Screenshot of an application window on macOS showing a list of article titles from an RSS feed.

Anytime I clicked on a link, it would open in my default browser. Actually, not a bad experience. It worked pretty decently on my phone too. Once I visited my preview deploy, I could "install" it to my home screen, and when I opened it, I'd have my latest unread articles. Clicking on any of them would open a webview that I could easily dismiss and get back to my list.

Screenshot of two screens from iOS side-by-side. One is a list of articles,  the other is an article preview. The list has a specific article highlighted with an arrow pointing to the preview, showing that a click results in a page load.

Not too bad, but not what I wanted, especially on desktop. It seemed like the only option to 1) get exactly what I wanted, and 2) distribute it - all in a way that I could understand in case something went wrong - was to make a native app.

Electron: Leveraging Existing Skills

At this point, I was thinking: "I'm too tired to learn Apple development right now, and I've worked for a long time on the web, so I may as well leverage the skills that I got."

So I vibe coded an Electron app because Electron would let me get around the cross-site request issues of a website. This was my very first Electron app, and again, the LLM helped me go from nothing to something quite quickly - but this time I could understand my something way better.

The idea was the same: unread articles on the left, a preview of any selected articles on the right.

Screenshot of an Electron app showing a list of feed articles in the sidebar and a preview of the selected article on the right.

It's fine. Not really what I want. But it's a starting point. Is it better than Reeder? Hell no. Is it my wildest dreams realized? Also no. But it's a prototype of an idea I've wanted to explore.

The Reality Check

I'm not sure I'll go any further on it. It's hacky enough that I can grasp a vision for what it could be. The question is: do I actually want this? Is this experience something I want in the long run?

I think it could be. But I have to figure out exactly how I want to build it as a complementary experience to my preferred way of going through my RSS feed. Which won't be your preference. Which is why I'm not sharing it.

The Vibe Coding Paradox

So what's my takeaway from all this? I don't know. That's why I'm typing this all out in a blog post.

Vibe coding is kinda cool. It lets you go from "blank slate" to "something" way faster and easier than before. But you have to be mindful of what you make easy.

You know what else is easy? Fast food. But I don't want that all the time. In fact, vibe coding kinda left me with that feeling I get after indulging in social media, like "What just happened? Two hours have passed and what did I even spend my time doing? Just mindlessly chasing novelty?"

It's fun and easy to mindlessly chase your whims. But part of me thinks the next best step for this is to sit and think about what I actually want, rather than just yeeting the next prompt out.

I've quipped before that our new timelines are something like: Nothing -> Something? 1hr. Something -> Something Good? 1 year. The making from nothing isn't as hard anymore. But everything after that still is.

Understanding it. Making it good. Distributing it. Supporting it. Maintaining it. All that stuff. When you know absolutely nothing about those - like I did with macOS development - things are still hard.

After all this time vibe coding, instead of feeling closer to my dream, I actually kinda feel further from it. Like the LLM helped close the gap in understanding what it would actually take for me to realize my dreams.

Which made me really appreciate the folks who have poured a lot of time and thought and effort into building RSS readers I use on a day-to-day basis. Thank you makers of Feedbin & Reeder & others through the years. I'll gladly pay you $$$ for your thought and care.

In the meantime, I may or may not be over here slowly iterating on my own supplemental RSS experience. In fact, I might've just found the name: RxSSuplement.

Screenshot of a macOS RSS reader app with a list of unread articles in the sidebar and a preview of one of the selected articles on the left available as a web page on the right.

Comments

Loading comments...