<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guillaume Lessard</title>
    <description>The latest articles on DEV Community by Guillaume Lessard (@guillaumelessard).</description>
    <link>https://dev.to/guillaumelessard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4240059%2F545f5411-1bcf-4776-b462-a6c6d4e52478.jpg</url>
      <title>DEV Community: Guillaume Lessard</title>
      <link>https://dev.to/guillaumelessard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guillaumelessard"/>
    <language>en</language>
    <item>
      <title>You probably do not need Electron to ship your HTML app as a desktop program</title>
      <dc:creator>Guillaume Lessard</dc:creator>
      <pubDate>Thu, 12 Nov 2026 01:25:43 +0000</pubDate>
      <link>https://dev.to/guillaumelessard/you-probably-do-not-need-electron-to-ship-your-html-app-as-a-desktop-program-2511</link>
      <guid>https://dev.to/guillaumelessard/you-probably-do-not-need-electron-to-ship-your-html-app-as-a-desktop-program-2511</guid>
      <description>&lt;p&gt;I build small desktop tools, and most of them start life as an HTML page. For years the default answer to "how do I turn this into a real app?" has been Electron. It works. It also ships a full copy of Chromium and Node.js with every app, which is why a to-do list can weigh more than 100 MB.&lt;/p&gt;

&lt;p&gt;For a lot of tools you do not need that. Here is the approach I use instead, what it costs you, and the two tools I built around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea: use the browser engine the OS already has
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;On Windows 10 and 11 that engine is &lt;strong&gt;WebView2&lt;/strong&gt;, the same engine as Edge.&lt;/li&gt;
&lt;li&gt;On Linux it is &lt;strong&gt;WebKitGTK&lt;/strong&gt;, running inside a GTK3 window.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your app becomes a small native window that loads your HTML, CSS and JavaScript. No bundled browser, no Node runtime. Tauri and Neutralino are built on the same idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you gain
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Size.&lt;/strong&gt; My builds come out at 8 to 15 MB on Windows and around 10 MB on Linux. A typical Electron app is 100 MB or more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startup.&lt;/strong&gt; There is no bundled browser to load, so the window opens quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Less to maintain.&lt;/strong&gt; You are not shipping your own copy of Chromium, so you are not the one who has to keep it patched.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What you give up
&lt;/h2&gt;

&lt;p&gt;Be honest with yourself about these before you switch.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Node.js APIs.&lt;/strong&gt; If your app needs the file system through Node, child processes or native modules, stay with Electron or look at Tauri.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two engines.&lt;/strong&gt; WebView2 is Chromium, WebKitGTK is WebKit. Test on both, the same way you would test Chrome and Safari.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A runtime dependency.&lt;/strong&gt; WebView2 has to be present on Windows, and GTK3 with WebKit2GTK on Linux.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When this fits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Internal dashboards that should run without a server&lt;/li&gt;
&lt;li&gt;Offline calculators, trackers and small productivity apps&lt;/li&gt;
&lt;li&gt;Game jam utilities and level editors&lt;/li&gt;
&lt;li&gt;HTML5 games you want to hand to players as a download&lt;/li&gt;
&lt;li&gt;Client deliverables that should feel like software, not "just open this link"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your project is plain HTML, CSS and JS that already works offline in a browser tab, it is a good candidate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tools I built for this
&lt;/h2&gt;

&lt;p&gt;I got tired of wiring this up by hand for every project, so I turned it into two tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML2Win Pro&lt;/strong&gt; (Windows 10 and 11). Point it at a local folder or a live URL, set the window size and the icon, and build. You get a single .exe.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step by step wizard with a live preview&lt;/li&gt;
&lt;li&gt;Custom icon, or drop in your own .ico&lt;/li&gt;
&lt;li&gt;A config file next to the exe for title, size, resizable and fullscreen&lt;/li&gt;
&lt;li&gt;CLI mode for batch or automated builds&lt;/li&gt;
&lt;li&gt;Security controls: CSP, sandboxing, external link handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://id01t.itch.io/html2win" rel="noopener noreferrer"&gt;https://id01t.itch.io/html2win&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML2Linux Pro&lt;/strong&gt;. Same idea on native GTK3 and WebKit2GTK.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generates the .desktop file and installs icons, following XDG conventions&lt;/li&gt;
&lt;li&gt;Output as a standalone binary, AppImage, ZIP or TAR.GZ&lt;/li&gt;
&lt;li&gt;Detects the distro and its package manager (Ubuntu, Debian, Fedora, Arch, openSUSE and others)&lt;/li&gt;
&lt;li&gt;GUI and CLI, so it can run in CI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://id01t.itch.io/html2linux-pro" rel="noopener noreferrer"&gt;https://id01t.itch.io/html2linux-pro&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both are paid tools: one purchase, no subscription. If all you need is to turn a Python script into a Windows .exe, Py2Win is free: &lt;a href="https://id01t.itch.io/py2win" rel="noopener noreferrer"&gt;https://id01t.itch.io/py2win&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  One practical tip
&lt;/h2&gt;

&lt;p&gt;Whatever tool you use on Windows, give it an .ico file that contains 16, 32, 48 and 256 pixel sizes. A single size is the usual reason a taskbar icon looks blurry.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick way to decide
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Do you need Node APIs or native modules? Use Electron or Tauri.&lt;/li&gt;
&lt;li&gt;Is it HTML, CSS and JS that already runs offline in a tab? A system webview wrapper is enough.&lt;/li&gt;
&lt;li&gt;Do you ship to Linux? Test in WebKit before you promise anything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What are you shipping desktop apps with right now? If you have moved from Electron to Tauri or Neutralino, I would like to hear how it went.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I make and sell HTML2Win Pro and HTML2Linux Pro. This post was written by an AI assistant working on my behalf.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>electron</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
