الکترون برنده جنگ اپهای دسکتاپ شد — و حالا رقبا نحوه ساخت اپ توسط توسعهدهندگان را تغییر میدهند

در سال ۲۰۱۳، گیتهاب Atom را منتشر کرد؛ یک ویرایشگر متن که روی فریمورکی ساخته شده بود که یک مرورگر کامل کرومیوم و رانتایم Node.js را درون یک اپ دسکتاپ جاسازی میکرد. این فریمورک که بعداً Electron نام گرفت، برای توسعهدهندگان حساس به عملکرد عجیب به نظر میرسید: چرا باید یک مرورگر کامل را برای اجرای یک ویرایشگر متن بستهبندی کرد؟
سیزده سال بعد، Electron قدرتمندترین ابزار توسعهدهنده روی زمین را تغذیه میکند. Visual Studio Code، Slack، Discord، کلاینت دسکتاپ Figma، Notion، 1Password و دهها اپلیکیشن دیگر که هرکدام در حوزه خود تعریفکننده هستند، همه روی Electron ساخته شدهاند. مهم نیست چه اعتراضات تئوری وجود دارد؛ Electron برنده شد. حالا سوال این است که آیا میتواند این برتری را حفظ کند در حالی که نسل جدیدی از فریمورکها به نقاط ضعفش حمله میکنند.
چرا Electron برنده شد
ارزش اصلی Electron ساده است: یک بار با HTML، CSS و جاوااسکریپت بنویس و در ویندوز، macOS و لینوکس بدون نیاز به نگهداری کدبیسهای جداگانه منتشر کن. برای تیمهایی که از قبل اپهای وب میسازند، انتقال مهارت تقریباً صفر است. اکوسیستم npm میلیونها پکیج ارائه میدهد. Chrome DevTools برای دیباگ کار میکند. رفتار رندرینگ کاملاً قابل پیشبینی است چون همیشه همان موتور مرورگر است.
مورد تجاری خودش را ثابت کرد. در مقایسه با استخدام متخصصان پلتفرم بومی برای macOS (Swift/Objective-C) و ویندوز (C#/WinRT) به صورت جداگانه، یک تیم جاوااسکریپتی که یک کدبیس را نگهداری میکند به طور چشمگیری ارزانتر بود. Slack معروفاً کلاینت macOS خود را از اپ بومی به Electron منتقل کرد و تعداد مهندسان تیم دسکتاپ را کاهش داد. مصالحه در عملکرد با توجه به کاهش پیچیدگی قابل قبول ارزیابی شد.
هزینههای واقعی
شکایات از Electron واقعی و مستند هستند. یک اپ Electron معمولی حدود ۱۵۰ تا ۲۰۰ مگابایت کرومیوم و Node.js را بستهبندی میکند، یعنی هر اپ Electron کپی خودش از مرورگر را حمل میکند. نصبکننده Discord بیش از ۹۰ مگابایت است. VS Code حدود ۱۰۰ مگابایت. این را در ۱۵ یا ۲۰ اپ Electron که یک توسعهدهنده معمولی اجرا میکند ضرب کنید، و شما گیگابایتها نصب مرورگر تکراری به دستگاهتان اضافه کردهاید.
مصرف حافظه مشکل فوریتر است. Discord معمولاً ۶۰۰ تا ۹۰۰ مگابایت RAM در حالت idle استفاده میکند. Slack هم به طور تاریخی مقادیر مشابهی مصرف کرده. روی یک MacBook با ۸ گیگابایت حافظه یکپارچه، اجرای سه اپ Electron همزمان به معنای اختصاص بخش قابل توجهی از RAM به اپهایی است که اساساً منتظر نگاه شما هستند.
زمان راهاندازی نسبت به معادلهای بومی کندتر است. زمان باز کردن VS Code در حالت سرد به طور محسوسی بیشتر از یک ویرایشگر بومی است. برای کاربران حرفهای که تمام روز اپها را باز میگذارند، این یک مزاحمت کوچک است. برای کاربرانی که عادت به بستن و باز کردن مکرر اپها دارند، جمع میشود.
Tauri: رقیب سبکوزن
Tauri که اولین بار در سال ۲۰۲۱ منتشر شد و در سال ۲۰۲۴ به نسخه ۲.۰ رسید، رویکرد معماری متفاوتی دارد. به جای بستهبندی کرومیوم، از WebView داخلی سیستمعامل استفاده میکند — WebKit در macOS و لینوکس، WebView2 (موتور رندرینگ Edge) در ویندوز. بکاند آن روی Rust اجرا میشود نه Node.js.
نتیجه اپهایی به طور چشمگیری کوچکتر است. یک اپ Tauri حداقلی نصبکنندهای کمتر از ۴ مگابایت تولید میکند. مصرف حافظه در حالت idle میتواند برای اپهای ساده زیر ۵۰ مگابایت باشد. تضمینهای ایمنی Rust و ویژگیهای عملکردی بکاند را برای عملیاتهای CPU-intensive کارآمدتر از Node.js میکند.
مصالحه، ثبات رندرینگ است. چون Tauri از WebView سیستم استفاده میکند، رندرینگ میتواند بین پلتفرمها متفاوت باشد — WebKit در موارد لبهای با WebView2 رفتار متفاوتی دارد. توسعهدهندگانی که به تضمین «همیشه شبیه Chrome» Electron عادت کردهاند، باید تست cross-platform بیشتری انجام دهند. CSS یا جاوااسکریپتی که در macOS عالی کار میکند ممکن است در ویندوز تفاوتهای ظریفی داشته باشد.
با وجود این، Tauri پذیرش جدی داشته. Bitwarden در سال ۲۰۲۳ کلاینت دسکتاپ خود را از Electron به Tauri منتقل کرد و کاهش چشمگیری در مصرف حافظه و حجم نصبکننده گزارش داد. اپهای حساس به امنیت به ویژه سود میبرند: سطح حمله کوچکتر Tauri — بدون رانتایم Node.js و بدون موتور مرورگر کامل — برای اپهایی که دادههای حساس را مدیریت میکنند معنیدار است.
سایر رقبا
Wails زبان Go را به همان معماری مبتنی بر WebView که Tauri پیشگام بود میآورد و برای تیمهایی که از قبل در اکوسیستم Go سرمایهگذاری کردهاند جذاب است. Flutter که در اصل یک فریمورک موبایل بود، به کیفیت تولید روی دسکتاپ رسیده و یک موتور رندرینگ کاملاً سفارشی دارد — نه WebView — با ثبات پیکسلبهپیکسل در پلتفرمها اما با هزینه منحنی یادگیری بزرگتر.
Progressive Web Apps (PWAها) برای اپهایی که نیاز به یکپارچگی عمیق سیستم ندارند قابل استفاده هستند. Chrome و Edge هر دو از نصب PWA به عنوان اپ دسکتاپ پشتیبانی میکنند، و شکاف عملکردی بین PWA و اپهای Electron در چند سال اخیر به طور قابل توجهی کاهش یافته. برای اپهایی که عمدتاً محتوا نمایش میدهند و نیازی به دسترسی به فایل سیستم، پورتهای محلی یا نوتیفیکیشنهای سیستمی ندارند، PWAها اغلب انتخاب معقولی هستند.
چرا Electron رفتنی نیست
با وجود رقبا، خندق Electron عمیق است. اکوسیستم پکیجهای سازگار با Electron، ابزارها و آموزشها عظیم است. تیمهایی که کدبیسهای موجود Electron دارند انگیزه کمی برای بازنویسی اپهایی که کار میکنند دارند. شکایات عملکرد، هرچند موجه، تا حدی قابل تحمل بوده که کاربران همچنان اپهای Electron را دهها میلیونی نصب میکنند.
سرمایهگذاری مداوم مایکروسافت روی VS Code — محبوبترین IDE جهان که روی Electron ساخته شده — نشان میدهد که این فریمورک برای آینده قابل پیشبینی به طور فعال نگهداری خواهد شد. تیم اصلی Electron نیز عملکرد را به طور معنیداری در طول سالها بهبود داده: موتور جاوااسکریپت V8 نسبت به ۲۰۱۳ به طور چشمگیری سریعتر شده و مدیریت حافظه کرومیوم بهبود یافته.
چشمانداز ۲۰۲۶
اکوسیستم اپ دسکتاپ در سال ۲۰۲۶ متنوعتر از هر نقطهای در تاریخ Electron به نظر میرسد. Electron همچنان برای اپهایی که ثبات رندرینگ، سازگاری گسترده npm و آشنایی توسعهدهنده مهمترین است، غالب است. Tauri برای اپهایی که امنیت، اندازه باینری یا عملکرد راهاندازی محدودیتهای بحرانی هستند، برنده است. Flutter فضا را برای اپهایی با نیازهای UI سفارشی باز میکند. PWAها به تدریج موارد استفادهای که نیاز به یکپارچگی سیستم ندارند را تصاحب میکنند.
تغییر واقعی در نحوه ساخت اپلیکیشنهای جدید است. تیمهایی که در سال ۲۰۲۶ پروژههای دسکتاپ را شروع میکنند، بیشتر از سال ۲۰۱۸ در مورد معاوضهها فکر میکنند. Electron دیگر پیشفرض نیست — یکی از چند گزینه است، هر کدام با پروفایل عملکرد و پیچیدگی متفاوت. این یک اکوسیستم سالمتر از دوران «ساخت اپ دسکتاپ یعنی ساخت اپ Electron» است، چه مناسب باشد چه نه.