Full text RSS is back

Ever since we re-platformed Piccalilli to Astro, full text RSS no longer worked like it did with Eleventy. We’ve hacked together a fix and now it does!

This is just a quick one and something I never wanted to have to announce, but here we are: our RSS feed is back to being a full text RSS feed.

This has (rightly) annoyed some folks because historically, Piccalilli always provided a full text RSS feed. Unfortunately though, since we re-platformed the site on Astro to replace Eleventy, that has not been the case.

It wasn’t for a lack of trying though. Astro’s component architecture doesn’t have a render to string capability like React or Preact does, so rendering MDX content — which we use for demos and code samples — as full text with the built in RSS capabilities couldn’t work. There is an interesting discussion over on the Astro roadmap where contributors are trying to work that out, but it’s hard as hell.

We get that, but also, we didn’t want to wait for this to be resolved to have a full text RSS on Piccalilli. It’s something I personally did not feel comfortable about. Luckily our developer Leanne, doesn’t give up easily and got us over the line after trying a few different approaches.

The first approach that we couldn’t get to work in our context was this from Scott Willsey. It’s a great approach (and write up) but we just couldn’t get it to work. I know it’s worked for loads of people because it was by far the most recommended resource when we reached out to friends in the industry about this problem. If you’re in a similar situation to what we were in with RSS, I would definitely recommend looking at Scott’s approach.

With that approach not working for us, we spotted a Jhey Tompkins tweet:

Put together a dedicated “Writing” page on the personal site rebuild with its own filtered RSS feed ✨

Astro made this a breeze, but I’m not using the Astro RSS package 👀

Jus’ gotta integrate Web Mentions 🤓 Anyone else done these? Or have a favorite resource for doing so?

We sleuthed on their open source codebase and found they approached RSS with an interesting React DOM render-to-string sorta deal. Astro components aren’t React, but for us at least, they’re JSX, so after a heroic effort from Leanne, we managed to utilise a similar approach to Jhey and actually get full text RSS working.

Is this the ideal setup? Likely not, no. Does it work for now and are we happy? I’d say so. This suits Set Studio’s methodology of iteration perfectly well too. Sure, when Astro natively allows us to have a full text RSS feed, we’ll almost certainly refactor, but this iteration of the Piccalilli platform that gives us a full text RSS feed feels good.

You might ask why we aren’t writing up the how. The honest answer is we hacked this together (😅) and I don’t feel 100% about writing that up because we wouldn’t be able to support people who were having problems. When it’s all native though, absolutely!

You can catch the main RSS feed here, the links RSS feed here and each category RSS feed on their pages, such as the CSS one.

I’ll wrap up with apologising if your RSS reader has had some repetition from us recently. We feel like RSS is solid now, so I hope that doesn’t happen again any time soon. Thanks for your patience and support!