<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dominic Rockson]]></title><description><![CDATA[Dominic Rockson]]></description><link>https://psrockstar098.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Dominic Rockson</title><link>https://psrockstar098.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 18:57:41 GMT</lastBuildDate><atom:link href="https://psrockstar098.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The six service tax ends Sunday]]></title><description><![CDATA[Every new app I start hits the same wall. Database, auth, storage, queues, mail, realtime. Six services before any real feature.
On Sunday, October 4 I am releasing Yatta JS to kill that wall. One run]]></description><link>https://psrockstar098.hashnode.dev/the-six-service-tax-ends-sunday</link><guid isPermaLink="true">https://psrockstar098.hashnode.dev/the-six-service-tax-ends-sunday</guid><dc:creator><![CDATA[Dominic Rockson]]></dc:creator><pubDate>Thu, 01 Oct 2026 18:58:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6abc5b679b2d7a1a0dae64a9/15e9a251-7704-4348-87b4-231aa4c98cca.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every new app I start hits the same wall. Database, auth, storage, queues, mail, realtime. Six services before any real feature.</p>
<p>On Sunday, October 4 I am releasing Yatta JS to kill that wall. One runtime. Everything inside: relational DB, passkey auth, storage, websockets, durable queues, mail. Built on Bun.</p>
<p>Watch this space.</p>
]]></content:encoded></item><item><title><![CDATA[Why I built rockzy-link: the slow-navigation problem that kept nagging me]]></title><description><![CDATA[I've been shipping web apps for a while now, and there's one feeling I kept running into that drove me crazy: you click a link, and... nothing. The page sits there. Then a spinner. Then, finally, the ]]></description><link>https://psrockstar098.hashnode.dev/why-i-built-rockzy-link-the-slow-navigation-problem-that-kept-nagging-me</link><guid isPermaLink="true">https://psrockstar098.hashnode.dev/why-i-built-rockzy-link-the-slow-navigation-problem-that-kept-nagging-me</guid><dc:creator><![CDATA[Dominic Rockson]]></dc:creator><pubDate>Thu, 01 Oct 2026 11:30:53 GMT</pubDate><content:encoded><![CDATA[<p>I've been shipping web apps for a while now, and there's one feeling I kept running into that drove me crazy: you click a link, and... nothing. The page sits there. Then a spinner. Then, finally, the content.</p>
<p>Your app works. Your code is fine. But it <em>feels</em> slow. And "feels slow" is all the user actually experiences.</p>
<h2>The problem I kept hitting</h2>
<p>Every React app navigates. Most of them do it the same way: click, then start fetching, then render. The fetch starts at the worst possible moment — after the user already committed to going somewhere.</p>
<p>I kept seeing this in my own projects. You hover a menu item for half a second. Your cursor tells the whole story: I'm about to click. And the app does <em>nothing</em> with that information. It just waits. Then the click lands and the app scrambles to catch up.</p>
<p>That gap — between intent and action — is where rockzy-link lives.</p>
<h2>What I learned building it</h2>
<p>The first version just prefetched on hover. It helped, but not always. Here's what I learned making it actually work:</p>
<p><strong>1. Intent has many shapes.</strong> Hover is the obvious one, but focus matters for keyboard users. Links entering the viewport are about to be clicked. Browser idle time is free loading capacity. And pointerdown — the moment you press the button, before the click fires — is a few free milliseconds most apps just waste.</p>
<p><strong>2. Prefetching has to be polite.</strong> Browsers can only run a few requests at once. If your prefetching starves the current page or the actual navigation, you've made things worse. Deduping requests across links and tabs, and respecting the connection budget, turned out to be half the work.</p>
<p><strong>3. The cache is the product.</strong> A prefetch without a smart cache is just a wasted request. TTL, stale-while-revalidate, tag-based invalidation, mutation invalidation so you never render stale data, a bounded size so a long-lived tab doesn't eat memory — this unglamorous part is what makes navigation <em>feel</em> instant every time, not just the first time.</p>
<p><strong>4. Offline isn't an edge case.</strong> If the route data is cached, there's no reason a dropped connection should mean a blank page. Serving cached routes offline and queueing mutations for later was one of the last features I added and one of the most satisfying.</p>
<h2>Shipping it</h2>
<p>Today rockzy-link is live on Product Hunt. It's a real library: prefetch modes (hover, viewport, idle), smart caching with tags and invalidation, works with React Router, TanStack Router, or standalone. Core + link is about 2.7 KB.</p>
<pre><code class="language-bash">npm install rockzy-link
</code></pre>
<ul>
<li>Product Hunt: <a href="https://www.producthunt.com/products/rockzy-link?launch=rockzy-link">https://www.producthunt.com/products/rockzy-link?launch=rockzy-link</a></li>
<li>GitHub: <a href="https://github.com/psrockstar098/rockzy-link">https://github.com/psrockstar098/rockzy-link</a></li>
<li>npm: <a href="https://www.npmjs.com/package/rockzy-link">https://www.npmjs.com/package/rockzy-link</a></li>
</ul>
<p>What I learned most of all: performance work is mostly about <em>timing</em>. The same request, started half a second earlier, is the difference between "slow" and "instant."</p>
]]></content:encoded></item><item><title><![CDATA[rockzy-link: a React Link component that thinks ahead]]></title><description><![CDATA[Every React app navigates. And every user can feel it when navigation is slow — that half-second of emptiness between clicking a link and seeing the next page. I got tired of that, so I built rockzy-l]]></description><link>https://psrockstar098.hashnode.dev/rockzy-link-a-react-link-component-that-thinks-ahead</link><guid isPermaLink="true">https://psrockstar098.hashnode.dev/rockzy-link-a-react-link-component-that-thinks-ahead</guid><category><![CDATA[React]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Dominic Rockson]]></dc:creator><pubDate>Wed, 30 Sep 2026 00:47:46 GMT</pubDate><content:encoded><![CDATA[<p>Every React app navigates. And every user can feel it when navigation is slow — that half-second of emptiness between clicking a link and seeing the next page. I got tired of that, so I built <strong>rockzy-link</strong>: a production-ready React Link component that thinks ahead.</p>
<h2>What it is</h2>
<p>rockzy-link is a drop-in replacement for the standard React <code>Link</code>. It keeps the API you already know, and adds a brain:</p>
<ul>
<li><strong>Smart prefetching</strong> — intelligently prefetches routes the user is likely to visit next, so navigation feels instant</li>
<li><strong>Route caching</strong> — previously visited routes are cached, making return visits feel like they never left</li>
<li><strong>Scroll restoration</strong> — your users land exactly where they expect to, every time</li>
<li><strong>Built-in accessibility</strong> — proper semantics and focus management out of the box</li>
<li><strong>Offline hooks</strong> — hooks that respond gracefully when connectivity drops</li>
<li><strong>Navigation snapshots</strong> — capture and restore navigation state for richer app behavior</li>
</ul>
<h2>Get started in 30 seconds</h2>
<pre><code class="language-bash">npm i rockzy-link
</code></pre>
<pre><code class="language-jsx">import { Link } from 'rockzy-link';

