
Electron i Tauri to dwa popularne frameworki do tworzenia aplikacji desktopowych z wykorzystaniem technologii internetowych. Oba pozwalają programistom używać HTML, CSS, JavaScriptu i nowoczesnych frameworków frontendowych do tworzenia aplikacji na macOS, Windows i Linux. Różnią się jednak zasadniczo pod względem sposobu działania tych aplikacji.
Electron dołącza Chromium i Node.js do każdej aplikacji, zapewniając spójny silnik przeglądarki i środowisko uruchomieniowe we wszystkich systemach operacyjnych. Tauri stosuje lżejsze podejście: korzysta z istniejącego w systemie komponentu webview oraz backendu opartego na języku Rust. Ta różnica architektoniczna wpływa na rozmiar aplikacji, zużycie pamięci, wydajność, bezpieczeństwo, kompatybilność i produktywność programistów.
Tauri jest często przedstawiany jako nowocześniejsza, lekka alternatywa dla Electrona. Choć ma rzeczywiste zalety, zwłaszcza pod względem rozmiaru aplikacji i zużycia zasobów, Electron pozostaje dobrym wyborem dla wielu rodzajów oprogramowania desktopowego. Korzystają z niego znane aplikacje, takie jak Visual Studio Code, Slack, Discord, Notion i Figma. W WebCatalog również wybraliśmy Electrona jako podstawę naszych wieloplatformowych aplikacji desktopowych.
Który framework warto więc wybrać? Zrozumienie kompromisów jest bardziej przydatne niż ogłaszanie zwycięstwa któregokolwiek z nich.
Electron a Tauri w skrócie
Zanim przejdziemy do różnic technicznych, zobaczmy, jak oba frameworki wypadają pod względem najważniejszych cech.
| Cecha | Electron | Tauri |
|---|---|---|
| Silnik przeglądarki | Dołączony Chromium | Systemowy komponent webview |
| Backend | Node.js | Rust |
| Rozmiar aplikacji | Zwykle większy | Zwykle mniejszy |
| Podstawowe zużycie pamięci | Zwykle wyższe | Zwykle niższe |
| Spójność między platformami | Wysoka | Zależna od platformy |
| Ekosystem JavaScript | Szeroka obsługa Node.js | JavaScript na frontendzie, natywne API dostępne przez wtyczki i polecenia |
| Model bezpieczeństwa | Piaskownica Chromium, izolacja kontekstu, IPC | Backend w Rust, mechanizm uprawnień oparty na możliwościach (capabilities), IPC |
| Platformy desktopowe | macOS, Windows, Linux | macOS, Windows, Linux |
| Obsługa platform mobilnych | Brak oficjalnej obsługi | Android i iOS |
| Najlepsze zastosowanie | Złożone aplikacje desktopowe zależne od Chromium | Lekkie aplikacje i narzędzia zintegrowane z natywnymi funkcjami systemu |
Różnice te wynikają przede wszystkim z jednej decyzji architektonicznej: czy dołączać silnik przeglądarki do aplikacji, czy korzystać z tego, który zapewnia system operacyjny.
Architektura: dołączony Chromium a systemowe komponenty webview
Największa różnica między Electronem a Tauri dotyczy sposobu renderowania treści internetowych. Electron zawiera własny silnik Chromium, dzięki czemu aplikacje korzystają zasadniczo z tej samej technologii przeglądarkowej w systemach macOS, Windows i Linux. Programiści mogą polegać na konkretnej wersji Chromium i obsługiwanych przez nią interfejsach API platformy webowej, niezależnie od systemu operacyjnego zainstalowanego u użytkownika.
Tauri korzysta natomiast z komponentu webview udostępnianego przez dany system operacyjny. Znacznie zmniejsza to ilość oprogramowania, które trzeba dołączyć do aplikacji, ale oznacza też, że ta sama aplikacja może działać na różnych silnikach przeglądarkowych w zależności od platformy.
| Platforma | Electron | Tauri |
|---|---|---|
| macOS | Chromium | WKWebView (WebKit) |
| Windows | Chromium | WebView2 (Chromium) |
| Linux | Chromium | WebKitGTK |
| Android | Brak oficjalnej obsługi | Android WebView |
| iOS | Brak oficjalnej obsługi | WKWebView |
W przypadku aplikacji z prostym interfejsem różnice te mogą mieć niewielkie znaczenie praktyczne. Większość nowoczesnych frameworków frontendowych działa dobrze zarówno w Chromium, jak i w WebKit. Jednak aplikacje korzystające z konkretnych interfejsów API przeglądarki, złożonych mechanizmów renderowania lub zaawansowanych możliwości platformy webowej mogą napotkać problemy z kompatybilnością.
W przypadku Electrona programiści mogą testować aplikację z określoną wersją Chromium i dostarczać użytkownikom tę samą wersję. W przypadku Tauri muszą uwzględniać różnice między silnikami przeglądarek, a potencjalnie także między wersjami systemowych komponentów webview. Jest to szczególnie istotne podczas diagnozowania problemów występujących tylko w określonych systemach operacyjnych lub dystrybucjach Linuksa.
Żadne z tych podejść nie jest z natury lepsze. Tauri ogranicza powielanie komponentów, wykorzystując oprogramowanie już zainstalowane na komputerze, natomiast Electron akceptuje większy rozmiar aplikacji w zamian za większą kontrolę i spójność.
Rozmiar aplikacji, zużycie pamięci i wydajność
Jedną z najbardziej oczywistych zalet Tauri jest rozmiar aplikacji. Ponieważ Electron dołącza Chromium i Node.js, nawet stosunkowo proste aplikacje zbudowane za jego pomocą mogą zajmować setki megabajtów miejsca na dysku. Aplikacje Tauri mogą być znacznie mniejsze, ponieważ korzystają z systemowego komponentu webview, zamiast zawierać kompletny silnik przeglądarki w pakiecie aplikacji.
Tauri może również zapewniać niższe podstawowe zużycie pamięci, szczególnie w przypadku lekkich aplikacji wykonujących niewiele operacji w tle. Jego backend napisany w Rust jest wydajny, a sam framework nie wymaga utrzymywania osobnego, dołączonego środowiska przeglądarkowego. W przypadku niewielkich narzędzi, aplikacji do notatek i programów o stosunkowo prostych interfejsach zalety te mogą być znaczące.
Mniejsze aplikacje nie muszą jednak działać szybciej. Zarówno Electron, jak i Tauri ostatecznie korzystają z silników przeglądarek do renderowania interfejsów, a wydajność frontendu nadal w dużym stopniu zależy od kodu aplikacji. Nieefektywny komponent React, kosztowna operacja w JavaScripcie czy wyciek pamięci pozostaną problemem niezależnie od frameworka.
Istotne jest też rozróżnienie między rozmiarem aplikacji a całkowitym zużyciem zasobów. Tauri nie eliminuje silnika przeglądarki — po prostu korzysta z tego, który zapewnia system operacyjny. W systemie Windows oznacza to korzystanie z WebView2, który jest zazwyczaj dostępny we współczesnych instalacjach Windows. W macOS i Linuksie oznacza to poleganie na odpowiednich implementacjach WebKit.
Aby rzetelnie porównać wydajność, programiści powinni mierzyć:
- Rozmiar aplikacji: rozmiar pobieranego pakietu i zajęte miejsce na dysku po instalacji.
- Czas uruchamiania: jak szybko aplikacja staje się gotowa do interakcji.
- Zużycie pamięci w spoczynku: ilość pamięci zużywanej, gdy aplikacja jest otwarta, ale nieaktywna.
- Zużycie pamięci i procesora podczas pracy: wykorzystanie zasobów przy realistycznym obciążeniu.
- Responsywność: wydajność renderowania i opóźnienia podczas interakcji z użytkownikiem.
Wyniki będą zależeć od aplikacji. Tauri często ma przewagę w przypadku lekkich aplikacji, natomiast spójne środowisko Chromium w Electronie może ułatwiać testowanie i optymalizowanie złożonych aplikacji na różnych platformach.
Komfort pracy programistów i bezpieczeństwo
Electron ma istotną przewagę w zespołach, które mają już doświadczenie z JavaScriptem i TypeScriptem. Jego integracja z Node.js zapewnia dostęp do dojrzałego ekosystemu bibliotek do obsługi systemu plików, komunikacji sieciowej, baz danych, procesów działających w tle i funkcji systemu operacyjnego. Programiści mogą tworzyć zaawansowane aplikacje desktopowe bez konieczności wprowadzania kolejnego języka programowania do swojego stosu technologicznego.
Tauri wykorzystuje Rust do tworzenia natywnego backendu, co zapewnia doskonałą wydajność, bezpieczeństwo pamięci i silne gwarancje na etapie kompilacji. Programiści nadal mogą budować interfejsy za pomocą Reacta, Vue, Svelte lub innych frameworków JavaScript, a Tauri udostępnia wtyczki i interfejsy API JavaScript do wielu typowych operacji natywnych.
Jednak wdrożenie funkcji wykraczających poza te API może wymagać pisania kodu w Rust lub kodu specyficznego dla danej platformy. Dla zespołów dobrze znających Rust może to być zaletą. W zespołach pracujących głównie z TypeScriptem może natomiast wprowadzać dodatkową złożoność.
Bezpieczeństwo to kolejny obszar, w którym oba frameworki stosują odmienne podejścia. Tauri udostępnia system uprawnień oparty na możliwościach (capabilities), którego zadaniem jest ograniczanie dostępu kodu frontendowego do operacji natywnych. Electron zapewnia piaskownicę Chromium, izolację kontekstu oraz mechanizmy ograniczania dostępu do Node.js i innych uprzywilejowanych interfejsów API.
Oba frameworki umożliwiają tworzenie bezpiecznych aplikacji przy prawidłowej konfiguracji. Oba mogą też narażać użytkowników na luki w zabezpieczeniach, jeśli programiści przyznają nadmierne uprawnienia lub w niebezpieczny sposób obsługują niezaufane treści.
Jedna z ważnych różnic dotyczy aktualizacji zabezpieczeń. Programiści korzystający z Electrona odpowiadają za aktualizowanie dołączonego środowiska Chromium i udostępnianie nowych wersji aplikacji, gdy pojawiają się poprawki bezpieczeństwa. Tauri zazwyczaj polega na aktualizacjach systemu operacyjnego lub dostawcy komponentu webview w zakresie poprawek bezpieczeństwa silnika przeglądarki. Zmniejsza to część obowiązków związanych z utrzymaniem aplikacji, choć dostępność aktualizacji zależy od systemu operacyjnego użytkownika i zainstalowanego komponentu webview.
Ostatecznie bezpieczeństwo zależy bardziej od sposobu zaprojektowania i utrzymywania aplikacji niż od użytego frameworka. Wybór Tauri nie sprawia automatycznie, że aplikacja jest bezpieczna, tak samo jak wybór Electrona nie sprawia automatycznie, że jest niebezpieczna.
Dlaczego duże firmy nadal korzystają z Electrona
Mimo częstej krytyki rozmiaru aplikacji i zużycia zasobów Electron pozostaje popularnym wyborem dla dużych produktów programistycznych. Niektóre z najczęściej używanych aplikacji desktopowych powstały z wykorzystaniem Electrona, co pokazuje, że jego architektura może stanowić podstawę złożonego oprogramowania używanego przez miliony osób.
Przykłady obejmują:
| Firma | Aplikacja |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| Signal | Signal Desktop |
| GitHub | GitHub Desktop |
| OpenAI | ChatGPT Desktop |
Aplikacje te służą bardzo różnym celom — od tworzenia oprogramowania i komunikacji po projektowanie i zwiększanie produktywności. Łączy je potrzeba zapewnienia rozbudowanych możliwości aplikacji desktopowych przy jednoczesnym wykorzystaniu technologii internetowych.
Electron oferuje dojrzały ekosystem, spójne środowisko uruchomieniowe Chromium oraz możliwość łączenia interfejsów webowych z natywnymi funkcjami systemu operacyjnego. Jego szerokie zastosowanie oznacza również, że programiści mogą korzystać z rozwijanej przez lata dokumentacji, bibliotek open source, narzędzi do debugowania i rozwiązań typowych problemów.
W przypadku dużych aplikacji produktywność zespołu i łatwość utrzymania mogą być ważniejsze niż minimalizowanie rozmiaru pakietu instalacyjnego. Dodatkowe sto megabajtów miejsca na dysku może być akceptowalnym kompromisem, jeśli ogranicza złożoność prac nad obsługą wielu platform i ułatwia utrzymanie aplikacji.
Nie oznacza to, że Electron zawsze jest właściwym wyborem ani że każda firma wybrała go z tych samych powodów. Jego dalsze wykorzystanie w dużych aplikacjach produkcyjnych pokazuje jednak, że pozostaje praktycznym, ugruntowanym rozwiązaniem, a nie przestarzałą technologią, którą programiści powinni automatycznie zastępować.
Więcej przykładów znajdziesz w oficjalnej galerii aplikacji Electron.
Dlaczego w WebCatalog wybieramy Electrona
W WebCatalog korzystamy z Electrona do tworzenia wieloplatformowych aplikacji desktopowych i uważamy, że nadal jest to właściwy framework dla naszych konkretnych wymagań.
WebCatalog pozwala użytkownikom przekształcać strony internetowe w aplikacje desktopowe, utrzymywać niezależne sesje logowania na wielu kontach i organizować swoje aplikacje w systemach macOS, Windows i Linux. W odróżnieniu od tradycyjnej aplikacji desktopowej, w której programiści kontrolują frontend i mogą zoptymalizować go pod kątem określonego środowiska, musimy obsługiwać wiele różnych stron internetowych, nad którymi nie mamy kontroli.
Strony te mogą korzystać z różnych systemów uwierzytelniania, mechanizmów przechowywania danych, funkcji multimedialnych, interfejsów API przeglądarki i frameworków JavaScript. Strona działająca poprawnie w Chromium może zachowywać się inaczej w WebKit, a utrzymywanie kompatybilności z wieloma silnikami przeglądarek wiązałoby się z dodatkowymi wyzwaniami technicznymi.
Spójne środowisko uruchomieniowe Chromium w Electronie pozwala nam uniknąć znacznej części tej złożoności. Umożliwia zapewnienie przewidywalnego środowiska przeglądarkowego na wszystkich obsługiwanych platformach desktopowych zamiast polegania na różnych systemowych komponentach webview.
Electron udostępnia też dojrzałe API do zarządzania sesjami przeglądarki, plikami cookie, przechowywaniem danych, uprawnieniami i nawigacją. Jego możliwości partycjonowania sesji są szczególnie cenne dla WebCatalog, ponieważ pozwalają użytkownikom utrzymywać wiele niezależnych sesji logowania w tej samej witrynie.
Tauri również może wyświetlać zdalne strony internetowe, a podobne funkcje można wdrożyć za pomocą jego interfejsów API webview, wtyczek lub integracji specyficznych dla danej platformy. Różnica polega na tym, że Electron zapewnia bardziej spójną podstawę dla aplikacji opartych na funkcjach przeglądarki, szczególnie gdy muszą obsługiwać dowolne usługi zewnętrzne.
Obsługa Linuksa dodatkowo wzmacnia tę przewagę. Dystrybucje Linuksa znacznie różnią się pod względem dostępnych bibliotek systemowych, środowisk graficznych i wersji oprogramowania. Dołączone do Electrona środowisko Chromium eliminuje jedno z głównych źródeł tych różnic, podczas gdy aplikacje Tauri muszą uwzględniać środowisko WebKitGTK dostępne w każdej obsługiwanej dystrybucji.
Ta spójność ma swoją cenę. Aplikacje Electron są większe, a programiści muszą starannie zarządzać zużyciem zasobów. W WebCatalog stale szukamy sposobów ograniczania tego narzutu. Na przykład wprowadziliśmy klony APFS, aby zmniejszyć zużycie miejsca na dysku przez generowane aplikacje na Maca, pokazując, że niektóre wady Electrona można ograniczyć bez rezygnowania z tego frameworka.
Nasza decyzja nie wynika z przekonania, że Electron jest pod każdym względem lepszy od Tauri. Wynika z wymagań naszego produktu. W przypadku WebCatalog kompatybilność z witrynami internetowymi, spójne działanie w różnych systemach operacyjnych i dojrzałe możliwości zarządzania sesjami są ważniejsze niż minimalizowanie rozmiaru aplikacji.
Gdzie Tauri ma przewagę
Mimo że w WebCatalog preferujemy Electrona, istnieje wiele sytuacji, w których Tauri może być lepszym wyborem. W przypadku lekkich narzędzi desktopowych mniejsze pakiety aplikacji i niższe podstawowe zużycie zasobów to przekonujące zalety. Aplikacje, które wyświetlają przede wszystkim własny frontend, mają stosunkowo proste wymagania dotyczące funkcji natywnych i nie zależą od konkretnego silnika przeglądarki, mogą wiele zyskać dzięki architekturze Tauri.
Tauri jest również atrakcyjny dla programistów, którzy preferują Rust lub chcą współdzielić natywną logikę aplikacji między platformami. Od wersji Tauri 2 framework oficjalnie obsługuje Androida i iOS, oprócz desktopowych systemów operacyjnych. Electron jest natomiast przeznaczony przede wszystkim do tworzenia aplikacji desktopowych i nie obsługuje oficjalnie platform mobilnych.
Kolejną kwestią jest utrzymanie. Spójne środowisko uruchomieniowe Electrona upraszcza testowanie kompatybilności, ale wymaga też od programistów utrzymywania i aktualizowania dołączonych wersji Chromium. Tauri przekazuje większą część tej odpowiedzialności systemowi operacyjnemu, co w niektórych aplikacjach może zmniejszyć nakład pracy związany z utrzymaniem. Programiści mogą jednak potrzebować dodatkowego czasu na testowanie różnych implementacji webview i rozwiązywanie problemów specyficznych dla poszczególnych platform.
Całkowity koszt tworzenia oprogramowania ma większe znaczenie niż pojedynczy wynik testu wydajności. Framework, który oszczędza pamięć, ale wymaga znacznie więcej pracy programistycznej, może nie być najbardziej efektywnym wyborem dla danego zespołu. Podobnie dołączanie dużego środowiska Chromium do prostego narzędzia może być zbędne, jeśli Tauri pozwala wykonać to samo zadanie przy mniejszym zużyciu zasobów.
Electron a Tauri: który wybrać?
Oba frameworki pozwalają tworzyć aplikacje desktopowe gotowe do użytku produkcyjnego, ale są zoptymalizowane pod kątem różnych priorytetów.
| Twój priorytet | Lepszy punkt wyjścia | Dlaczego |
|---|---|---|
| Mały rozmiar pobieranego pakietu i instalacji | Tauri | Korzysta z systemowego komponentu webview |
| Niskie podstawowe zużycie zasobów | Tauri | Lekki natywny backend |
| Spójne renderowanie na platformach desktopowych | Electron | Dołącza ten sam silnik Chromium |
| Rozbudowana integracja z Node.js | Electron | Wbudowane środowisko uruchomieniowe Node.js |
| Natywne funkcje oparte na Rust | Tauri | Rust jest głównym językiem backendu |
| Wyświetlanie dowolnych witryn zewnętrznych | Electron | Przewidywalne środowisko Chromium |
| Złożone zarządzanie sesjami przeglądarki | Electron | Dojrzałe API do obsługi sesji i partycji |
| Tworzenie aplikacji desktopowych i mobilnych | Tauri | Oficjalna obsługa platform desktopowych i mobilnych |
| Minimalny zakres testowania kompatybilności między przeglądarkami | Electron | Spójny silnik na wszystkich platformach desktopowych |
Są to ogólne zalecenia, a nie bezwzględne reguły. Electron może służyć do tworzenia wydajnych aplikacji, a Tauri może stanowić podstawę zaawansowanego oprogramowania. Lepszy wybór zależy od wymagań produktu i dotychczasowych kompetencji zespołu.
Zespoły tworzące zaawansowane aplikacje desktopowe powinny poważnie rozważyć ugruntowany ekosystem Electrona i jego sprawdzoną historię zastosowań. Fakt, że korzystają z niego Microsoft, Slack, Discord i inni duzi producenci oprogramowania, pokazuje, że framework potrafi sprostać wysokim wymaganiom środowisk produkcyjnych.
Z kolei Tauri oferuje atrakcyjną alternatywę dla projektów, w których priorytetem są mniejsze pliki binarne, niższe podstawowe zużycie zasobów, integracja z Rust lub wspólne tworzenie aplikacji desktopowych i mobilnych.
Podsumowanie
Dyskusja o Electronie i Tauri jest często sprowadzana do prostego porównania: Electron jest duży, a Tauri mały. Istotniejsza różnica dotyczy jednak wyboru między dołączonym, spójnym środowiskiem uruchomieniowym a lekkim frameworkiem, który integruje się z komponentami webview dostarczanymi przez system.
Electron stawia na spójność między platformami, integrację z ekosystemem JavaScript i szeroką kontrolę nad funkcjami przeglądarki. Tauri stawia na mniejsze pakiety aplikacji, wydajne wykonywanie kodu natywnego i ściślejszą integrację z komponentami webview systemu operacyjnego.
W WebCatalog wybraliśmy Electrona, podobnie jak wiele dużych firm programistycznych w przypadku swoich aplikacji desktopowych. Cenimy jego dojrzały ekosystem, spójne środowisko uruchomieniowe Chromium i rozbudowane funkcje przeglądarkowe. Zalety te pomagają nam tworzyć i utrzymywać produkt obsługujący szeroki zakres witryn internetowych w wielu systemach operacyjnych.
Nie oznacza to, że Tauri jest złym wyborem. W przypadku lekkich narzędzi lub aplikacji o innych wymaganiach jego zalety mogą przeważać nad zaletami Electrona.
Najlepszy framework niekoniecznie jest tym, który ma najmniejszy plik wykonywalny lub zużywa najmniej pamięci. To ten, który pozwala Twojemu zespołowi najskuteczniej tworzyć, utrzymywać i ulepszać aplikację.


