Our dirty little secret: Cross-platform email client with nothing but HTML

Amazingly fast, receiving 5-star reviews and featured by Apple.

Today we released Missive for Android and 3 weeks ago its iOS counterpart. As of writing, we’re being featured by Apple in the New apps we love section of the App Store (US & Canada to our knowledge).

Oh, how we love it too!

We do however have one big, very terrible, shocking secret. It’s just a *responsive* PhoneGap app that bundles the same exact code as our desktop apps… 😱

Let it sink in.

It feels incredibly native […] I thought especially PhoneGap was dead in the water but apparently not! :)
https://www.designernews.co/comments/259018

We’re particularly proud of our stack and would love to elaborate a little bit more about the client-side of Missive. Desktop apps are built on top of Electron and mobile apps on top of PhoneGap. At its core, Missive is a React + Backbone app written in CoffeeScript. Welcome to 3 years ago, right? Yup, that’s exactly when the development began and to this day we still don’t feel like changing any of these would make the app better in any way.

Why not React Native?

Noticed the emphasis on responsive? From the context menus to the full screen native-like navigation, it’s just CSS.

It’s just CSS

Happen to have a desktop touch screen? Even better! You get the full touch UX with our unmatched and unprecedented Multi-Swipe™ technology.

Swiping on Chrome with device toolbar enabled

So, other than the fact that with a little bit of hassle you can copy pretty much any native behaviour with HTML/CSS, why not React Native? It really came down to the “one bundle to rule them all” advantage for us. React Native would make sense if Missive was a mobile only app, but that’s not the case and we can’t afford to maintain one code base per platform (mobile vs. desktop). That means more bugs and less feature coverage. 👎

There’s only 3 of us

One focusing on the backend, one on the frontend and one all-star all-around guy. That being said, we all can and do review everyone else’s code whether it’s our area of expertise or not. Needless to say that time and focus is a scarce resource around here, so we pick our fights very carefully and always aim for the long run. Would we have taken a different path were we a team of 15? Maybe. Would it have been a mistake to do so? Most definitely. We think the web is the leanest, most pragmatic way to go in 2017 for an app as ambitious as Missive.

As it turns out, building native apps for multiple platforms doesn’t scale.
https://githubengineering.com/how-four-native-developers-wrote-an-electron-app

Focusing on a sole code base gives us the opportunity to be very good in one area instead of struggling to keep every code base in sync. Without even realizing it, we had a perfect and different layout for each size of the iPad Pro 12" Split View. That’s just an example of what comes for free when using the same build for all platforms and going 100% web. Whether you’re using Missive on your favorite browser on any device or one of our native wrappers, it’s the same full-featured experience.

Responsive layout on the iPad Pro 12"

We spent a good amount of time making Missive blazing fast and CPU friendly. You’d be surprised (I was!) at how much memory leak your JavaScript has if you don’t monitor it. Optimizing for mobile yields even greater performance on desktop, so we’re talking win-win-win situation here.


Give it a try and let us know if the web feels native enough. 😎
Bonus: See how we’re getting 60 FPS JavaScript swiping on mobile.