function Nav() {
  return &lt;Link to="/dashboard"&gt;Dashboard&lt;/Link&gt;;
}
</code></pre>
<p>That's it. Same API, smarter navigation.</p>
<h2>Why I built it</h2>
<p>I'm Dominic Rockson, a developer from Liberia. I work in Zig and JavaScript, and I spend a lot of time thinking about how software <em>feels</em> to use. Where I'm from, fast connections aren't guaranteed — every wasted network round-trip is felt by real users. I wanted navigation that feels instant even when the network isn't, so I built the Link component I always wished existed.</p>
<h2>Try it out</h2>
<ul>
<li>📦 <strong>npm:</strong> <a href="https://www.npmjs.com/package/rockzy-link">https://www.npmjs.com/package/rockzy-link</a></li>
<li>🐙 <strong>GitHub:</strong> <a href="https://github.com/psrockstar098/rockzy-link">https://github.com/psrockstar098/rockzy-link</a></li>
</ul>
<p>rockzy-link is <strong>MIT licensed</strong> — use it anywhere, no strings attached. It's open source and will stay that way.</p>
<p>Feedback is genuinely welcome: open an issue, suggest a feature, or just star the repo if it helps you build something. Happy navigating! 🚀</p>
]]></content:encoded></item></channel></rss>