MerlinOne Single page application graphic

The Rise of the Single Page Application

A while ago I was asked to evaluate a web based product from another Software Vendor. I won’t elaborate on who the Vendor was, or even what type of Product. Suffice to say that it was a good product, from a reputable Vendor. During the course of my evaluation I was struck with a nagging feeling that while the product was decent, I was not enjoying the experience of using it. I then realized it was not the functionality of the application, but rather the multi-page nature of the web design that left me feeling unsatisfied.

Whereas modern applications are migrating towards a Single Page Application (SPA) model, this web app still used hyperlinks to open new pages, and left me waiting somewhat impatiently for the screen to refresh while it fetched new information from the Server. I had already gotten used to using SPAs that load all the necessary information upfront, or in a background thread as required. Rather than loading pages in response to user actions, the SPA only loads the information it needs, and dynamically uses that information to update the user interface.

The shift towards SPAs has been aided in large part by modern JavaScript frameworks which allow the Client application, running in the Browser, to implement the logic that would traditionally have been the responsibility of the Server. In the SPA model, the Client has less interaction with the Server; the Server becomes “thinner”, allowing it to service more concurrent requests, and support a greater number of Clients.

The SPA client behavior starts to resemble more closely what we have come to expect from traditional desktop applications. In the same way the desktop application migrated from a multi-document model to single document, the same is now happening with web applications. Although there is an initial startup penalty when loading an SPA, this is a onetime hit, and is more than compensated for by the responsive feel of the application once it is loaded. Since the SPA loads data in the background, the user experience is fluid, and is now approaching what was once only achievable with a desktop app.

The SPA experience is still not on par with what can be achieved with a traditional desktop app, but as the quality of JavaScript frameworks and libraries improves, and as modern Browsers continue to improve support for SPAs, it will get harder and harder to remember you are using a Web app. And that’s a good thing.

Michael Grishaber
Senior Software Engineer
Phone: 617.328.6645