← All blogs
August 12, 2023·Electron
Even though there’s many alternatives to build desktop applications, most of them don’t really stand up to Electron. There’s a few that do, and we will explore which ones they are and how do they compare.
Tauri is probably one of the strongest competitors to Electron. It’s known for producing small application sizes and using less memory at runtime. The trick behind Tauri is reusing the operating system’s webview for rendering, instead of bundling the whole chromium instance within the application.
✅ Small application size (<5 MB binaries)
✅ Uses less memory
✅ The project generator is pretty damn good. After a couple questions you have a project with typescript, vite, your JS framework of choice, and adding TailwindCSS will take you another 30 secs. This has not been my experience with Electron. And the experience is as good when you need to bundle your application for distribution. It Just Works™.
❌ Cross platform support: some OS webviews might be a step behind when it comes to supporting modern features, so the cross platform aspect is not as seamless as with Electron (i’m looking at you WKWebView 👀).
❌ Rust: it uses Rust as the backend language. If you’re not familiar with Rust it might be a problem. Though with GPT-4 it’s not as hard to learn Rust in my opinion, if your application will rely heavily on backend code it’s something you should consider.
❌ Community: it’s not as battle tested as Electron and the community is smaller, which is expected as Electron is ~5 years older.
We do a more thorough comparison of Tauri vs Electron here in case you’re considering using Tauri for your next app.
A strong choice if you’re also building for mobile. It’s made by Microsoft and has become a very popular solution for porting React Native applications to desktop.
React Native Desktop pros:
✅ Familiarity: For developers acquainted with React and React Native for mobile, transitioning to React Native Desktop feels natural.
✅ Shared Codebase: One of the primary benefits is the ability to reuse much of the code between mobile and desktop, facilitating more efficient development.
✅ Community Support: React Native has a substantial and active community. As a result, many community-made libraries and components are available, which can sometimes be adapted for desktop use.
✅ Performance: React Native Desktop apps offer performance that can often rival native applications, especially when optimized well.
✅ Hot Reloading: Like React Native for mobile, the desktop variant benefits from hot reloading, allowing for immediate previews of changes, which boosts developer productivity.
React Native Desktop cons:
❌ Still Maturing: While React Native for mobile is well-established, the desktop iteration is younger and may not offer all the features and optimizations available for mobile.
❌ Platform-Specific Code: Even with the promise of cross-platform development, there are instances where platform-specific code is necessary, especially when accessing native modules or platform-specific UI features.
❌ Size and Memory: While typically more efficient than Electron, React Native Desktop applications might still be heavier than truly native apps.
❌ Native Modules: If your project relies on native modules, there might be additional work involved in making them compatible with desktop platforms.
❌ Documentation: While the core React Native documentation is extensive, the desktop-specific nuances might not be as thoroughly documented.
Flutter is an open-source framework developed by Google for building natively compiled applications from a single codebase for mobile, web, and desktop. It uses the Dart programming language. Instead of providing a bridge to native code (like React Native), Flutter compiles directly to machine code, eliminating any performance bottlenecks of bridge-based solutions.
✅ Cross platform support: cross platform and cross device support. You can write your code once and bundle for desktop and mobile devices.
✅ Performance: Dart is compiled to machine code and uses the OS rendering libraries, so you get the performance close to that of a native application. read more on Flutter architecture here.
❌ Documentation: Electron has been around for longer and the community is bigger, so expect less documentation and packages.
❌ Dart: You need to learn Dart. I’ve never met someone who knows Dart in my life. GPT-4 to the rescue though.
❌ Google: It was made by Google. Only God knows if it will continue to be supported in the next years.
PyQt is a set of Python bindings for The Qt Company’s Qt application framework and runs on all platforms supported by Qt, including Windows, OS X, Linux, iOS, and Android. PyQt is used to create desktop applications that can run on various software and hardware platforms while appearing native to the user. If you're coming from Electron or any web technologies platform, PyQt provides a different perspective on building applications. Here's a comparison:
✅ Mature and Robust. PyQt has been around for a long time
✅ Rich Set of Widgets.
✅ Performance: Python, combined with native C++ libraries of Qt, often results in better performance compared to web-based technologies. No need to worry about the overhead of a web renderer.
✅ Integrated Tools: Tools like Qt Designer for GUI design and Qt Linguist for localization are included. Though i’ve never really liked Qt Designer. If you’ve written css before, it feels very unintuitive and messy.
❌ Learning Curve: If you're coming from a web development background, there might be a steep learning curve as PyQt is more traditional and you’ll miss CSS and HTML a lot.
❌ Size: While the resulting applications can be smaller than Electron apps, they may still be larger compared to other native solutions due to the inclusion of the Qt libraries. If you’re using the Python bindings, it might be even worse.
❌ Less Modern Look and Feel: By default, the visual components might feel a bit dated, but they can be themed and customized.
❌ Distribution: Distributing a Qt binary written in C++ might not be that hard, but if you’re using Python then good luck with that.
❌ Community and Ecosystem: Electron, given its ties to the web development community, enjoys a larger and more vibrant ecosystem. While there is a community around PyQt, it might not be as extensive as Electron's.
In my opinion Electron is still the safest choice. It comes with the large bundle sizes, but we can’t ignore that a lot of successful products continue to use Electron.
Tauri is coming in hot and Flutter might be a strong choice in some cases (specially if you’re a well versed Flutter dev), but if you wan’t the highest development speed and the biggest community, my advice is to just stick with Electron.
Get the latest posts, right in your inbox
We write about building products using analytics. No spam, ever.