Rewrites are expensive; measurement is cheap
When a React dashboard feels sticky, teams often propose a new state library or a new chart kit. We start with the React Profiler, the network waterfall, and the slowest user path.
Common culprits we find
- Fetching waterfalls — serial requests that should be parallel or batched
- Over-rendering tables — huge lists without virtualization
- Chart libraries redrawing the world on every filter keystroke
- Context that updates too often — theme/auth providers broadcasting to the tree
- Uncompressed JSON — multi‑MB payloads for a summary screen
Fixes that usually stick
- Paginate or virtualize large tables
- Debounce filter inputs; fetch on apply for heavy queries
- Memoize pure chart series only when profiling proves it helps
- Split routes so the settings page does not pay for the analytics bundle
- Move heavy aggregation to the API when the browser is just summarizing
UX is part of performance
Skeleton states and stale-while-revalidate patterns make the same latency feel intentional. Users forgive waits they understand.
Rayaxis builds React dashboards for ops and analytics products — we optimize the paths people click daily, not synthetic homepage scores alone.