UpdateRS3PerformanceQoL

May 2026 - Live Data, Leaderboards & Under the Hood

Drop leaderboards on the RS3 page, a full client-side data architecture, instant loading states across every community page, and a fix for the stale cache problem.

K

Kyle

@Trarn · May 17, 2026

This update is mostly under the hood, but the result is that every live data widget on the site now loads correctly, updates in real time, and doesn't silently serve you stale numbers.

RS3 Drop Leaderboards

The Undead Legion page now has a full leaderboard section with three tabs. Hall of Legends shows the top 10 clan members by XP. Top Drops ranks the ten highest-value individual drops ever submitted. Top Value ranks players by their total cumulative drop value across all submissions. All three pull live from the Prestige Encounters backend.

Client-Side Data Architecture

We ran into a caching problem that turned out to be architectural. The site was fetching live game data server-side at render time. On Cloudflare Pages, this creates two independent caches — Next.js's own data cache and Cloudflare's CDN layer — and they don't coordinate. The result was data that wouldn't refresh even when it should have.

The fix was to move all live data fetching to the client. Pages are now fully static shells that ship instantly from the CDN. The browser fetches the live data directly after the page loads. No server cache, no CDN cache, no coordination problem.

  • RS3 clan stats and leaderboards — fetched by the browser on page load
  • RS3 roster — self-fetching, no longer needs a server render
  • D&D party roster — same pattern, loads in the browser
  • Minecraft server status — polls every 5 seconds, starts immediately on mount
  • Twitch live banner — checks on load and again every 30 seconds

Loading States

Every data-driven section now shows an animated skeleton while the request is in flight. Nothing looks broken or empty on first load — you see the layout immediately, then the real data drops in.

CORS & Proxying

One wrinkle with client-side fetching: the RuneScape hiscores endpoint (services.runescape.com) doesn't send CORS headers, so browsers block JavaScript from reading the response even though the URL works fine in a tab. We added a lightweight server-side proxy route that the browser calls instead — same data, no CORS issue. All of our own backend endpoints already had CORS configured, so everything else fetches directly.

If you spot a widget stuck loading or showing stale data, ping Trarn in Discord.

May 2026 - Live Data, Leaderboards & Under the Hood | Lich Souls Gaming