Start here. This is the direct spoken answer to practice first.
Overview
Efficient Angular code makes state changes visible through supported notifications instead of relying on ZoneJS to notice arbitrary work.
OnPush lets Angular skip a component subtree until a relevant input, event, explicit mark, async-pipe emission, or template-read signal says it may need updating. Zoneless mode removes ZoneJS as the broad scheduler, so components must use Angular-aware notification paths consistently. Signals read in a template work well because updating them marks the owning view for a future check.