federicoterzi.com
Embedding The System's...
Excerpt
- **High RAM consumption**: Electron apps tend to use a minimum of 80 MB of RAM, with lightweight apps in the 130-250 MB range and monsters like Slack sometimes reaching multi-GB values. - **Large storage footprint**: Shipping with a full Chromium runtime, you can expect most Electron apps to consume *at least* 150 MB of storage. - **Slow**: Some Electron apps are definitely slow, but that can depend on many factors. Overuse of animations, for example, can substantially increase the CPU usage and thus make the app feel slower. Did you notice that most desktop apps that feel snappy don’t include any animation? Just because you can with Electron, doesn’t mean you should. - **Lack of native UI/UX**: Electron renders webpages and not native controls. On one hand, that gives complete freedom to designers, but on the other, the app looks different from the “native” ones. Unsurprisingly, this complaint usually comes from macOS users, where a single “native” framework exists: Cocoa. Due to the fragmentation of GUI frameworks on other platforms (especially Windows), non-macOS users are usually more tolerant of apps not sharing the same look and feel. - **Worse security**: Compared to the average website running on your web browser, Electron apps are incredibly more powerful (and dangerous) thanks to the NodeJS integration. If not properly configured, web pages running inside Electron can gain access to the entire system, which is particularly dangerous when displaying third-party websites. Luckily, it doesn’t have to be that way, as Electron provides Context Isolation to shield the renderer from NodeJS APIs. Moreover, some believe that the NPM ecosystem is less secure than other counterparts. … In such cases, choosing the native frameworks will most likely be the best choice. That said, if you need to go cross-platform and your application is sufficiently complex, then Electron is really not bad at all compared to the alternatives, especially when done right. Of course, there are some very bloated Electron apps out there and I don’t like them either, but that’s mostly due to careless developers, not Electron.
Related Pain Points
Cross-platform development requires sacrificing native quality on all platforms
7Building Electron apps for true cross-platform support means accepting compromises on native look-and-feel for all platforms. Native development requires 3x the effort (separate UI development for macOS, Windows, Linux), making Electron the only pragmatic choice for solo developers or small teams despite its limitations.
Security risks from NodeJS integration in Electron
7Electron's NodeJS integration allows web pages running inside the framework to access system capabilities, creating serious security vulnerabilities if not properly configured. Context Isolation mitigates this but requires careful implementation by developers.
Excessive memory and disk space consumption
7Electron apps bundle most of Chromium's codebase, making even basic Hello World applications ~100MB and real-world apps like Discord over 700MB. This excessive resource usage creates performance problems on systems with limited RAM.
Performance issues from DOM complexity and animations
6Electron apps experience performance degradation from excessive DOM elements or animations. Overuse of animations increases CPU usage and makes apps feel sluggish, requiring developers to carefully optimize rendering strategies.