Awesome work @sindresorhus! I'd love to hear more about your process and reasoning. Why did you chose to work with Electron and how does Caprine differ from other alternatives that for example run in a Mac app wrapper around Facebook's stand-alone Messenger?
@skllcrn Caprine needed a browser engine to render the modified messenger.com website. I could have chosen to create a native macOS app with a webview, but I didn't have much Objective-C/Swift experience back then. I did however have plenty of Node.js and Electron experience. I also wanted the app to be cross-platform. So I chose Electron for mostly selfish reasons, but in hindsight it was a great choice. Electron gives you so much for free and makes it far easier for people to contribute to the project. Electron has enabled any developer to make desktop apps. That is a powerful thing. Diversity is important for innovation.
The Messenger apps that use a Safari webview are held back in many ways. They only work on macOS and are stuck with the Safari engine of the user's system, so currently no voice/video call support, and many other issues. So much so that one of the early popular native macOS Messenger apps, Goofy, recently ditched all their Swift code and adopted Electron.
It has become a trend to pick on Electron apps for being bloated, but they're missing just how much Electron does. Many of the apps we use today would not have been possible without Electron. It's also not as bad as they make it out to be. Caprine uses 86 MB of compressed ram, while iTunes uses 103 MB, and Notes uses 184 MB. No technology starts out perfect and in many ways Electron is still in its infancy, but it is progress towards a very interesting future.
While a few spend their time complaining about Electron, others are writing useful apps with Electron and shipping it to millions of happy users not caring even a little bit what it's written in. Users care about the app solving their problem in a fast and reliable way, while being well maintained and frequently updated. All of which are not only achievable with Electron, but far more efficient.
You'd be amazed just how many apps on Product Hunt are using Electron.
Caprine is an open-source and cross-platform Facebook Messenger app built with Electron. I mostly just made it for myself two years ago when I wanted a desktop version of the Messenger iOS app. Since then it's grown quite popular and it's no longer just me working on it. Caprine is based on messenger.com, but heavily modifies and skins it and adds additional features. For example, in the latest release, you can now prevent people from knowing when you've seen a message or are currently typing. Yay privacy! We're always happy to consider feature suggestions.
Fun fact. Caprine means "relating to or resembling goats".
I've been looking for a capable (i.e. not full of bugs) Messenger desktop client for a while. What I'd really like to see is a bare bones client supporting only text chat, not the 9000 other bells and whistles Messenger for mobile gives you. That product is only going to expand with more features (have you seen the F8 keynote?) and anything wrapping FB's native support will have to grow with it. I'm sure many people would agree with me that I don't need location support, sending images, payments, games, video chat, camera effects, bots or anything else on desktop, I simply need a way to quickly text people. You can implement that pretty easily without wrapping Messenger.com. And you can implement it FULLY natively, without a web view. Electron is great, but it still is a full copy of Chrome running alongside the other full copies of Chrome (other electron apps and Chrome itself). All that memory usage does add up, and you typically leave them running in the background.
@yozzozo I too hate the new mobile Messenger, but Caprine doesn't necessarily have to follow Facebook. We already do lots of customizations to the web app and we could do lots more. Removing things is actually very easy. Using messenger.com is our only choice as the Messenger Chat API is gone. I've addressed memory usage in my other comment. If you want a text only Caprine, open an issue on GitHub and we can discuss it there.
@sindresorhus regarding messenger.com, I know there's no public API, I was suggesting reverse engineering the protocol, build your own support. Not impossible.
Big fan of your work @sindresorhus 😄 got a question for you, why are you into swift if you already know js (electron, react native)? why swift?
Good job on Caprine! 🎉 thx!
@bntzio I believe in picking the right tool for the job. Electron is awesome, but it's not suited for everything. For example, it didn't make sense to use Electron to build my Battery Indicator app, as the app only lives in the menu bar and interacts with many low-level APIs. Swift is also great language and it's smart to diversify skills.
Caprine looks very promising and I love the initial experience. My most favorite part though, it's basically a Messenger.com skin - thus, does not remove features like bot support. Kudos on this beautiful app. The extra features like customization, jumping to conversations are super useful.
@csaba_kissi Hard disk space is cheap and Electron apps are not what's filling up your hard drive.
Native apps that are larger or almost the same size as Caprine: Dropbox, ScreenFlow, VLC, Pixelmator, Skype, 1Password, iTunes. Just to name a few.
@sindresorhus@csaba_kissi What's not cheap is integrated SSD space *cough* Macs *cough*. Comparing the size of a Facebook Messenger app to PixelMator and iTunes is pretty odd, I would think comparing it to a similar app would be a better comparison. "Messenger for Mac", another Facebook Messenger client, is not Electron based and weighs in at a whopping 3.4 MB. Compared to Caprine's 120 MB, that's a really big difference. However, Caprine seems to be a much better application, based on my initial look. 116 MB probably isn't going to be the nail in the coffin for a nearly full SSD/HHD but it is worth noting.
@john_cockerill@sindresorhus@csaba_kissi Does "Messenger for Mac" offer a full-fledged Messenger experience like Caprine though? Digging at apps and trying to arrive at the best.
@sindresorhus You're right. HDD space is. SSD and RAM isn't.
This isn't to say your app isn't worth it. The reviews seem great so far and I'm about to try it out myself. Package size is an issue with Electron though.
Will need to compare this to my current Messenger desktop app: https://www.producthunt.com/post..., similarly open-source and similar UX for the mac, except without the themes. Any thoughts?
I use this every day and it's a great app. Just wondering, have you every concidered something like React Native Desktop, to beat the downfalls of electron?
Trouva