Pulse SMS: A Real-Time Web Experience


The past few months have been busy over here. On top of the regular Android updates for Talon, Evolve, and Pulse that you have come to expect, I have been hard at work on a complete revamp of Pulse's web app.

When Jake and I started Pulse at the end of last summer, the web app was, admittedly, kind of an after-thought. We had made a very cool Android experience and we were able to text from our tablets, great! Before we could release anything though, we knew there had to be a web component. The service was perfectly designed to support it, so not providing a web interface would have been an injustice to our users and the technology we had created.

So, Jake went to work on the web. Within just a few days, he had everything from the encryption to the UI up-and-running. The crazy part is that those few days of work had made up the majority of the web ever since.

Sure there were some new features added to support Android changes/additions - and of course there were always bugs being fixed - but for the most part, those few days of work were what drove the entire Pulse platform. Today, not only has the web app been used by way more people than the tablet app, but it has been a huge part of my development effort to test and implement new backend functionality.

Now that the Android app is pretty well ironed out, I knew it was time to start improving the web experience. Over the past few months, a lot has changed:

  • I added a new landing page for the app, that acts as an overview of the Pulse platform and its feature set, for new and existing users: https://messenger.klinkerapps.com/overview
  • I completely revamped the layout and design of Pulse on the web.
  • I turned the main conversation and message pages into a single page web app to ease the transition between different conversations and allow support for future functional improvements.
  • I improved caching of the different conversations to eliminate load times in many cases.
  • I added a button to the Toolbar within conversations to access the compose screen.


Those were a few of the major changes you have been seeing and enjoying over the past few months. The biggest drawback for Pulse on the web was that it has never been real-time. The web always just relied on background polling to "intelligently" update your conversations.

Everything above improved the experience, but I knew that to make it truly great, the app needed to be instant. When you receive a new message, it should show immediately. When a new conversation gets created, you shouldn't have to manually refresh the page or wait 20 seconds for the background refresh to occur.

Pulse in real-time

Today, I am happy to start rolling out WebSocket support on the Pulse web app. This means that everything is now completely instant and will not rely on background polling to check for new messages or update conversations. As the messages get received and sent, everything will automatically get updated. In my opinion, this brings the web app to a whole different level. Everything is faster, easier to manage, and just works. Everything is instant.

In my opinion, this brings the web app to a whole different level.

As I continue to roll it out to everyone, over the next few days, there will probably be some things that still need to be ironed out, but I have been using it for awhile and it has been great. Load testing for the WebSockets, throughout development and in production, has gone even better than expected and the performance has been rock solid. If you are a developer, I will probably give my thoughts on our WebSocket implementation and the framework backing it, in a future post.

A ton of work has gone into this effort, and everything in the past few months had been making strides towards this "real-time" support. It has been worth every second, in my opinion. Hopefully all of you agree.

So what's next? Everyone has been asking for native apps. This lays the groundwork for that being possible. I have experimented with and made native apps for Pulse in the past, but I have not released anything because they simply were not up to Jake and I's standards. Making a native app for Pulse is extremely easy. Making the right native app and doing it well, is a different story.

The WebSockets don't require an Android app update, but if you are new here and want to try out the service, head here to download the app and get set up: https://messenger.klinkerapps.com/overview/signup.html

Enjoy the update! Feel free to sound off in the comments, or hit me up on Twitter @lukeklinker to let me know your thoughts and what you would like to see next in Pulse! I am so excited about how far the web has come.