
Electron a Tauri jsou dva populární frameworky pro tvorbu desktopových aplikací pomocí webových technologií. Oba umožňují vývojářům používat HTML, CSS, JavaScript a moderní frontendové frameworky k vytváření aplikací pro macOS, Windows a Linux. Zásadně se však liší v tom, jak tyto aplikace běží.
Electron přibaluje ke každé aplikaci Chromium a Node.js, čímž zajišťuje jednotné prohlížečové jádro a běhové prostředí napříč operačními systémy. Tauri volí odlehčený přístup: využívá stávající webview operačního systému spolu s backendem napsaným v Rustu. Tento architektonický rozdíl ovlivňuje velikost aplikace, využití paměti, výkon, bezpečnost, kompatibilitu i produktivitu vývojářů.
Tauri bývá často prezentováno jako modernější a odlehčená alternativa k Electronu. Přestože má skutečné výhody, zejména v oblasti velikosti aplikací a spotřeby prostředků, Electron zůstává silnou volbou pro mnoho typů desktopového softwaru. Používají ho významné aplikace jako Visual Studio Code, Slack, Discord, Notion a Figma. Také ve WebCatalogu jsme si Electron zvolili jako základ našich multiplatformních desktopových aplikací.
Který framework byste si tedy měli vybrat? Pochopení kompromisů je užitečnější než prohlásit jeden z frameworků za vítěze.
Electron vs. Tauri v kostce
Než se pustíme do technických rozdílů, podívejme se, jak si oba frameworky vedou v důležitých vlastnostech.
| Vlastnost | Electron | Tauri |
|---|---|---|
| Prohlížečové jádro | Přibalené Chromium | Systémové webview |
| Backend | Node.js | Rust |
| Velikost aplikace | Obvykle větší | Obvykle menší |
| Základní využití paměti | Obvykle vyšší | Obvykle nižší |
| Konzistence napříč platformami | Vysoká | Liší se podle platformy |
| Ekosystém JavaScriptu | Rozsáhlá podpora Node.js | JavaScript na frontendu, nativní API prostřednictvím pluginů a příkazů |
| Bezpečnostní model | Sandbox Chromia, izolace kontextu, IPC | Backend v Rustu, systém oprávnění založený na schopnostech, IPC |
| Desktopové platformy | macOS, Windows, Linux | macOS, Windows, Linux |
| Podpora mobilních platforem | Bez oficiální podpory | Android a iOS |
| Nejvhodnější pro | Komplexní desktopové aplikace závislé na Chromiu | Nenáročné aplikace a nástroje s nativní integrací |
Tyto rozdíly vycházejí především z jednoho architektonického rozhodnutí: zda přibalit prohlížečové jádro, nebo se spolehnout na to, které poskytuje operační systém.
Architektura: přibalené Chromium vs. systémová webview
Největší rozdíl mezi Electronem a Tauri spočívá ve způsobu vykreslování webového obsahu. Electron obsahuje vlastní jádro Chromium, což znamená, že aplikace používají v podstatě stejnou technologii prohlížeče v macOS, Windows i Linuxu. Vývojáři se mohou spolehnout na konkrétní verzi Chromia a jí podporovaná webová API bez ohledu na to, jaký operační systém mají jejich uživatelé nainstalovaný.
Tauri místo toho používá webview poskytované jednotlivými operačními systémy. Tím výrazně snižuje množství softwaru, který je nutné přibalit k aplikaci, ale zároveň to znamená, že stejná aplikace může v závislosti na platformě běžet na různých prohlížečových jádrech.
| Platforma | Electron | Tauri |
|---|---|---|
| macOS | Chromium | WKWebView (WebKit) |
| Windows | Chromium | WebView2 (Chromium) |
| Linux | Chromium | WebKitGTK |
| Android | Bez oficiální podpory | Android WebView |
| iOS | Bez oficiální podpory | WKWebView |
U aplikací s jednoduchým rozhraním mohou mít tyto rozdíly jen malý praktický dopad. Většina moderních frontendových frameworků funguje dobře v Chromiu i WebKitu. Aplikace, které se spoléhají na konkrétní API prohlížeče, složité chování při vykreslování nebo pokročilé webové funkce, však mohou narazit na problémy s kompatibilitou.
S Electronem mohou vývojáři testovat proti známé verzi Chromia a stejnou verzi distribuovat uživatelům. U Tauri musí zohledňovat rozdíly mezi prohlížečovými jádry a případně i různé verze systémových webview. To je zvlášť důležité při ladění problémů, které se vyskytují pouze v určitých operačních systémech nebo linuxových distribucích.
Ani jeden přístup není ze své podstaty lepší. Tauri omezuje duplicitu tím, že využívá software již nainstalovaný v počítači, zatímco Electron obětuje menší velikost aplikace výměnou za větší kontrolu a konzistenci.
Velikost aplikace, využití paměti a výkon
Jednou z nejzřetelnějších výhod Tauri je velikost aplikace. Protože Electron přibaluje Chromium a Node.js, mohou i relativně jednoduché aplikace v Electronu zabírat stovky megabajtů místa na disku. Aplikace v Tauri mohou být výrazně menší, protože spoléhají na systémové webview namísto toho, aby balíček aplikace obsahoval celé prohlížečové jádro.
Tauri může mít také nižší základní spotřebu paměti, zejména u nenáročných aplikací s minimálním zpracováním na pozadí. Jeho backend v Rustu je efektivní a nepotřebuje samostatné přibalené běhové prostředí prohlížeče. U malých nástrojů, aplikací na poznámky a aplikací s relativně jednoduchým rozhraním mohou být tyto výhody významné.
Menší aplikace však nemusí být nutně rychlejší. Electron i Tauri nakonec k vykreslování rozhraní používají prohlížečová jádra a výkon frontendu stále do značné míry závisí na kódu aplikace. Neefektivní komponenta Reactu, náročná operace v JavaScriptu nebo únik paměti zůstanou problémem bez ohledu na použitý framework.
Důležitý je také rozdíl mezi velikostí aplikace a celkovou spotřebou prostředků. Tauri prohlížečové jádro neodstraňuje; pouze používá to, které dodává operační systém. Ve Windows to znamená spoléhat se na WebView2, které je v moderních instalacích Windows běžně dostupné. V macOS a Linuxu to znamená spoléhat se na příslušné implementace WebKitu.
Pro smysluplné porovnání výkonu by vývojáři měli měřit:
- Velikost aplikace: Velikost stahovaných dat a využití disku po instalaci.
- Dobu spuštění: Za jak dlouho aplikace začne reagovat na uživatele.
- Využití paměti v nečinnosti: Spotřebu paměti, když je aplikace otevřená, ale neaktivní.
- Využití paměti a procesoru při práci: Spotřebu prostředků při realistickém zatížení.
- Odezvu: Výkon vykreslování a latenci při interakcích s uživatelem.
Výsledky budou záviset na konkrétní aplikaci. Tauri má často výhodu u nenáročných aplikací, zatímco jednotné prostředí Chromia v Electronu může usnadnit testování a optimalizaci složitých aplikací napříč platformami.
Vývojářská zkušenost a bezpečnost
Electron má významnou výhodu pro týmy, které již mají zkušenosti s JavaScriptem a TypeScriptem. Jeho integrace s Node.js poskytuje přístup k vyspělému ekosystému knihoven pro práci se souborovým systémem, sítí, databázemi, procesy na pozadí a funkcemi operačního systému. Vývojáři mohou vytvářet sofistikované desktopové aplikace, aniž by do své technologické sestavy nutně museli přidávat další programovací jazyk.
Tauri používá pro svůj nativní backend Rust, který přináší vynikající výkon, paměťovou bezpečnost a silné záruky při kompilaci. Vývojáři mohou nadále vytvářet rozhraní pomocí Reactu, Vue, Svelte nebo jiných javascriptových frameworků a Tauri poskytuje pluginy a javascriptová API pro mnoho běžných nativních operací.
Implementace funkcí nad rámec těchto API však může vyžadovat psaní kódu v Rustu nebo kódu specifického pro danou platformu. Pro týmy, které už Rust dobře ovládají, to může být výhoda. Pro týmy pracující převážně s TypeScriptem to může znamenat další složitost.
Bezpečnost je další oblast, v níž oba frameworky volí odlišné přístupy. Tauri poskytuje systém oprávnění založený na schopnostech, který je navržen tak, aby omezoval, k jakým nativním operacím má frontendový kód přístup. Electron nabízí sandbox Chromia, izolaci kontextu a mechanismy pro omezení přístupu k Node.js a dalším privilegovaným API.
Oba frameworky umožňují při správné konfiguraci vytvářet bezpečné aplikace a oba mohou uživatele vystavit zranitelnostem, pokud vývojáři udělí nadměrná oprávnění nebo nebezpečně zacházejí s nedůvěryhodným obsahem.
Jeden důležitý rozdíl se týká bezpečnostních aktualizací. Vývojáři používající Electron odpovídají za aktualizaci přibaleného běhového prostředí Chromium a distribuci nových verzí aplikace, když jsou k dispozici bezpečnostní opravy. Tauri se u bezpečnostních oprav prohlížečového jádra obecně spoléhá na aktualizace operačního systému nebo poskytovatele webview. Tím vývojářům aplikací ubývá část povinností spojených s údržbou, dostupnost aktualizací však závisí na operačním systému uživatele a nainstalovaném webview.
Bezpečnost nakonec závisí více na tom, jak je aplikace navržena a udržována, než na tom, jaký framework používá. Volba Tauri neznamená, že aplikace bude automaticky bezpečná, stejně jako volba Electronu neznamená, že bude automaticky nebezpečná.
Proč velké společnosti nadále používají Electron
Navzdory časté kritice velikosti aplikací a spotřeby prostředků zůstává Electron oblíbenou volbou pro významné softwarové produkty. Některé z nejpoužívanějších desktopových aplikací jsou vytvořeny pomocí Electronu, což ukazuje, že jeho architektura dokáže podporovat komplexní software používaný miliony lidí.
Mezi příklady patří:
| Společnost | Aplikace |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| Signal | Signal Desktop |
| GitHub | GitHub Desktop |
| OpenAI | ChatGPT Desktop |
Tyto aplikace slouží velmi odlišným účelům, od vývoje softwaru a komunikace až po design a produktivitu. Spojuje je potřeba poskytovat propracované desktopové prostředí a zároveň využívat webové technologie.
Electron nabízí vyspělý ekosystém, jednotné běhové prostředí Chromium a možnost kombinovat webová rozhraní s nativními funkcemi operačního systému. Jeho široké rozšíření také znamená, že vývojáři mohou využívat léta budovanou dokumentaci, open-source knihovny, ladicí nástroje a řešení běžných problémů.
U velkých aplikací mohou být produktivita vývoje a udržovatelnost důležitější než minimalizace velikosti instalačního balíčku. O sto megabajtů více na disku může být přijatelným kompromisem, pokud to sníží složitost vývoje pro více platforem a usnadní údržbu aplikace.
To neznamená, že je Electron vždy správnou volbou, ani že si jej všechny společnosti zvolily ze stejných důvodů. Jeho pokračující využívání ve významných produkčních aplikacích však ukazuje, že Electron zůstává praktickou a osvědčenou možností, nikoli zastaralou technologií, kterou by vývojáři měli automaticky nahrazovat.
Další příklady si můžete prohlédnout v oficiální přehlídce aplikací v Electronu.
Proč jsme si ve WebCatalogu vybrali Electron
Ve WebCatalogu používáme Electron k tvorbě multiplatformních desktopových aplikací a věříme, že pro naše konkrétní požadavky zůstává tím správným frameworkem.
WebCatalog umožňuje uživatelům měnit webové stránky na desktopové aplikace, zůstat nezávisle přihlášeni k více účtům a organizovat své aplikace v macOS, Windows a Linuxu. Na rozdíl od běžné desktopové aplikace, kde vývojáři ovládají frontend a mohou jej optimalizovat pro konkrétní prostředí, potřebujeme podporovat širokou škálu webových stránek, nad nimiž nemáme kontrolu.
Tyto webové stránky mohou používat různé autentizační systémy, mechanismy ukládání dat, multimediální funkce, API prohlížeče a javascriptové frameworky. Webová stránka, která správně funguje v Chromiu, se může ve WebKitu chovat jinak a udržování kompatibility napříč více prohlížečovými jádry by přinášelo další technické výzvy.
Jednotné běhové prostředí Chromium v Electronu nám pomáhá velké části této složitosti předejít. Umožňuje nám poskytovat předvídatelné prostředí prohlížeče napříč podporovanými desktopovými platformami namísto spoléhání se na různá systémová webview.
Electron také poskytuje vyspělá API pro správu relací prohlížeče, souborů cookie, úložiště, oprávnění a navigace. Jeho možnosti oddělování relací jsou pro WebCatalog obzvlášť cenné, protože uživatelům umožňují udržovat více nezávislých přihlašovacích relací pro stejný web.
Tauri také dokáže zobrazovat vzdálené webové stránky a podobné funkce lze implementovat pomocí jeho API pro webview, pluginů nebo integrací specifických pro danou platformu. Rozdíl je v tom, že Electron poskytuje jednotnější základ pro aplikace postavené na funkcích prohlížeče, zejména když potřebují podporovat libovolné služby třetích stran.
Podpora Linuxu tuto výhodu dále posiluje. Linuxové distribuce se výrazně liší dostupnými systémovými knihovnami, desktopovými prostředími a verzemi softwaru. Přibalené běhové prostředí Chromium v Electronu odstraňuje jeden významný zdroj rozdílů, zatímco aplikace v Tauri musí zohledňovat prostředí WebKitGTK dostupné v každé podporované distribuci.
Tato konzistence má svou cenu. Aplikace v Electronu jsou větší a vývojáři musí pečlivě řídit spotřebu prostředků. Ve WebCatalogu neustále hledáme způsoby, jak tuto režii snížit. Například jsme zavedli klony APFS pro snížení využití disku generovanými aplikacemi pro Mac, čímž ukazujeme, že některé nevýhody Electronu lze řešit i bez opuštění tohoto frameworku.
Naše rozhodnutí nevychází z přesvědčení, že je Electron univerzálně lepší než Tauri. Vychází z požadavků našeho produktu. Pro WebCatalog jsou kompatibilita webových stránek, jednotné chování napříč operačními systémy a vyspělé možnosti správy relací cennější než minimalizace velikosti aplikace.
Kde má Tauri výhodu
Přestože ve WebCatalogu upřednostňujeme Electron, existuje mnoho situací, kdy může být Tauri lepší volbou. U nenáročných desktopových nástrojů jsou menší aplikační balíčky a nižší základní spotřeba prostředků přesvědčivými výhodami. Aplikace, které zobrazují především vlastní frontend, mají relativně jednoduché požadavky na nativní funkce a nezávisí na konkrétním prohlížečovém jádru, mohou z architektury Tauri výrazně těžit.
Tauri je atraktivní také pro vývojáře, kteří dávají přednost Rustu nebo chtějí sdílet nativní aplikační logiku napříč platformami. Od verze Tauri 2 framework kromě desktopových operačních systémů oficiálně podporuje také Android a iOS. Electron je naproti tomu určen především pro vývoj desktopových aplikací a mobilní platformy oficiálně nepodporuje.
Dalším hlediskem je údržba. Jednotné běhové prostředí Electronu zjednodušuje testování kompatibility, zároveň však vyžaduje, aby vývojáři aplikací udržovali a aktualizovali přibalené verze Chromia. Tauri přenáší větší část této odpovědnosti na operační systém, což může u některých aplikací snížit náročnost údržby. Vývojáři však mohou muset věnovat více úsilí testování různých implementací webview a řešení problémů specifických pro jednotlivé platformy.
Celkové náklady na vývoj jsou důležitější než jakýkoli jednotlivý benchmark. Framework, který šetří paměť, ale vyžaduje výrazně více vývojářské práce, nemusí být pro konkrétní tým nejefektivnější volbou. Stejně tak může být zbytečné dodávat rozsáhlé běhové prostředí Chromium pro jednoduchý nástroj, pokud Tauri zvládne stejný úkol s menší spotřebou prostředků.
Electron vs. Tauri: který byste si měli vybrat?
Oba frameworky umožňují vytvářet desktopové aplikace pro produkční nasazení, každý je však optimalizován pro jiné priority.
| Vaše priorita | Vhodnější výchozí volba | Proč |
|---|---|---|
| Malá velikost stahovaných dat a instalace | Tauri | Používá systémové webview |
| Nízká základní spotřeba prostředků | Tauri | Odlehčený nativní backend |
| Jednotné vykreslování napříč desktopovými platformami | Electron | Přibaluje stejné jádro Chromium |
| Rozsáhlá integrace s Node.js | Electron | Vestavěné běhové prostředí Node.js |
| Nativní funkce založené na Rustu | Tauri | Rust je hlavním jazykem backendu |
| Zobrazování libovolných webových stránek třetích stran | Electron | Předvídatelné prostředí Chromium |
| Komplexní správa relací prohlížeče | Electron | Vyspělá API pro relace a jejich oddělování |
| Vývoj pro desktop i mobilní zařízení | Tauri | Oficiální podpora desktopových i mobilních platforem |
| Minimum testování kompatibility mezi prohlížeči | Electron | Jednotné jádro napříč desktopovými platformami |
Jde o obecná doporučení, nikoli o absolutní pravidla. Electron lze použít k tvorbě efektivních aplikací, zatímco Tauri může sloužit jako základ sofistikovaného softwaru. Lepší volba závisí na požadavcích produktu a stávajících odborných znalostech týmu.
Týmy vytvářející sofistikované desktopové aplikace by měly osvědčený ekosystém a dosavadní výsledky Electronu vážně zvážit. Jeho využívání společnostmi Microsoft, Slack, Discord a dalšími významnými vývojáři softwaru dokazuje, že tento framework dokáže splnit náročné požadavky produkčního nasazení.
Tauri mezitím nabízí přesvědčivou alternativu pro projekty, které upřednostňují menší binární soubory, nižší základní spotřebu prostředků, integraci s Rustem nebo společný vývoj pro desktopové a mobilní platformy.
Závěrečné myšlenky
Debata Electron vs. Tauri se často redukuje na jednoduché srovnání: Electron je velký, zatímco Tauri je malé. Podstatnější rozdíl však spočívá mezi přibaleným jednotným běhovým prostředím a odlehčeným frameworkem, který se integruje s webview poskytovanými systémem.
Electron upřednostňuje konzistenci napříč platformami, integraci s ekosystémem JavaScriptu a rozsáhlou kontrolu nad funkcemi prohlížeče. Tauri upřednostňuje menší aplikační balíčky, efektivní běh nativního kódu a těsnější integraci s webview operačního systému.
Ve WebCatalogu jsme si vybrali Electron, stejně jako mnoho významných softwarových společností pro své desktopové aplikace. Ceníme si jeho vyspělého ekosystému, jednotného běhového prostředí Chromium a rozsáhlých funkcí prohlížeče. Tyto výhody nám pomáhají vytvářet a udržovat produkt, který podporuje širokou škálu webových stránek napříč více operačními systémy.
To neznamená, že je Tauri špatnou volbou. U nenáročných nástrojů nebo aplikací s jinými požadavky mohou jeho výhody převážit nad výhodami Electronu.
Nejlepší framework nemusí být ten s nejmenším spustitelným souborem nebo nejnižší spotřebou paměti. Je to ten, který vašemu týmu umožní co nejefektivněji vytvářet, udržovat a vylepšovat vaši aplikaci.


