# Introduction
I decided to write this little cookbook due to the lack of information on the Internet regarding the deep details of how the Angular framework works (know your tool).
I'm not a fan of all the "optimization techniques" on the Internet because they all duplicate each other. For instance, they recommend using pure pipes, loadChildren, and trackBy for ngFor, not using JIT in production, and enabling AOT. I've been asking myself why they recommend enabling AOT if it's already enabled by default. I've never seen any app using JIT in production, so I find these recommendations silly. I've been collecting all the knowledge related to performance in Angular in this little cookbook. The purpose is to give the user a profound overview of Angular internals so that any developer can become a master.
I've always been interested in the performance of Angular applications. I often joined projects that had been under development for an extended period, and they had large codebases that were extremely slow (frankly speaking, "laggy"). I've always tried to solve performance issues in small steps because there is no one-size-fits-all method for all of the problems. Sometimes, adding an OnPush strategy to the components rendered in the ngFor loop is enough. Other times, we have to spend evenings debugging the flame graph.
I have encountered developers on various teams who resisted using OnPush and argued reluctantly that it is a useless feature. Our discussions often reached deadlocks because the developers lacked strong arguments. Antifragility follows a smart practice: those who propose something new and non-standard should provide proof, rather than those who adhere to the natural order.
zone.js →