
Electron і Tauri — два популярні фреймворки для створення настільних застосунків за допомогою вебтехнологій. Обидва дають змогу розробникам використовувати HTML, CSS, JavaScript і сучасні фронтенд-фреймворки для створення застосунків для macOS, Windows і Linux. Однак вони використовують принципово різні підходи до виконання цих застосунків.
Electron постачає Chromium і Node.js разом із кожним застосунком, забезпечуючи однаковий браузерний рушій і середовище виконання в різних операційних системах. Tauri використовує легший підхід: наявний в операційній системі WebView разом із бекендом на Rust. Ця архітектурна відмінність впливає на розмір застосунку, використання пам’яті, продуктивність, безпеку, сумісність і продуктивність роботи розробників.
Tauri часто представляють як сучаснішу й легшу альтернативу Electron. Хоча він має реальні переваги, особливо щодо розміру застосунків і споживання ресурсів, Electron залишається вдалим вибором для багатьох типів настільного програмного забезпечення. Такі відомі застосунки, як Visual Studio Code, Slack, Discord, Notion і Figma, використовують Electron. У WebCatalog ми також обрали Electron як основу для наших кросплатформних настільних застосунків.
Тож який фреймворк варто обрати? Розуміння компромісів корисніше, ніж проголошення одного з фреймворків переможцем.
Electron і Tauri: коротке порівняння
Перш ніж розглядати технічні відмінності, ось порівняння двох фреймворків за важливими характеристиками.
| Характеристика | Electron | Tauri |
|---|---|---|
| Браузерний рушій | Chromium у комплекті | Системний WebView |
| Бекенд | Node.js | Rust |
| Розмір застосунку | Зазвичай більший | Зазвичай менший |
| Базове використання пам’яті | Зазвичай вище | Зазвичай нижче |
| Узгодженість роботи між платформами | Висока | Залежить від платформи |
| Екосистема JavaScript | Широка підтримка Node.js | JavaScript для фронтенду, нативні API через плагіни та команди |
| Модель безпеки | Ізольоване середовище Chromium, ізоляція контексту, IPC | Бекенд на Rust, система можливостей, IPC |
| Настільні платформи | macOS, Windows, Linux | macOS, Windows, Linux |
| Підтримка мобільних платформ | Офіційної підтримки немає | Android та iOS |
| Найкраще підходить для | Складних настільних застосунків, що залежать від Chromium | Легких застосунків та утиліт із нативною інтеграцією |
Ці відмінності переважно випливають з одного архітектурного рішення: постачати браузерний рушій разом із застосунком чи покладатися на той, що надає операційна система.
Архітектура: Chromium у комплекті чи системні WebView
Найбільша відмінність між Electron і Tauri полягає в тому, як вони відображають вебвміст. Electron містить власний рушій Chromium, тож застосунки використовують фактично однакову браузерну технологію в macOS, Windows і Linux. Розробники можуть покладатися на конкретну версію Chromium і підтримувані нею веб-API незалежно від того, яку операційну систему встановлено в користувачів.
Натомість Tauri використовує WebView, який надає кожна операційна система. Це значно зменшує обсяг програмного забезпечення, яке потрібно постачати разом із застосунком, але також означає, що той самий застосунок може працювати на різних браузерних рушіях залежно від платформи.
| Платформа | Electron | Tauri |
|---|---|---|
| macOS | Chromium | WKWebView (WebKit) |
| Windows | Chromium | WebView2 (Chromium) |
| Linux | Chromium | WebKitGTK |
| Android | Офіційно не підтримується | Android WebView |
| iOS | Офіційно не підтримується | WKWebView |
Для застосунків із простими інтерфейсами ці відмінності можуть мати незначний практичний вплив. Більшість сучасних фронтенд-фреймворків добре працюють як у Chromium, так і у WebKit. Однак застосунки, що покладаються на певні браузерні API, складну поведінку рендерингу або розширені вебможливості, можуть зіткнутися з проблемами сумісності.
З Electron розробники можуть тестувати застосунок на відомій версії Chromium і постачати користувачам саме цю версію. З Tauri вони мають враховувати відмінності між браузерними рушіями та потенційно різні версії системних WebView. Це стає особливо важливим під час налагодження проблем, які виникають лише в певних операційних системах або дистрибутивах Linux.
Жоден із підходів не є безумовно кращим. Tauri зменшує дублювання, використовуючи програмне забезпечення, уже встановлене на комп’ютері, тоді як Electron жертвує компактністю застосунку заради більшого контролю й узгодженості роботи.
Розмір застосунку, використання пам’яті та продуктивність
Одна з найочевидніших переваг Tauri — розмір застосунку. Оскільки Electron постачає Chromium і Node.js у комплекті, навіть відносно прості застосунки на Electron можуть займати сотні мегабайтів на диску. Застосунки на Tauri можуть бути значно меншими, оскільки покладаються на системний WebView, а не містять повноцінний браузерний рушій у пакеті застосунку.
Tauri також може мати нижче базове споживання пам’яті, особливо для легких застосунків із мінімальною фоновою обробкою. Його бекенд на Rust ефективний, а окреме браузерне середовище виконання в комплекті йому не потрібне. Для невеликих утиліт, інструментів для нотаток і застосунків із відносно простими інтерфейсами ці переваги можуть бути суттєвими.
Однак менші застосунки не обов’язково працюють швидше. І Electron, і Tauri зрештою використовують браузерні рушії для відображення своїх інтерфейсів, а продуктивність фронтенду все одно значною мірою залежить від коду застосунку. Неефективний компонент React, ресурсомістка операція JavaScript або витік пам’яті залишаться проблемою незалежно від фреймворку.
Також важливо розрізняти розмір застосунку та загальне споживання ресурсів. Tauri не усуває браузерний рушій, а просто використовує той, який надає операційна система. У Windows це означає залежність від WebView2, який зазвичай доступний у сучасних інсталяціях Windows. У macOS і Linux це означає залежність від відповідних реалізацій WebKit.
Для змістовного порівняння продуктивності розробникам варто вимірювати:
- Розмір застосунку: обсяг завантаження та використання дискового простору після встановлення.
- Час запуску: як швидко застосунок стає готовим до взаємодії.
- Використання пам’яті в стані бездіяльності: споживання пам’яті, коли застосунок відкритий, але неактивний.
- Використання пам’яті та процесора під час роботи: споживання ресурсів за реалістичних робочих навантажень.
- Чутливість інтерфейсу: продуктивність рендерингу та затримки під час взаємодії з користувачем.
Результати залежатимуть від застосунку. Tauri часто має перевагу в легких застосунках, тоді як однакове середовище Chromium в Electron може полегшити тестування й оптимізацію складних застосунків на різних платформах.
Зручність розробки та безпека
Electron має суттєву перевагу для команд, які вже мають досвід роботи з JavaScript і TypeScript. Його інтеграція з Node.js надає доступ до зрілої екосистеми бібліотек для операцій із файловою системою, мережевої взаємодії, баз даних, фонових процесів і функцій операційної системи. Розробники можуть створювати складні настільні застосунки без обов’язкового додавання ще однієї мови програмування до свого технологічного стеку.
Tauri використовує Rust для нативного бекенду, що забезпечує відмінну продуктивність, безпеку пам’яті та надійні гарантії на етапі компіляції. Розробники, як і раніше, можуть створювати інтерфейси за допомогою React, Vue, Svelte або інших JavaScript-фреймворків, а Tauri надає плагіни та JavaScript API для багатьох поширених нативних операцій.
Однак реалізація функцій поза межами цих API може потребувати написання коду на Rust або коду для конкретної платформи. Для команд, які вже впевнено працюють із Rust, це може бути перевагою. Для команд, що переважно працюють із TypeScript, це може додати складності.
Безпека — ще одна сфера, у якій ці фреймворки використовують різні підходи. Tauri надає систему дозволів на основі можливостей, призначену для обмеження доступу коду фронтенду до нативних операцій. Electron забезпечує ізольоване середовище Chromium, ізоляцію контексту та засоби обмеження доступу до Node.js й інших привілейованих API.
Обидва фреймворки дають змогу створювати безпечні застосунки за правильного налаштування, і обидва можуть наражати користувачів на вразливості, якщо розробники надають надмірні дозволи або небезпечно обробляють недовірений вміст.
Одна з важливих відмінностей стосується оновлень безпеки. Розробники Electron-застосунків відповідають за оновлення вбудованого середовища Chromium і випуск нових версій застосунків, коли з’являються виправлення безпеки. Tauri зазвичай покладається на оновлення операційної системи або постачальника WebView для отримання виправлень безпеки браузерного рушія. Це зменшує частину обов’язків розробників щодо супроводу застосунків, хоча доступність оновлень залежить від операційної системи користувача та встановленого WebView.
Зрештою, безпека більше залежить від того, як застосунок спроєктовано й підтримується, ніж від того, який фреймворк він використовує. Вибір Tauri не робить застосунок автоматично безпечним, так само як вибір Electron не робить його автоматично небезпечним.
Чому великі компанії продовжують використовувати Electron
Попри часту критику розміру застосунків і споживання ресурсів, Electron залишається популярним вибором для великих програмних продуктів. Деякі з найпоширеніших настільних застосунків створено за допомогою Electron, що демонструє здатність його архітектури підтримувати складне програмне забезпечення, яким користуються мільйони людей.
Ось кілька прикладів:
| Компанія | Застосунок |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| Signal | Signal Desktop |
| GitHub | GitHub Desktop |
| OpenAI | ChatGPT Desktop |
Ці застосунки мають дуже різне призначення — від розробки програмного забезпечення та спілкування до дизайну й продуктивної роботи. Їх об’єднує потреба забезпечувати багаті можливості настільних застосунків, водночас використовуючи переваги вебтехнологій.
Electron пропонує зрілу екосистему, однакове середовище виконання Chromium і можливість поєднувати вебінтерфейси з нативними функціями операційної системи. Його широке поширення також означає, що розробники можуть скористатися документацією, бібліотеками з відкритим кодом, інструментами налагодження та рішеннями поширених проблем, накопиченими за багато років.
Для великих застосунків продуктивність розробки та зручність супроводу можуть бути важливішими за мінімізацію розміру інсталяційного пакета. Додаткові сто мегабайтів дискового простору можуть бути прийнятним компромісом, якщо це зменшує складність кросплатформної розробки та полегшує супровід застосунку.
Це не означає, що Electron завжди є правильним вибором, і не означає, що кожна компанія обрала його з однакових причин. Однак його подальше використання у великих застосунках, що працюють у реальних умовах, показує, що Electron залишається практичним, добре перевіреним варіантом, а не застарілою технологією, яку розробникам слід автоматично замінювати.
Більше прикладів можна переглянути в офіційній добірці застосунків на Electron.
Чому ми обираємо Electron у WebCatalog
У WebCatalog ми використовуємо Electron для створення кросплатформних настільних застосунків і вважаємо, що він залишається правильним фреймворком для наших конкретних вимог.
WebCatalog дає користувачам змогу перетворювати вебсайти на настільні застосунки, незалежно підтримувати вхід у кілька облікових записів і впорядковувати свої застосунки в macOS, Windows і Linux. На відміну від звичайного настільного застосунку, де розробники контролюють фронтенд і можуть оптимізувати його під певне середовище, нам потрібно підтримувати велику кількість різноманітних вебсайтів, які ми не контролюємо.
Ці вебсайти можуть використовувати різні системи автентифікації, механізми зберігання даних, мультимедійні функції, браузерні API та JavaScript-фреймворки. Вебсайт, який правильно працює в Chromium, може поводитися інакше у WebKit, а забезпечення сумісності з кількома браузерними рушіями створило б додаткові інженерні труднощі.
Однакове середовище Chromium в Electron допомагає нам уникнути значної частини цієї складності. Воно дає нам змогу забезпечувати передбачуване браузерне середовище на всіх підтримуваних настільних платформах, а не покладатися на різні системні WebView.
Electron також надає зрілі API для керування браузерними сеансами, файлами cookie, сховищами, дозволами та навігацією. Його можливості розділення сеансів особливо цінні для WebCatalog, оскільки дають користувачам змогу підтримувати кілька незалежних сеансів входу на одному вебсайті.
Tauri також може відображати віддалені вебсайти, а подібні функції можна реалізувати за допомогою його WebView API, плагінів або інтеграцій для конкретних платформ. Відмінність полягає в тому, що Electron забезпечує більш узгоджену основу для застосунків, побудованих навколо браузерних функцій, особливо коли їм потрібно підтримувати довільні сторонні сервіси.
Підтримка Linux посилює цю перевагу. Дистрибутиви Linux суттєво відрізняються за доступними системними бібліотеками, стільничними середовищами та версіями програмного забезпечення. Середовище Chromium, що постачається з Electron, усуває одне з основних джерел відмінностей, тоді як застосунки на Tauri мають враховувати середовище WebKitGTK, доступне в кожному підтримуваному дистрибутиві.
Така узгодженість має свою ціну. Застосунки на Electron більші, а розробникам потрібно ретельно контролювати споживання ресурсів. У WebCatalog ми постійно шукаємо способи зменшити ці накладні витрати. Наприклад, ми запровадили клони APFS, щоб зменшити використання дискового простору згенерованими застосунками для Mac, продемонструвавши, що деякі недоліки Electron можна усунути, не відмовляючись від фреймворку.
Наше рішення не ґрунтується на переконанні, що Electron в усьому кращий за Tauri. Воно ґрунтується на вимогах нашого продукту. Для WebCatalog сумісність із вебсайтами, однакова поведінка в різних операційних системах і зрілі можливості керування сеансами цінніші за мінімізацію розміру застосунку.
Де Tauri має перевагу
Попри те, що у WebCatalog ми віддаємо перевагу Electron, є чимало ситуацій, у яких Tauri може бути кращим вибором. Для легких настільних утиліт менші пакети застосунків і нижче базове споживання ресурсів є вагомими перевагами. Застосунки, які переважно відображають власний фронтенд, мають відносно прості вимоги до нативних функцій і не залежать від конкретного браузерного рушія, можуть суттєво виграти від архітектури Tauri.
Tauri також привабливий для розробників, які віддають перевагу Rust або хочуть спільно використовувати нативну логіку застосунку на різних платформах. Починаючи з Tauri 2, фреймворк офіційно підтримує Android та iOS на додачу до настільних операційних систем. Electron, натомість, призначений насамперед для розробки настільних застосунків і офіційно не підтримує мобільні платформи.
Ще один чинник — супровід. Однакове середовище виконання Electron спрощує тестування сумісності, але також вимагає від розробників застосунків підтримувати й оновлювати версії Chromium, що постачаються в комплекті. Tauri делегує більшу частину цієї відповідальності операційній системі, що може зменшити навантаження із супроводу для певних застосунків. Однак розробникам може знадобитися докласти додаткових зусиль для тестування різних реалізацій WebView та розв’язання проблем, специфічних для окремих платформ.
Загальна вартість розробки важливіша за будь-який окремий показник тестування. Фреймворк, який заощаджує пам’ять, але потребує значно більше інженерної роботи, може бути не найефективнішим вибором для конкретної команди. Так само постачати велике середовище Chromium для простої утиліти може бути зайвим, якщо Tauri здатен виконати те саме завдання з меншими витратами ресурсів.
Electron чи Tauri: що обрати?
Обидва фреймворки дають змогу створювати настільні застосунки для реального використання, але оптимізовані під різні пріоритети.
| Ваш пріоритет | Краща відправна точка | Чому |
|---|---|---|
| Невеликий обсяг завантаження та розмір після встановлення | Tauri | Використовує системний WebView |
| Низьке базове споживання ресурсів | Tauri | Легкий нативний бекенд |
| Однаковий рендеринг на настільних платформах | Electron | Постачає однаковий рушій Chromium у комплекті |
| Широка інтеграція з Node.js | Electron | Вбудоване середовище виконання Node.js |
| Нативні функції на Rust | Tauri | Rust — основна мова бекенду |
| Відображення довільних сторонніх вебсайтів | Electron | Передбачуване середовище Chromium |
| Складне керування браузерними сеансами | Electron | Зрілі API для сеансів та їх розділення |
| Розробка для настільних і мобільних платформ | Tauri | Офіційна підтримка настільних і мобільних платформ |
| Мінімальне тестування кросбраузерної сумісності | Electron | Однаковий рушій на всіх настільних платформах |
Це загальні рекомендації, а не абсолютні правила. Electron можна використовувати для створення ефективних застосунків, а Tauri може бути основою складного програмного забезпечення. Кращий вибір залежить від вимог продукту та наявного досвіду команди.
Командам, які створюють складні настільні застосунки, варто серйозно розглянути перевірену екосистему та багаторічний досвід використання Electron. Його застосування в Microsoft, Slack, Discord та інших великих розробників програмного забезпечення демонструє, що фреймворк здатен задовольняти високі вимоги реальної експлуатації.
Водночас Tauri пропонує привабливу альтернативу для проєктів, у яких пріоритетними є менший розмір виконуваних файлів, нижче базове споживання ресурсів, інтеграція з Rust або спільна розробка для настільних і мобільних платформ.
Підсумки
Дискусію про Electron і Tauri часто зводять до простого порівняння: Electron великий, а Tauri малий. Але суттєвіша відмінність полягає у виборі між однаковим середовищем виконання, що постачається в комплекті, та легким фреймворком, який інтегрується із системними WebView.
Electron надає пріоритет узгодженій роботі на різних платформах, інтеграції з екосистемою JavaScript і широкому контролю над браузерними функціями. Tauri надає пріоритет меншим пакетам застосунків, ефективному виконанню нативного коду та тіснішій інтеграції з WebView операційних систем.
У WebCatalog ми обрали Electron, як і багато великих компаній-розробників програмного забезпечення для своїх настільних застосунків. Ми цінуємо його зрілу екосистему, однакове середовище Chromium та широкі браузерні можливості. Ці переваги допомагають нам створювати й підтримувати продукт, який працює з широким спектром вебсайтів у кількох операційних системах.
Це не робить Tauri поганим вибором. Для легких утиліт або застосунків з іншими вимогами його переваги можуть переважати переваги Electron.
Найкращий фреймворк — не обов’язково той, що має найменший виконуваний файл або найнижче використання пам’яті. Це той, який дає вашій команді змогу найефективніше створювати, підтримувати й удосконалювати застосунок.


