<story><title>Non-blocking UI&apos;s with interface previews</title><url>http://www.callumhart.com/blog/non-blocking-uis-with-interface-previews</url></story><parent_chain></parent_chain><comment><author>philfreo</author><text>Pinterest does something really clever related to this - not so much for data placeholder but for images. They have precomputed the dominant color for each image and show that color while the image loads.&lt;p&gt;&lt;a href=&quot;http://littlebigdetails.com/post/56782380031/pinterest-before-image-is-loaded-the-background&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;littlebigdetails.com&amp;#x2F;post&amp;#x2F;56782380031&amp;#x2F;pinterest-befor...&lt;/a&gt;</text></comment>
<story><title>Non-blocking UI&apos;s with interface previews</title><url>http://www.callumhart.com/blog/non-blocking-uis-with-interface-previews</url></story><parent_chain></parent_chain><comment><author>delluminatus</author><text>Meteor -- the JS framework -- uses something much like this, which they call &amp;quot;latency compensation&amp;quot;. It&amp;#x27;s a core part of their ideology. Data is prefetched or given default values that give the user at least something to look at until the actual data is fetched with AJAX.&lt;p&gt;Beyond just using spinners, Meteor will populate the fields with client-side cached data that might be a little old, and then when it receives a response from the server it updates the client-side DB with the new data and refreshes the view. If the data hasn&amp;#x27;t changed at all, the process can be completely transparent -- just an instantaneous UI update.&lt;p&gt;Because the Meteor framework encompasses both the client and server side, this can be &amp;quot;abstracted away&amp;quot; from the app developer. The abstraction isn&amp;#x27;t perfect of course but it makes it much easier to implement these kinds of ultra-responsive Web UIs.</text></comment>