JSFoo 2015

The future of JavaScript

Ashmeet Sidhu


Building High Performance Isomorphic Web Applications

Submitted Jun 30, 2015

This talk will equip web app developers (both front and back end) to understand and build Isomorphic web apps, appreciate its philosophy, understand its caveats and be able to select the right tools for the task.


What do Airbnb and Facebook have in common? Server rendered rich client apps, or isomorphic web applications.

Server side rendering has been bread and butter for web apps since years. On the other hand client side apps promise a lot of goodies. Both come with their advantages and drawbacks. Consider SPAs, they are not as performant as pure server side apps because the rendering part is mostly handled by the client. They fail to render anything in a non JS environment such as for search bots, as a result of which SEO becomes a very tricky problem. On the other hand, traditional web apps lack a seamless experience as every action results in a page refresh.

Building a rich web application today demands that we use the best of both worlds. This talk will highlight how to approach Isomorphism in the apps you’d be building. Here is an outline of the talk -

  • Drawbacks of pure server and pure client apps
  • Progressive enhancement of UI
  • Sharing application state between client and server and possible caveats
  • Rendering on both server and client and comparison of available frameworks - React, ng2-Universal, libraries for custom solutions
  • Shared application logic for client and server and tooling required for the same - Yay Javascript!

This will be followed by a demonstration of components of an Isomorphic app built in React and Express.


A basic understanding of web application frameworks and love for separation of concerns. Understanding of React and ExpressJS will certainly help.

Speaker bio

Ashmeet works as a full-stack web developer and a lover of all things JS. He spends his time building web applications at the bleeding edge of technology at Housing.com.




{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}