Leading the frontend of a rewards platform with hundreds of thousands of active users taught me that performance is a habit, not a final pass. Small, consistent decisions compound — and so do small mistakes.
Change detection is your budget
In a large Angular app, unchecked change detection is the quiet killer. Lean on OnPush, keep observables out of templates where they re-trigger work, and be deliberate about what actually needs to update. Most jank is the framework re-rendering things that never changed.
Ship less JavaScript
Lazy-load routes so users download only the feature they opened. Audit your bundle regularly — a single heavy dependency can undo a lot of careful work. The fastest code is the code you never send.
Measure on real conditions
Test on throttled networks and mid-range devices, not just your machine. The reward-accumulation and redemption flows had to stay fast under heavy load, so we profiled them under heavy load — not in ideal conditions.
None of this is exotic. It is the same handful of disciplines applied every sprint, which is exactly why it scales.