iOS or Android (Mobile) Support

There have been some requests over time for Mailspring clients on iOS or Android.

GitHub Issues

[Feature Request] iOS Support · Issue #1100 · Foundry376/Mailspring · GitHub

Feature Request: Android Version? · Issue #2176 · Foundry376/Mailspring · GitHub

Android client · Issue #2238 · Foundry376/Mailspring · GitHub

What would it take to get this project working on iOS? The underlying Mailsync sounds like it’d be compatible since it’s C++. There are great wrappers like Ionic/Cordova/etc around a web app framework. Anyone have experience here? I’d love to get a true cross-platform solution working and I love Mailspring on macOS. Mostly just looking for insight and if it’s a no-way-it’s-impossible or if it’s a could-work-with-a-lot-of-effort type deal.
-dgattey

Android seems (and I suppose ios) seem to be the only platform’s left out. I’m not sure how transferrable the ui is but I’d love to use mailspring on my phone instead of aquamail or the gmail app. (aquamail does function basically like mailspring but the author wants $20 for the app which is excessive.
-famewolf

If is posible create android mailspring client (app)
Best mail app ever!
-DanRotaru

Hey! This is a great question—technically the mailsync core is plain C++ and would definitely compile for iOS (and Android too, though it might get messy.) A bunch of folks have asked for a mobile app, but I’ve put it off because the existing UI / Electron app isn’t really appropriate for mobile - pretty much everything would need to be re-written. There are some aspects of the app that would be nice to keep (eg: swipe to archive in the thread list), but getting a nice experience on mobile would require re-writing that sort of thing using the native APIs. While the whole desktop app is JavaScript, it runs in Node’s runtime and not in the standard browser runtime—removing dependencies like fs would be tricky…

It’s also becoming really difficult to keep up with the stock mobile apps on iOS and Android—in iOS 12, Apple Mail has some cool behaviors (like the “compose a message on half the screen while looking at another app” UI) that aren’t possible for third-party developers. I think doing a Mailspring mobile app would require ~2-3 people working pretty much full-time for a year, and then working on a regular basis to add new features / address SDK changes with each iOS / Android release.

What would actually be great I think is to find an existing mobile email app (maybe something shutting down? grimacing ) and modify it so that snoozed emails, reminders, send laters, etc. are synced with Mailspring! I think that’d be a pretty doable project and might get users the highest bang for their buck. We’ll see!


(Originally posted by bengotow on GitHub.)

Yea, that makes sense. Didn’t know the state of Electron on mobile and if that was doable. Hear of anything shutting down? I’m in the market for a new email client after Slack bought Astro, and I stumbled on this project. Let me know if you need iOS help in the future :slight_smile:


(Originally posted by dgattey on GitHub.)

This is pretty much a “beating the dead horse” scenario. Seing as it was opened 2018 though, it’s quite easy to say that there are other or even new arguments to be made for a mobile version.

First, let’s talk about iOS and Android:
Electron, as much as I personally have a bit of a disdain towards it as the Chromium engine isn’t exactly known to be resource friendly, has become the defacto standard for non-native app developers. As in, develop it in Electron and deploy it wherever it can run (as in, enough resources are available). All the way from a Raspberry Pi to laptops and desktops. But apps like Discord have proven that writing an app for all the platforms is very possible by utilizing the same UI but applying features such as media queries in CSS to make the design responsive. Once the responsiveness is handled, the rest is less of a problem.

So, for Mailspring to have an iOS client, it’s mainly the UI that needs rewriting. But, that introduces another question: Running Mailcore2, the C++ stuff. Well, there are two ways to do so: Either as a subprocess, or by using WebAssembly.

I did some experimenting with WebAssembly recently and it’s very possible to get applications running tht weren’t initially designed to do so. That, and by using a bit of trickery in terms of sockets and EM_ASM, it’s possible to allow C++ applications to call into JavaScript for things that aren’t native. Like, fetching requests or interacting with sockets. Well, my testing so far has been on Emscripten. But frameworks like Cherp (a soley LLVM based approach) or just plain WASM targeting with wasm32-unknown-wasi and running via Wasmtime or Wasmer is very possible - although WASI does not have a good socket implementation yet, which is possibly a major no-no for a Mailcore2 in WASM implementation as it’s whole stick is to interact with mailservers…and, well, that is networking. :slight_smile: Emscripten does have a bit of support for that, but it’s not particularily great, but works for the most part.

Now, one other topic: Linux phones
Currently, with Purism and Pine64 working on making linux based smartphones accessible to the market, there is something to be said about a possibility for the convergence of a Linux desktop: It might come to a point where a single linux phone can run full fledged desktop applications that either use libhandy for responsiveness or just plain Electron, since this is already a feature due to how CSS - well, the “browser” - works. There might be a scenario where you have a Linux phone, connect it to something like a NexDock and then use a full desktop.

But convergence and responsibility go a little further and yet below: Phones and tablets
If you were to release an iOS and/or Android app, you’d probably end up getting questions from people regarding iPads and Android tablets. Going from a smartphone screen to the width and height of a tablet is also an aspect of responsiveness.

So, the TL;DR of all this:

  • Mailspring’s UI needs to learn to become responsive.
  • Mailcore2 might just need to become a WASM module to remove some of the pain of building it on mobile platforms but running it native on “traditional” OSes. Quotes here, because what I mean is your typical Windows and macOS - the classics of desktop OSes.
  • The touch gestures are already possible in JavaScript and have been battletested by apps like Discord, MSTeams and many others.

But this requires development time. It is not impossible - but someone has to actually do it. :slight_smile:
I’d love to have the very same email client running on all the platforms that I use - and I am very platform-fluent. An iPhone for when I am traveling, a MacBook for when I visit friends and family to cover my basic computing needs, a Windows desktop at home that also has Linux on a separate partition for when I work with more specific tools that I could do via WSL or a VM but would love to use my native performance for instead. Just having the same set of apps - Discord, Mailspring, Element - on all of them would be neat. Let’s see if we can get there! =)


(Originally posted by IngwiePhoenix on GitHub.)

1 Like

I think you would reduce it to 2 developers worked part-time if you would use Flutter or Kotlin Multiplatform, furthermore Flutter and KMM could be compiled also as desktop app.

I’m a complete and absolute noob, but I have all my mail rules already set up and will kill a man to have them work on my phone. Where can I start to help with this? My experience is mainly web dev react, node, and a bit of python.

It would be really cool to have an android version!