Как бизнесу создавать десктопные приложения на Electron в 2026 году
Electron — самый быстрый и наименее рискованный способ выпустить кросс-платформенное десктопное приложение в 2026 году, если ваши пользователи ожидают нативного ощущения на Windows, macOS и Linux, а команда уже владеет TypeScript, React и Node. Это решение в одном предложении. Всё остальное — меньшие бандлы Tauri, более тесная интеграция WebView2 с Windows, мобильный паритет Flutter — это компромиссы, которые стоит рассматривать только после того, как вы оценили, что даёт Electron на практике и как он работает в продакшене.
Это руководство описывает наш подход к разработке десктопных приложений на Electron в Фора Софт, сформированный после создания десктопных клиентов для видеосвязи, видеоконференций и образовательных платформ для заказчиков из 15+ стран. Мы разбираем: когда Electron — подходящий (и неподходящий) выбор, какой стек 2026 года реально используется в релизах, реальные бюджеты в зависимости от масштаба проекта, пять инженерных практик, которые мы всегда соблюдаем, как справиться с подпиской кода и автообновлениями, а также пять скрытых проблем, которые незаметно съедают бюджет.
Главное
- На Electron в 2026 году работают VS Code, Slack, Discord, Figma Desktop, 1Password, Linear, Notion, Cursor, Signal и WhatsApp Desktop — реальные продукты с общей аудиторией более 100 миллионов активных пользователей.
- Выбирайте Electron, если у вас команда на React/TypeScript, нужна одинаковая работа на трёх операционных системах и пользователи готовы установить приложение объёмом 120–200 МБ. Tauri 2.0 — если важны бандлы меньше 20 МБ. Нативный Swift/Kotlin/C++ — если нужна безусловная производительность, например, обработка видео 4K 60 кадров в секунду.
- Реалистичные бюджеты на 2026 год: MVP десктопного клиента — 1,8–6 млн ₽ (6–10 недель), SaaS-приложение средней сложности — 6–15 млн ₽ (3–4 месяца), корпоративный клиент видеосвязи — 15–37 млн ₽ и выше (6–9 месяцев).
- Пять привычек, которые спасают в продакшене: строгий
contextIsolation, preload-скрипт черезcontextBridge, автообновление через electron-builder, валидация IPC по принципу zero-trust и слой абстракции над нативными модулями. - Скрытые издержки, которые ломают сроки: нотаризация macOS, EV-сертификат для подписи Windows, универсальные бинарники под Apple Silicon, крайние случаи автообновления и утечки памяти от незакрытых BrowserWindow.
Почему Фора Софт написала это руководство по разработке десктопных приложений на Electron
Мы делаем video-first софт с 2005 года, а десктопные клиенты на Electron — со времён ранних версий 1.х. В нашем портфолио — ProVideoMeeting (видеоконференции с досками, комнатами и записью), V. A. L. T. (700+ организаций, 25 000 ежедневных пользователей, запись с доказательной силой), Vodeo (OTT-сервис Janson Media) и большой список десктопных клиентов для Windows, macOS и Linux. Этот опыт определяет подход: мы не сравниваем фреймворки как академики — мы рассказываем о решениях, которые наши инженеры принимали в реальных проектах, о том, сколько это стоило и что ломалось в продакшене через три месяца после релиза.
Большинство туториалов по Electron заканчиваются на «npm init». Это руководство — про то, что происходит между прототипом и подписанным, автоматически обновляющимся бинарником, который ваш корпоративный клиент устанавливает через SCCM. Именно там и заключается 80% настоящей работы.
Когда Electron — правильный выбор, а когда нет
Electron выигрывает, когда одновременно выполняются три условия: ваша команда лучше разбирается в веб-технологиях, чем в нативных платформах; нужна одинаковая функциональность на Windows, macOS и Linux; в продукте есть браузерная версия, которая использует тот же код, что и десктопная.
Зелёный свет для Electron
Команда уже работает с React, Vue и Svelte. Переключение между контекстами не требует дополнительных затрат. Один разработчик может поддерживать и веб, и десктоп. Корпоративные клиенты используют Linux. Tauri на Linux работает, но с проблемами; нативные решения на Qt или GTK требуют отдельной команды. Electron с самого начала собирает Linux-версии из той же кодовой базы. Требуется глубокая интеграция с файловой системой и операционной системой. Node.js предоставляет проверенный доступ ко всем системным возможностям без необходимости писать биндинги на Rust или Swift. Нужны кастомные протоколы, иконка в системном трее, глобальные горячие клавиши, автозапуск. API основного процесса Electron включают всё это «из коробки».
Красные флаги против Electron
Ваше приложение в простое состоянии потребляет меньше 80 МБ RAM. Пустой Electron на базе Chromium стартует с ~150–200 МБ — он будет выглядеть громоздким по сравнению с нативным аналогом. Кодирование видео 4K 60 fps — ключевое преимущество продукта. WebCodecs в Chromium быстро развивается, но нативные пайплайны на AVFoundation и Media Foundation пока остаются на профессиональном уровне быстрее. Целевые сценарии — изолированные или kiosk-развёртывания только под Windows. WebView2 на Windows 11 не добавляет ни одного лишнего байта. Требуются установщики <20 МБ для рынков с ограниченным интернет-каналом. Tauri 2.0 укладывается в 5–15 МБ; Electron — 80–150 МБ в сжатом виде.
Наше правило
Если продакт-менеджер спрашивает: «Electron или нативка?» — мы отвечаем встречным вопросом: «Сколько стоят три нативные кодовые базы, которые нужно поддерживать синхронно в течение пяти лет?». Когда эта сумма превышает экономию на оперативной памяти — побеждает Electron.
Electron в 2026: версии, Chromium, Node и история про безопасность
Каденс Electron в 2026 году — крупный релиз каждые 8 недель. На момент написания актуальная стабильная версия — Electron 41 на Chromium 146 и Node 24 LTS. Дефолты по безопасности заметно подтянулись в 2024–2026: contextIsolation по умолчанию true с v12, nodeIntegration по умолчанию false, а процессная модель v34+ убирает большую часть оставшихся атак на одном источнике.
Реальное потребление памяти
Пустое Electron-приложение в 2026 году стартует с ~150–200 МБ оперативной памяти. Хорошо оптимизированное продакшен-приложение с интерфейсом на React и умеренным состоянием потребляет 300–500 МБ. VS Code с большим TypeScript-проектом легко расходует более 1 ГБ. Это максимальный объём, на который стоит ориентироваться при планировании. Что помогает: ленивая загрузка маршрутов рендерера, агрессивный демонтаж неиспользуемых компонентов, повторное использование одного BrowserWindow с навигацией внутри приложения вместо создания новых окон.
Бюджет на размер бинарника
Chromium + Node + V8 + ffmpeg — это около 120 МБ на каждую ОС. Добавьте бандл рендерера (обычно 5–15 МБ после сборки через Vite), нативные модули (5–20 МБ), ассеты и локализации — и получится полноценный установщик Electron объёмом 150–200 МБ. Универсальные сборки macOS, включающие бинарники под Intel и ARM64, увеличивают размер артефакта под macOS до 250–300 МБ.
Дефолты безопасности, которые нужно держать включёнными
Включайте sandbox для рендерера. Держите contextIsolation: true. Никогда не включайте require в рендерере. Используйте contextBridge.exposeInMainWorld, чтобы безопасно передать узкую типизированную IPC-интерфейс. Включайте проверку целостности ASAR (Electron v30+), чтобы любая правка бандла делала запуск невозможным. На стороне основного процесса проверяйте каждый payload IPC-канала — рендерер доступен для атакующего.
Electron, Tauri, Flutter Desktop, WebView2 и нативная разработка
Ландшафт альтернатив в 2026 году стал богаче, чем когда-либо. Вот честное сравнение для команд, которые выбирают сегодня — на основе реально выпущенного кода.
| Фреймворк | Размер бандла | RAM в простое | Язык | Подходит для |
|---|---|---|---|---|
| Electron 41 | 120–200 МБ | 150–250 МБ | TS/JS | Кросс-платформенный SaaS с веб-командой |
| Tauri 2.0 | 5–15 МБ | 60–120 МБ | Rust + TS | Узкий канал, повышенные требования к безопасности |
| Flutter Desktop | 20–50 МБ | 80–150 МБ | Dart | Точное соответствие мобильного и десктопного интерфейса |
| WebView2 (Win) | 2–10 МБ | 40–100 МБ | .NET или C++ | Корпоративные приложения работают только под Windows |
| .NET MAUI | 30–80 МБ | 80–180 МБ | C# | Windows+Mac, .NET-команды |
| Qt 6 / C++ | 30–80 МБ | 50–120 МБ | C++/QML | Видео в реальном времени, качественный звук |
| Нативный Swift/Кotlin | 10–40 МБ | 30–100 МБ | Swift/Kotlin | Showcase-приложения для конкретной платформы |
Tauri 2.0 — реальный претендент
Tauri использует встроенный в ОС WebView (WebKit на macOS, WebView2 на Windows, WebKitGTK на Linux) и Rust-бэкенд. Поэтому установщики весят 5–15 МБ, а в простое состояние приложение занимает около 60 МБ оперативной памяти. Компромисс: движки WebView отличаются на разных ОС. CSS и JavaScript, которые работают в Chromium, могут не работать в Safari или WebKit на Mac. Если вы и так тестируете три браузера, Tauri подойдёт естественно. Если вам нужен Chromium везде — лучше остаться на Electron.
Чему учит миграция Microsoft Teams
Microsoft перевели Teams с Electron на WebView2 в 2023–2024 годах и сообщили о снижении потребления памяти примерно на 50% и ускорении холодного запуска вдвое на Windows. При этом они потеряли единообразие между операционными системами: клиент для Mac теперь использует отдельную кодовую базу. Для Microsoft такой компромисс оправдан — они разрабатывают Windows и контролируют WebView2. Для большинства поставщиков SaaS — нет: им пришлось бы отдельно поддерживать WebView2 на Windows, WKWebView на Mac и WebKitGTK на Linux. Большинство команд продолжают использовать Electron.
Кто выпускает приложения на Electron в 2026 году (и что это значит)
Список заказчиков — лучший индикатор, чем любой бенчмарк. В 2026 году продакшен-приложения на Electron включают VS Code (~35 млн ежемесячных активных разработчиков), Slack (32+ млн ежедневных активных пользователей), Discord (200+ млн MAU), Figma Desktop, Notion Desktop, Linear, Obsidian, 1Password, Signal Desktop, Cursor, WhatsApp Desktop и Cisco Webex. Общая база установок — более 500 млн активных пользователей.
О чём это говорит: Electron — выбор по умолчанию, когда продуктовая команда ценит скорость выхода на рынок, одинаковый опыт на всех платформах и возможность нанимать разработчиков с веб-навыками больше, чем экономию в 100 МБ оперативной памяти. Даже Cursor — конкурент уровня «AI-нативной IDE» 2023–2024 годов — предпочёл сделать форк VS Code на Electron, а не создавать полностью нативное приложение. Время выхода на рынок оказалось важнее эффективности использования ресурсов.
Стек на Electron 2026, который мы реально выпускаем
После десятилетия работы с Electron мы по умолчанию используем именно этот стек. Отклоняемся от него только при наличии веской причины.
Сборка и настройка
electron-вite для dev-сервера и сборки рендерера — HMR на уровне ожиданий веб-разработчика, TypeScript из коробки. Electron Forge 8+ как оркестратор сборки: поддерживает шаблоны для webpack, vite и parcel, занимается упаковкой, подписью и публикацией. electron-builder остаётся надёжной альтернативой для команд, которым нужны цели MSIX, Snap и Flatpak.
Стек рендерера
React 19 с новым Actions API или Vue 3.5. TanStack Query для управления состоянием на сервере. Zustand для клиентского состояния — он лучше сохраняет данные при перезагрузке окон в Electron, чем Redux. Tailwind 4 для стилей. Radix UI или shadcn/ui для доступных UI-примитивов.
IPC-слой
Типизированный IPC через electron-trpc или вручную написанные типизированные каналы. Каждый ipcMain.handle мы оборачиваем в валидатор по схеме Zod — это ловит 90% ошибок рендерера на этапе разработки и 100% случайно открытых точек входа.
Нативные расширения
node-api (N-API), собранные через node-gyp, или Rust на napi-rs. Мы выбираем napi-rs для задач, связанных с обработкой аудио и видео в реальном времени, потому что управление памятью там предсказуемо. Кодеки интегрируем, запуская ffmpeg как отдельный процесс, а не подключая как библиотеку — это помогает избежать проблем с разными версиями libc в различных дистрибутивах Linux.
Состояние и хранение
SQLite через better-sqlite3 для локальных данных. electron-store для небольших настроек. Для зашифрованных секретов — keytar или нативное защищённое хранилище ОС (Keychain, DPAPI, libsecret) в типизированной обёртке.
Наблюдаемость
Sentry для отчётов о сбоях и ошибках. PostHog или Amplitude для аналитики продукта. Простое уведомление об opt-in телеметрии при первом запуске — это требование GDPR, CCPA и корпоративных заказов.
Пять инженерных привычек, которые спасают в продакшене
1. Строгая изоляция контекста — без исключений
В webPreferences: contextIsolation: true, nodeIntegration: false, sandbox: true. Если библиотека требует включения nodeIntegration, перенесите её логику в основной процесс и предоставьте рендереру только минимально необходимую типизированную интерфейсную поверхность. Мы не сталкивались ни с одним случаем, когда ослабление этой настройки оправдывало бы риски, связанные с уязвимостями типа CVE.
2. Preload-скрипты только через contextBridge
Preload-скрипт — единственный мост между Node и рендерером. Используйте типизированный API через contextBridge.exposeInMainWorld('api', { ... }) с амбиентным объявлением типов. Никогда не передавайте напрямую ipcRenderer, fs или child_process. Пользователи TypeScript получают автодополнение, а вы — аудит-логи по каждому IPC-каналу.
3. Валидация IPC по принципу zero-trust через Zod
Относитесь к каждому IPC-сообщению как к HTTP-запросу из интернета. Оборачивайте каждый обработчик ipcMain.handle в schema.parse(args) — иначе отклоняйте. Когда рендерер скомпрометируют — а на миллионах установок это рано или поздно произойдёт, — валидация станет барьером между утечкой учётных данных и удалённым выполнением кода.
4. Автообновление через electron-builder с первого дня
Автообновление — не новая функция версии 1.1. Выпускайте его уже в 0.1. electron-builder плюс S3, GitHub Releases или приватный generic-провайдер. Стейджите обновления: открывайте 5%-канарейку для внутренних пользователей перед широким раскатом. Тестируйте откат. Версионируйте формат манифеста обновлений, чтобы безопасно его развивать.
5. Абстракция над нативными модулями через слой сервисов
Каждая нативная зависимость (keytar, better-sqlite3, node-pty, ffi-нapi) скрыта за TypeScript-интерфейсом сервиса. Тестируйте сервис с помощью in-memory-заглушки. Когда нативный модуль перестаёт работать после обновления Electron — а это рано или поздно случается со всеми — вы меняете реализацию, а не сами вызовы. Только эта практика сократила трудозатраты на обновления примерно на 40% в пяти проектах клиентов.
Сколько на самом деле стоит десктопное приложение на Electron в 2026 году
Эти диапазоны взяты из нашего портфеля проектов на 2024–2026 годы и предположений по дисконтам от Agent Engineering. Они реалистичны для опытного агентства с senior-инженерами, а не для ставок по контракту.
| Размер проекта | Бюджет | Сроки | Команда | Объём |
|---|---|---|---|---|
| MVP | 1,8–6 млн ₽ | 6–10 недель | 1 FE, 0,5 BE, 0,25 PM | 5–8 экранов, подписанные сборки для Mac и Windows, базовое автообновление |
| SaaS средней сложности | 6–15 млн ₽ | 3–4 месяца | 2 FE, 1 BE, 0,5 QA, 0,5 PM, 0,25 design | 15–25 экранов, OAuth, 2–3 нативные интеграции, поэтапный запуск |
| Корпоративный клиент видеосвязи | 15–37 млн ₽ и выше | 6–9 месяцев | 3–4 FE, 2 BE, 1 media-инженер, 1 QA, 1 PM, 0,5 design | Интеграция WebRTC/LiveKit, демонстрация экрана, виртуальный фон, MDM-упаковка, SSO, пентест |
| Миграция с веба на десктоп-оболочку | 3–9 млн ₽ | 2–3 месяца | 1–2 FE, 0,5 QA | Обёртка для существующего веб-приложения, интеграция с операционной системой, подписанная дистрибуция |
Скрытые статьи, которые клиенты часто недооценивают: 37 500–112 500 ₽/год за Apple Developer + EV-сертификат для подписи Windows, 2–4 недели на кросс-платформенный тестовый запуск первого релиза, 15 000–37 500 ₽/мес на инструменты сбора крашей и аналитики при 10K DAU, и 15–25% от первоначального бюджета ежегодно на обновления Electron и патчи безопасности.
Получите оценку для своего десктопного приложения
Думаете о десктопном клиенте на Electron для своего продукта?
Свяжитесь с нашим CTO. Мы подготовим стек, сроки и реалистичный бюджет под ваш сценарий — до того, как вы потратите хотя бы один инженерный спринт.
Подписание кода и распространение: о чём вас никто не предупреждает
Сделать само десктопное приложение — это 60% работы. Доставить его на машины пользователей через современные шлюзы безопасности ОС — оставшиеся 40%. Закладывайтесь соответственно.
macOS: подпись + нотаризация + stapling
Регистрируйтесь в Apple Developer Program (7 425 ₽/год). Создайте сертификат Developer ID Application. Подписывайте приложение через electron-osx-sign (в составе electron-builder), используя hardened runtime и права (entitlements) на доступ к камере, микрофону и сети. Отправляйте на нотариализацию через notarytool — Apple выдаёт тикет за 2–15 минут (иногда до двух часов при высокой нагрузке). Прикрепите (staple) тикет к сборке, чтобы Gatekeeper работал без подключения к интернету. Публикуйте универсальную версию для процессоров Intel и Apple Silicon.
Windows: EV-сертификат против SmartScreen
Стандартные сертификаты для подписи кода (22 500–45 000 ₽/год) всё ещё вызывают предупреждения SmartScreen при первой установке. EV-сертификат (Extended Validation, 30 000–52 500 ₽/год, требуется аппаратный токен) позволяет избежать большинства проблем с SmartScreen с самого начала. Для корпоративных клиентов также полезны MSIX-упаковка для Microsoft Store, MSI-пакеты для развёртывания через SCCM/Intune и установщик Squirrel для удобного автоматического обновления.
Linux: AppImage + deb + rpm + Snap + Flatpak
electron-builder собирает AppImage (универсально), deb, rpm, snap и flatpak. Начинайте с AppImage — достаточно просто скачать и запустить. Snap и Flatpak добавляйте только если у вас будет 5%+ Linux-DAU: до этого накладные расходы на упаковку и проверку в магазинах не оправданы.
Автообновление без ночных оповещений
electron-updater (часть electron-builder) обрабатывает три основных сценария: Squirrel.Mac на macOS, Squirrel.Windows на Windows и self-update AppImage на Linux. Интерфейс простой, но много мест, где могут возникнуть сбои.
Поэтапные раскаты с канареечными каналами
Сначала публикуйте в canary-канал (внутренние пользователи + 5% от всей базы). Через 48 часов чистой телеметрии падений переходите в beta (20%). Ещё через 72 часа — в stable. Откат канала выполняется путём публикации патч-версии, которая отменяет изменения. Эта практика помогла выявить регрессию в нативном модуле у одного клиента до того, как её увидели 90% пользователей.
Принудительные обновления для исправлений безопасности
Заведите серверный флаг манифеста forceUpdate: true. Когда он включён, приложение не запускается на старых версиях и заставляет пользователя переустановить его. Используйте осторожно — только при уязвимостях уровня CVE. Предупредите пользователей внутри приложения до активации флага.
Дельта-обновления
electron-updater вычисляет разницу между релизами: обычно 5–20 МБ вместо полного установщика на 150 МБ. Включайте дельта-обновления для пользователей с медленным интернетом, отключайте в корпоративных сетях с агрессивными кэширующими прокси, которые плохо работают с частичными загрузками.
Electron для приложений видеосвязи и стриминга: особые нюансы
Видео в реальном времени — это та область, где десктопные приложения на Electron либо оправдывают себя, либо дают сбой. Мы выпускали Electron-клиенты для LiveKit, Twilio Video и Agora. Вот что особенно важно при такой нагрузке.
Разрешения на камеру, микрофон и демонстрацию экрана
macOS требует явных прав (entitlements) и описания использования в файле Info.plist для доступа к камере, микрофону, записи экрана и функциям доступности (например, для глобальных горячих клавиш). Запуск демонстрации экрана вызывает системный запрос разрешения, который нельзя предварительно одобрить — проектируйте пользовательский интерфейс с учётом пустого состояния и понятным призывом к действию (CTA). В Windows 11 настройки разрешений находятся в разделе «Параметры» → «Конфиденциальность» → «Камера» или «Микрофон»; имя вашего приложения должно точно совпадать с подписью исполняемого файла. На Linux разрешений на уровне операционной системы нет — в 2026 году запись экрана будет осуществляться через PipeWire.
Аппаратное ускорение кодирования и декодирования
Chromium использует VideoToolbox (macOS), D3D11/Media Foundation (Windows) и VAAPI (Linux) для аппаратного декодирования H.264, H.265 и AV1. На Linux включайте флаг --enable-features=VaapiVideoDecoder. Проверьте работу на Intel UHD-графике и ARM Mac — к 2026 году декодирование AV1 стабильно работает на Apple Silicon M2/M3/M4 и Intel 11-го поколения и новее.
Виртуальные камеры и фоновые эффекты
TensorFlow.js или MediaPipe в рендерере для размытия и замены фона. Для тяжёлых эффектов (3D-аватары, AR-наложения) запускайте отдельный воркер-процесс с WebGPU или нативным модулем. Не выполняйте инференс на главном потоке — пропуски кадров портят качество звонка.
Глубже в тему
Для video-first десктопных приложений мы начинаем с нашего playbook по разработке на LiveKit — он охватывает серверный SFU, клиентский SDK и полную интеграцию с Electron.
AI прямо на устройстве в Electron: playbook на 2026 год
AI на устройстве — главная фича десктопных приложений 2026 года: Notion, Linear, 1Password и Raycast добавили поддержку локальных моделей. В Electron есть три паттерна, которые стоит знать.
Ollama как локальный хост моделей
Поставляйте Ollama как sidecar-процесс (или просите пользователей установить отдельно). Electron-приложение общается с http://127.0.0.1:11434. Пользователи получают доступ к моделям Llama 3, Mistral, Phi, Qwen. Никакого кода под GPU, никаких сложностей с настройкой CUDA или Metal. Единственная вещь, влияющая на пользовательский опыт — это приглашение установить Ollama.
WebLLM / WebGPU в рендерере
WebGPU стал кросс-платформенным в 2024–2025 годах и готов к использованию в продакшене в Electron 32+. WebLLM запускает Llama 3 8B на GPU с 24 ГБ видеопамяти со скоростью 20–40 токенов в секунду. Никаких дополнительных процессов не требуется, но нагрузка на оперативную и видеопамять заметна.
Нативный ONNX Runtime через napi-rs
Для инференса в production (распознавание речи с помощью Whisper, генерация эмбеддингов, работа с небольшими LLM) оборачивайте ONNX Runtime через napi-rs. Такой подход обеспечивает предсказуемое использование памяти и аппаратное ускорение с помощью CoreML, DirectML и CUDA. Мы применяем его для корпоративных клиентов, которым важно, чтобы данные не покидали локальную систему.
Усиление безопасности: чек-лист, который просят корпоративные покупатели
У Electron исторически репутация фреймворка с проблемами безопасности. В 2026 году с включёнными по умолчанию мерами защиты он не уступает любой альтернативе — но только если вы выполняете чек-лист.
Десять пунктов, о которых спрашивают в корпоративных закупках
1. Изоляция контекста включена. 2. Node integration в рендерере отключена. 3. Sandbox включён для всех BrowserWindow. 4. Проверка целостности ASAR включена. 5. Заголовок Content-Security-Policy установлен в строгое значение. 6. Все внешние ссылки открываются в браузере по умолчанию, никогда внутри приложения. 7. Никаких дефолтов setPermissionRequestHandler — явный allowlist. 8. Сетевая политика только HTTPS с certificate pinning для критичных эндпоинтов. 9. Проверка подписи автообновлений. 10. Документ SECURITY.md с раскрытым контактом по безопасности и SLA на ответ по уязвимостям.
Сертификация на практике
Аудиторы SOC 2 и ISO 27001 всё чаще требуют отдельную модель угроз для десктопного клиента. Мы предоставляем одностраничную модель угроз с каждым релизом на Electron — это экономит клиентам 20–40 часов на подготовке к аудиту.
Совет по безопасности
Относитесь к каждому preload-скрипту как к публичному API. Если ваш preload предоставляет send или invoke с именем канала в виде строки, злоумышленник с XSS в рендерере сможет вызвать любой зарегистрированный вами обработчик. Используйте белый список имён каналов в preload или предоставляйте только конкретные именованные функции. Мы проверяем это в каждом релизе.
Мини-кейс: десктопный клиент видеосвязи за 14 недель
Клиенту «Фора Софт» — финтех-компании, проводящей регулируемые видеоконсультации, — нужен был десктопный клиент для Mac и Windows с возможностью демонстрации экрана, записи и аудиторским следом, одобренным регулятором. Веб-решение не подходило: требовалось размытие фона без постоянной нагрузки на CPU и надёжный пайплайн записи, который сохраняет зашифрованные файлы на диск.
Подход. Electron 36, electron- vite, React 18, клиент LiveKit, FFmpeg через napi-rs для постобработки и шифрования записи, electron-updater на приватном S3. Команда: 2 фронтенд-инженера, 1 медиав инженер, 0,5 QA, 0,5 PM на 14 недель.
Результаты. Выпустили подписанные и нотаризованные сборки под macOS (универсальный бинарник) и Windows (с EV-подписью). Время до первого кадра — 1,8 с по P50 на ноутбуке среднего класса. RAM в простое — 320 МБ с выключенным видео, 640 МБ во время звонка на 4 человека. За первые шесть месяцев в продакшене не выявлено критических уязвимостей (CVE). Бюджет уложился в 13 млн ₽ — в рамках заявленного диапазона 11–15 млн ₽, который мы озвучили на первом созвоне.
Что бы мы поменяли. Мы недооценили оформление EV-сертификата под Windows (3 недели бумажной работы с CA). В следующий раз начнём этот процесс с первой недели. И стоило с самого начала вынести пайплайн записи в отдельный воркер-процесс, а не делать это на шестой неделе.
Пять подводных камней, которые тихо съедают ваш проект на Electron
1. Слишком долго оставаться на старой мажорной версии Electron
Окно поддержки Electron — три последние мажорные версии. Отстанете на четыре — будете использовать непатченный Chromium с известными уязвимостями. Закладывайте спринт на обновление Electron каждый квартал.
2. Утечки памяти из-за незакрытых BrowserWindow
Каждый BrowserWindow, который вы открыли, нужно явно destroy() вызывать при закрытии. Полагаться на сборщик мусора — значит наблюдать рост памяти на 50 МБ в час. Перед релизом запускайте длительный тест на стейдже — минимум 24 часа подряд.
3. Несовпадение ABI нативных модулей
Каждая новая мажорная версия Electron меняет Node ABI. Все нативные модули — такие как better-sqlite3, keytar, node-pty, sharp — нужно пересобирать. Если забудете хотя бы один — установите неработающий бинарник, который упадёт при запуске. Автоматизируйте процесс с помощью хука afterPack в electron-builder или electron-rebuild в CI.
4. Чрезмерное создание дочерних процессов под видео
Одна команда, которую мы аудировали, запускала отдельный процесс FFmpeg для каждого кадра с камеры. Загрузка CPU достигала 180% на MacBook Pro. Решение: один долгоживущий FFmpeg-воркер, кадры передаются через stdin. Загрузка CPU снизилась до 18%.
5. Забыть про доступность
Скринридеры (NVDA, JAWS, VoiceOver) озвучивают ARIA-дерево рендерера. Пропустите семантический HTML — и ваше приложение не пройдёт WCAG 2.2 AA, а также провалит чек-лист корпоративных закупок. Запускайте axe-core в CI и проверяйте работу скринридера на каждом релизе.
Пять трендов 2026 года, меняющих разработку на Electron
WebGPU повсюду. Compute-шейдеры с ускорением на GPU используются в рендерерах видеоэффектов, для ML-инференса и визуализации данных. Внедрение в Electron идёт быстрее, чем в браузерах, потому что вы сами управляете версией Chromium.
electron-вите по умолчанию. electron-вите обогнал webpack в новых проектах на Electron в середине 2025 года. HMR работает так же быстро, как в веб-разработке, TypeScript — полноценный участник, скорость сборки выше в 3–5 раз.
Совместное владение с Tauri. Команды выпускают приложения на Electron сегодня и параллельно прототипируют версию на Tauri для пользователей с медленным интернетом. Один рендерер — две оболочки.
Кастомизация нативного title-бар. Electron 36+ предоставляет полноценный API для наложения оконных контролов на Windows 11 и эффекта прозрачности (Vibrancy) на macOS. Визуальный признак «это Electron-приложение» наконец исчез.
Внимание к безопасности цепочки поставок. SBOM (Software Bill of Materials) и подпись через sigstore стали обязательными для федеральных заказчиков США по EO 14028. Закладывайте воспроизводимые сборки и подписанные npm-зависимости с самого начала.
Модернизируйте десктопный стек
Всё ещё на Electron 24 или webpack? Обсудим, как обновиться.
Наша команда обновляла продакшен-приложение на Electron с версии 18 до 41, заменяла webpack на electron-vite и переписывала пайплайны автообновления — всё это без единого простоя, который мог бы заметить пользователь. Свяжитесь с нами — и мы поможем вам с апгрейдом.
KPI, которые отслеживают с первого дня в продакшене
Доля сессий без падений (цель >99,5%). Время холодного старта по P95 (цель <3 с на ноутбуке 2022 года). Использование RAM через 1 час работы по P95 (отслеживайте по вью; алертите при росте). Доля успешных автообновлений (цель >95%; всё ниже 90% — повод немедленно разобраться). Время до первого интерактива (цель <1,5 с). Доля успешных установок подписанных сборок по платформам (цель >98%). Успешность пересборки нативных модулей в CI (должна быть 100%). Скорость доступности (axe-core >95, нарушений WCAG 2.2 AA быть не должно).
Одностраничный фреймворк: стоит ли переходить на Electron
Ответьте на пять вопросов до того, как брать на себя обязательства:
1. Сколько целевых ОС? Только Windows — посмотрите на WebView2 или .NET MAUI. Только Mac — SwiftUI. Три и больше — Electron побеждает по умолчанию.
2. На каком языке команде комфортнее? TypeScript > Dart > Rust > C++ — так чаще всего в коммерческих командах. Electron оказывается в верхней части этого списка.
3. Какой бюджет по RAM? Если меньше 80 МБ — подойдут Tauri или нативные решения. Если допустимо 200–500 МБ — Electron справится.
4. Какой бюджет на размер установщика? Меньше 20 МБ — Tauri. От 80 до 200 МБ — нормально для большинства SaaS.
5. Сколько ОС-специфичной полировки UX вам нужно? Если нужна пиксельная нативность (например, Mac-стильные тулбары или Fluent Design на Windows) — выбирайте нативные решения. Если достаточно одного приложения на трёх ОС с умеренным брендированием — подойдёт Electron.
FAQ
Electron всё ещё актуален в 2026 году или пора переходить на Tauri?
Electron остаётся самым практичным выбором, когда у вас веб-команда и нужно одинаковое поведение на трёх операционных системах. Tauri 2.0 хорош для рынков с ограниченным трафиком и развёртываний, где важна безопасность, но взамен придётся тестировать три движка WebView. Для большинства SaaS-проектов на React Electron по-прежнему выигрывает по скорости вывода на рынок и согласованности.
Сколько RAM реально съест моё Electron-приложение?
Закладывайтесь на 150–250 МБ в простое и 300–600 МБ с типичным React-UI. Клиенты видеосвязи могут потреблять до 700–1000 МБ во время звонка на 4–6 человек. VS Code на большом воркспейсе — 1–2 ГБ. Ленивая загрузка маршрутов и демонтаж неиспользуемых окон сдерживают самых прожорливых потребителей.
Нужны ли мне сразу Mac и Windows для сборки и подписи?
Для подписи — да: подпись и нотаризация macOS требуют Mac в CI (подойдут раннеры macOS на GitHub Actions или Mac mini под Tart VM). Подпись Windows EV требует аппаратный токен на Windows-раннере или облачный HSM, например DigiCert KeyLocker. Linux-сборки можно делать с любой ОС.
Сколько занимает нотаризация macOS?
Обычно 2–15 минут. Иногда у нотариального сервиса Apple бывает очередь на 1–2 часа — закладывайте это в график релизов. Прикрепление тикета (stapling) после нотаризации обязательно, чтобы Gatekeeper работал без подключения к интернету.
Можно ли делать на Electron приложение для видеосвязи или нативка лучше?
На Electron уже сегодня выпускают продакшен-клиенты для видеосвязи: Slack, Webex, голос Discord, Around. WebRTC в Chromium — зрелый. Разница с нативными приложениями по нагрузке на CPU меньше 10% на типичных звонках с 4–8 участниками на оборудовании 2022 года и новее. Для профессионального вещания в 4K при 60 кадрах в секунду нативные пайплайны пока остаются впереди.
Какой минимальный MVP на Electron мы можем выпустить?
С senior-инженером и шаблонами electron-вайт за 6 недель и примерно 1,8–3 млн ₽ вы получите подписанное автообновляемое приложение из 5 экранов под Mac и Windows. Это без EV-сертификата и аккаунта Apple Developer. Для релизной версии с полноценным тестированием и поэтапным запуском закладывайте 4,5–6 млн ₽.
Пройдут ли Electron-приложения аудиты SOC 2 и ISO 27001?
Да, многие проходят — Slack, 1Password, Linear. Аудиторы проверяют практики подписи кода, проверку подписи автообновлений, защиту IPC, опцию согласия на отправку отчётов о сбоях и SBOM зависимостей. Заранее подготовьте документ с моделью угроз и SECURITY.md — десктоп-специфичный чек-лист закроется уже в первом цикле аудита.
Как обрабатывать апгрейды Electron между мажорами?
Планируйте спринт на обновление каждый квартал — один мажорный релиз за спринт помогает держать объём изменений под контролем. Типичные проблемы: несоответствие ABI нативных модулей (решается пересборкой через electron-rebuild), устаревшие API (обращайте внимание на release notes) и регрессии в CSS, связанные с Chromium. На мажорный апгрейд в приложении среднего размера с нашей архитектурой уходит обычно 2–3 дня. Напишите нам, если хотите получить наш чек-лист для обновлений.
Что почитать дальше
Гид по реализации
Как реализовать видеостриминг в вашем приложении
Серверная часть, SDK и клиентская интеграция — это playbook, который мы применяем в каждом десктопном проекте с фокусом на видео.
Технический стек
Лучшие технологии для приложений видеостриминга
WebRTC, LL- HLS, DASH — и какая комбинация подходит десктопному клиенту.
Планирование бюджета
Из чего складывается стоимость приложения для видеоконференций
Постатейная стоимость веб- и десктопных видеоклиентов на основе нашего портфеля проектов.
Экспертиза по LiveKit
Эксперты по разработке на LiveKit
Как мы интегрируем LiveKit в Electron-клиенты для видеосвязи через WebRTC.
QA-playbook
Тестирование на каждом этапе разработки продукта
Наши процессы тестирования для десктопа, мобильных устройств и веба, включая smoke-тесты, специфичные для Electron.
Готовы выпустить десктопное приложение на Electron?
Фора Софт выпускает десктопные клиенты на Electron с 2017 года — для видеоконференций, прямых трансляций, e-learning и финтеха. Мы покрываем весь стек: архитектуру, Electron + React + нативные модули, подпись кода, автообновление и усиление безопасности под корпоративные аудиты. Если ваша команда рассматривает разработку десктопного приложения на Electron для нового продукта или планирует переход с устаревшего стека, мы поможем объективно оценить объём работ.
Запустите проект
Свяжитесь с нашим CTO для обсуждения деталей.
Мы разберём ваши цели, подберём стек и сроки, а также назовём прозрачный диапазон бюджета — без навязчивых продаж, только инженерия.

