Hi Alexandr and welcome! Great questions. I don’t have all the answers but can point to some sources I’ve found helpful.
Exactly right. There are a handful of things ember does by default with routes and their templates so you don’t have to write the behavior yourself. Route’s block on the Promise resolving so sometimes you may need to break up the responses if you want to achieve skeleton loading. While it is the default and suitable in many cases your applications needs may differ.
It isn’t bad but there are tradeoffs to be aware of. I’d recommend reading Readers' Questions - "Is it bad to load data in components?" to understand the problem so you can figure out which approach suits your needs best. That may also help answer Question 4.
I think most of the component lifecycle hooks like didUpdateAttrs
can be incredibly helpful for responding to the asynchronous changes without needing to know how the fetching of that data works.
I may be missing something about what you are asking with component hooks having a “synchronous nature”. Some do happen in a predictable order but others happen in response to events like when component attributes change. Did the answer above help or should we refine?