The Biggest UX Win on FilmFlux Wasn’t UI – It Was Caching
One of the biggest UX wins on FilmFlux didn't come from UI. It came from caching.
FilmFlux aggregates YouTube movie data, which means frequent database reads, API calls, and repeat visits for similar content. If every interaction hits the database, the product feels slow and costs scale quickly.
So I treated caching as core product infrastructure, not an afterthought.
Three-layer cache
I designed FilmFlux around a multi-layer cache. Each layer serves a different purpose, and together they mean most views resolve before a database call is ever needed.
In-memory cache
The first stop. Data lives in memory with short TTLs so in-session navigation feels instant.
localStorage cache
Persists across sessions. Each entry includes a timestamp and TTL, then restores into memory on app load.
Server-side rendering
SSR provides data on first paint so users see content immediately – no loading spinner on initial visit.
Many views resolve before a DB call is needed.
Stale-while-revalidate
I use a stale-while-revalidate pattern. Cached data shows instantly. Fresh data is fetched in the background. Users get speed first, freshness second.
This means there's never a loading state for content that's been seen before – the app feels like it remembers where you left off.
Smarter TTLs
Not all data changes at the same rate. Trending and homepage rows use shorter TTLs. More stable collections live longer. This keeps content relevant without unnecessary database hits.
Prefetching for intent
When users hover routes or open the PWA, key data preloads. Often the data is ready before navigation completes. The system reduces both wait time and backend load.
The real impact
This caching system helps FilmFlux:
- Reduce database load significantly
- Lower API usage and cost
- Minimise loading states across the app
- Stay responsive as usage grows
Most users never think about caching. They just feel that the app is fast.
A takeaway
As a designer who builds, this reinforced something: performance is UX. Caching is product design. Some of the most impactful UX decisions live in architecture, not interfaces.