Why it took so long to get the Back Button working

We finally got the browser Back button working (along with the keyboard backspace key) to help you navigate back and forwards through your Kerika pages and other websites that you may be browsing at the same time.

You might be wondering why it took so long; after all, the Back button has existed in browser since the very beginning, and “breaking the Back button” is one of Jakob Nielsen‘s cardinal sins of Web usability.

The story is somewhat complicated, and it helps to understand two critical features of Kerika:

  • Kerika lets you have multiple projects open at any time, each within its own tab. In other words, Kerika lets you create tabs within a browser tab. Since all of these Kerika tabs are within a single browser tab, in some sense they all share the same URL as far as the browser is concerned. This makes things tricky for us, since each Kerika page actually has its own unique URL. So, how can we map several URLs, for several Kerika pages, to a single browser tab? Hmm…
  • Kerika offers super-fast updates when somebody on your project team makes a change to a project page that you are viewing: we aim for sub-second responsiveness in terms of letting you know that something has changed in your project. You don’t get that kind of speed using AJAX, which is what most people think means “real-time Web”. (That’s just so Web 2.0…) Instead, we use a newer technology called Comet, which is based upon the concept of “long polling”.

These constraints made it tricky for us to get the Back button working: we had to be able to “load” the browser’s Back button with a new URL every time you switch between Kerika tabs, and we had to do this fast enough to not compromise our exacting standards for delivering real-time performance.

We were finally able to do this because modern browsers are now offering Web applications easier ways to load the Back button stack in each browser tab. This is relatively new, and now supported across enough modern browsers for us to be able to offer this (seemingly routine) feature!