knockout/knockout — pull request #1504 by SteveSanderson (2014-09-26 15:18:33+00:00)
Title: Components should render synchronously when possible

While I love the syntax and design of the new components feature, the affect it has on rendering makes it a poor choice for many projects.

* Since components are always rendered asynchronously, leveraging them causes lots of "janky" loading

*If you've ever been scrolling down a webpage on your mobile device and been frustrated by the page constantly jumping and changing scroll position due to things loading up above, then you should understand the meaning here*

* Similarly, it causes a lot of [layout thrashing](http://wilsonpage.co.uk/preventing-layout-thrashing/).

Here is a clear illustration of what I'm talking about. Let's say a page has two boxes of content which have shared code at the top.
______________
CONTENT A
CONTENT B
CONTENT C
______________
CONTENT A
CONTENT D
CONTENT E
______________

Then you decide that since CONTENT A is shared code and decide to extract it out to a knockout component. You might think you've simply re-factored your code, but by bringing in components you've actually changed the rendering order. Whereby it used to render top-to-bottom, it will now render B,C,D,E first, and then after that the CONTENT A section will pop in after that (and it will seem jerky).

Given that projects using components are probably large enough that they are almost certainly bundling their javascript anyways, I really think components need to the capability to render syncronously, or at least somehow give the appearance that it is.