From 990bca71b74722aeb25361879b1b6a11acb23b16 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Thu, 28 May 2026 14:06:54 +0700 Subject: [PATCH] Polish blog post metadata --- .../posts/i-was-wrong-about-electron.md | 30 +++++++------- packages/website/public/9viSwGkz_400x400.jpg | Bin 0 -> 45537 bytes packages/website/src/routes/blog/$.tsx | 39 +++++++++++++++--- 3 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 packages/website/public/9viSwGkz_400x400.jpg diff --git a/packages/website/posts/i-was-wrong-about-electron.md b/packages/website/posts/i-was-wrong-about-electron.md index bbc137ce0..3b80f3e4c 100644 --- a/packages/website/posts/i-was-wrong-about-electron.md +++ b/packages/website/posts/i-was-wrong-about-electron.md @@ -2,49 +2,47 @@ title: "I was wrong about Electron" description: "Why I migrated Paseo from Tauri to Electron after the small-binary story stopped mattering more than rendering, notifications, and bundling a Node daemon." date: "2026-05-28" -draft: "false" +draft: "true" --- When I started building Paseo, I picked Tauri. The reasoning felt obvious at the time. I was building a desktop app with a web UI, and I cared about shipping something that did not feel bloated. Like a lot of developers, I had also internalized the idea that Electron was the bad option. -Tauri had all the right stuff: Rust, tiny binaries, native webviews, lower memory usage. It felt like the tasteful choice. I thought I knew better than all those other Electron apps. +Tauri had all the right stuff: Rust, small binaries, native webviews, lower memory usage. It felt like the better choice. -You see this attitude everywhere. Products put "Built with Tauri" on their landing pages as if the framework itself is a selling point. I bought into that more than I realized. +I also kept seeing "Built with Tauri" on product landing pages, and I think that influenced me more than I realized. It made Tauri feel like what the cool kids were using. -At first, it felt like I was right. On macOS, the app was small, the UI worked well, and the bundle size made the decision feel obviously correct. +I thought I knew better than all those other Electron apps. At first, it felt like I was right. On macOS, the app was small, the UI worked well, and the bundle size made me feel good about myself. -Windows did not really challenge that either. Tauri uses WebView2 there, which is Chromium-based, so the app behaved close enough to what I expected. There were platform details to deal with, but nothing that changed my mind. +Getting the app working on Windows was not a problem. Tauri uses WebView2 there, which is Chromium-based, so the app behaved close enough to what I expected. There were platform quirks to deal with, but nothing specific to Tauri. Linux is where things started getting complicated. Tauri does not bundle one browser engine across platforms. That is the point. On Linux, it relies on WebKitGTK, which sounds elegant until you are debugging rendering behavior across distros, GPU setups, and Wayland/X11 differences. -For Paseo, this turned into a lot of product work I did not want to be doing. The WebKitGTK bindings Tauri was using were too old. Wayland had problems. And once I got the app running, it just looked different. Not slightly different in the way you expect across platforms, and not only small things like font weights. Some screens had real layout differences. +For Paseo, this turned into a lot of product work I did not want to be doing. The WebKitGTK bindings Tauri was using were too old. Wayland had problems. And once I got the app running, it just looked different. It was not just small stuff like font weights or aliasing, some screens had real layout differences. I could maybe have lived with all of this, but then I started implementing notifications. For Paseo, notifications are not a nice to have. If an agent finishes, fails, or needs attention, I want the user to click the notification and land in the right place. -Tauri's notification plugin can show notifications, but desktop click handling was not there in the way I needed. The Actions API exists, but the docs mark it as mobile-only, which was strange. +Tauri's notification plugin can show notifications, but [desktop click handling](https://github.com/tauri-apps/plugins-workspace/issues/2150) was not there in the way I needed. There's something called the Actions API that allows you to attach callbacks to notifications, but the docs mark it as mobile-only, which was strange. -I noticed Tauri was expanding into mobile apps too. I get why that is exciting for the project, and I am not saying they should not do it. But from where I was sitting, it was hard not to feel some doubt. I was still fighting basic desktop product issues while the framework was moving into a much larger surface area. +This made me notice that Tauri was expanding into mobile apps, it was hard not to feel some doubt. I was still fighting basic desktop product issues while the framework was moving into something else entirely. -I got notification clicks working by writing platform-specific code, but it was not straightforward, and now I had to maintain it. By then the pattern was familiar: the app needed a normal desktop behavior, and I was writing the missing glue myself. +I tried a bunch of Rust crates, but none of them worked the way I wanted, so I ended up having to write the notification handling per platform. It was not straightforward, and now I had to maintain it. There was also the daemon. This part is not really Tauri's fault, but it pushed me further toward Electron. -Paseo has a Node.js daemon, and I wanted a one-click experience. Download the app, open it, and go. No separate Node install. No manual daemon setup. No "run this command first." +Paseo has a Node.js daemon, and I wanted a one-click experience. Download the app, open it, and go. I did not want to tell users "go run this command first" or teach them what a "daemon" was. -Tauri supports sidecars, so I got the daemon bundled and it worked. But it became its own project: different binaries for different platforms and target triples, packaging details, permissions, process spawning, paths, upgrades. None of it was impossible. That was almost the problem. I kept making it work while slowly building around the framework instead of with it. +Tauri supports sidecars, so I got the daemon bundled and it worked. But it became its own project: different binaries for different platforms and target triples, packaging details, permissions, process spawning, paths, upgrades. At some point I had the realization that I was building Electron with extra steps. -I decided to try Electron. The migration was a bit of a pain, but I got things working surprisingly fast, and after a week of solid work Paseo actually felt lighter and simpler. The UI looked the same across platforms. Notifications behaved the way I needed. The daemon fit naturally because Node was already there. +So I decided to try Electron. The migration was a bit of a pain, but I got things working surprisingly fast, and after a week of solid work Paseo actually felt lighter and simpler. The UI looked the same across platforms. Notifications behaved the way I needed. The daemon was simpler since it had Node pre-bundled. -The app got bigger, obviously. Electron ships Chromium and Node. That is the tradeoff everyone knows about. +Overall, I have been really happy with Electron since. It mostly gets out of my way. And when there are performance problems, they tend to come from my application code rather than Electron itself. I guess that is also why Electron gets a bad reputation, it is really easy to make a bloated Electron app. -What I had missed was that app size was not the tradeoff that mattered most for Paseo. This is a development environment with a web UI, a local daemon, terminals, agents, process management, notifications, permissions, and long-running state. I need it to behave predictably on macOS, Windows, and Linux more than I need a small bundle. - -I still think Tauri is appealing. If your app is mostly a Rust app with a web UI, or if you are staying on one platform and really care about bundle size, it can be a good choice. But at that point, I do wonder if you should just bite the bullet and write a native app. +My conclusion here is not that Tauri is bad. It was just the wrong choice for Paseo, and I made that choice more by vibes than by looking at the tradeoffs objectively. diff --git a/packages/website/public/9viSwGkz_400x400.jpg b/packages/website/public/9viSwGkz_400x400.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59fa93d89b1831cabcd1fed02812e2d97680d671 GIT binary patch literal 45537 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%0D(F0s?HW(on* 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 literal 0 HcmV?d00001 diff --git a/packages/website/src/routes/blog/$.tsx b/packages/website/src/routes/blog/$.tsx index 814586b4c..fdb820d71 100644 --- a/packages/website/src/routes/blog/$.tsx +++ b/packages/website/src/routes/blog/$.tsx @@ -14,6 +14,23 @@ export const Route = createFileRoute("/blog/$")({ component: BlogPost, }); +const markdownComponents = { + a: ({ href, children, ...props }: React.ComponentPropsWithoutRef<"a">) => { + const isExternal = typeof href === "string" && /^https?:\/\//i.test(href); + + return ( + + {children} + + ); + }, +}; + function BlogPost() { const { _splat } = Route.useParams(); const slug = _splat ?? ""; @@ -24,15 +41,25 @@ function BlogPost() { } return ( -
+
-

{post.frontmatter.title}

- - {formatDate(new Date(post.frontmatter.date))} - +

{post.frontmatter.title}

+
+ + Mo Boudra + Mo Boudra + + ยท + {formatDate(new Date(post.frontmatter.date))} +
- {post.content} + {post.content}
);