Technical features
The web platform decisions that improve rendering, caching, SEO and reusable state.
The product website now uses the App Router throughout; there is no Pages Router or local database layer left.
Rendering and delivery
Streaming. Nested layout.tsx, loading.tsx and page.tsx files establish the shell and loading boundaries. Slow regions stream behind Suspense instead of blocking the whole route.
Streaming with Next.js
Next.js streaming is the model behind StatsHub's route-level loading boundaries: the shell renders first while slower regions resolve.
Server rendering. Server Components fetch through src/lib/server-api.ts; interactive boards use SWR only where a filter must update data in place.
Fetching data in Next.js
The server-first fetching model supports StatsHub's split between Server Component reads and SWR-powered in-place interactions.
Cache Components and PPR. Cached shells and data can be delivered from the CDN while request-bound regions render separately. The website can cache pages that contain dynamic content, not only API responses.
Caching in Next.js
Next.js caching defines the reusable data and rendered output that StatsHub can serve without repeating the same work on every request.
The PPR platform guide covers the separate dynamic regions that make those cached shells useful on otherwise request-bound pages.
PPR platform guide
Partial Prerendering is the reason a StatsHub page can keep a cached shell while request-bound regions render independently.
SEO. Route metadata, generated Open Graph images, entity sitemaps and server-rendered content give crawlers complete pages without waiting for client JavaScript.
Metadata and Open Graph images in Next.js
Next.js metadata and image conventions provide the route-level search and sharing surfaces used across StatsHub.
State and code sharing
nuqs owns web filter state in the query string. Its typed parsers and serializers replace duplicated URL synchronization code and keep the toolbar, filter panel and shared links on the same values. Domain parsers can be shared with Expo; device-only Expo state remains in Zustand.

nuqs
nuqs makes the URL the source of truth for shareable web filters, matching StatsHub's rule that a copied link must preserve the current view.
The App Router groups dashboard, SEO and marketing layouts without changing URLs. Parallel route slots place filters and the right rail, while each board owns the state and content it portals into those slots.