by Jason Strimpel, Staff Software Engineer, @WalmartLabs
I’m a developer for a branch of @WalmartLabs in Carlsbad,CA (San Diego area). One of the interesting tasks we’ve undertaken is to implement a web framework that puts control of the UI entirely in the hands of the front-end engineer regardless of whether the code is executed on the server or the client.
An SPA separates application logic from data retrieval, consolidates UI code to a single language and run time, and delegates UI rendering to the browser. However, the SPA model fails to adequately address SEO concerns and time to first page render making it a major concern for any public facing web application, site. As such developers rely on workarounds such as the hashbang or running/emulating the DOM on the server so they can realize the benefits of the SPA model while addressing SEO concerns. These workarounds have significant performance and maintenance drawbacks. Additionally, users still have to wait for multiple networks calls to complete while the data and assets required to fully render the page is retrieved thus increasing bounce rates. What is an engineer to do?
@WalmartLabs what we have done is created a new hybrid web framework that is the best of both worlds―all the pros of standard applications and SPAs without the cons. The first page is fully rendered on the server and subsequent page requests are rendered on the client in browsers that support session history management transitioning to an SPA model. Browsers that do not support session history management gracefully degrade to server rendered only.
This alone is nothing new. Airbnb has already done something similar with Rendr. The key difference between what we have done and what Airbnb has done is that we created a framework not a library. As such, we have made decisions that make application development much easier―proxy layer for models, server side data aggregators that map to models, asset providers with i18n/I10n support, component composition (reusable and parameterized), combo handling API, collection views, layouts, etc.
We are currently using this framework to power several internal applications. We intend to open source in July, so keep an eye out on Twitter, @WalmartLabs. I will also be speaking about it at OSCON, July 24, 2014. Interested in learning more? You can contact me via Github (https://github.com/jstrimpel).
 Google is just now beginning to solve this problem, but they are only a single search engine, albeit the largest, and your mileage may vary.