I Built My Own dev.to Feed Page Instead of Embedding a Widget
Source: Dev.to
Why I Skipped the dev.to Widget
There’s an easy way to show your dev.to posts on your website: paste in a widget. I almost did that, but the more I looked at it, the more it felt slightly disconnected from how I build everything else. My site is fully hand‑built — HTML, CSS, JavaScript, structured layouts, injection layers, theme handling. Everything is intentional. Dropping in a third‑party widget would have worked, but it wouldn’t have felt like part of the system; it would have been something sitting inside it. That difference matters more than it sounds.
Using the dev.to RSS Feed
dev.to provides a public RSS feed. That’s data. Instead of embedding a UI component, I fetched the feed, parsed the XML, and rendered the posts as native components on my site. No iframe—just data → structured objects → my own card components.
How It Works
- Request the RSS XML from
https://dev.to/feed/your-username. - Parse the XML (e.g., with
DOMParserin the browser or a server‑side library). - Map each
<item>to a JavaScript object containing title, URL, publication date, and excerpt. - Feed those objects into my existing card component library.
Benefits
- Design consistency – the posts match my design system (spacing, typography, hover states).
- Performance – minimal impact because only raw data is transferred; no extra scripts or iframes.
- Authentication‑agnostic – the page works whether a visitor is logged into dev.to or not.
- Separation of concerns – RSS is simple, stable, and predictable; it doesn’t try to control layout.
This separation—content from presentation—is powerful. dev.to handles publishing and discovery; I handle the presentation.
Takeaway
Control over the surface area of your site makes everything cleaner long‑term. When you own the presentation layer, you’re not negotiating with someone else’s styles, scripts, or structure—you’re just working with data. If you’re building a personal site and want your blog content there too, consider pulling the feed instead of embedding the widget. It’s a small change, but it keeps your architecture intentional.