Hi Reza,
If you follow the best practices from the docs site, your app is in a pretty good shape already. Do not prematurely optimize. Measure, find the slow parts when your app is 'done', and look at the big picture.
The only thing you really want to do, is use lazy loading of features. And keep your modules as self-contained as possible.
Example: When using a library like material, it's easy to create a shared module that loads all you need. But this will load all you used in your application, for every module. When you load the parts you need in the module where you need them, your application as a whole will profit.
There is so much more that can be said about this, but if you google around for a bit, you will find a lot of good resources.
Regards
Sander