The author has obviously never tried Tauri on Linux. I've never seen one of their AppImages work correctly. Every project uses the upstream GitHub action to build binaries and it compiles dynamically linked binaries limited to the glibc from the Ubuntu 22 or 24 VM used. Xdg-open is often broken too from broken environment variables in the AppImages, so you can open a link in the default web browser. The entire build process needs reworked.
It's like they always say: Win32 is the only stable ABI on Linux.
Which is wild when you consider the efforts the kernel goes to to avoid breaking userspace. Sometimes stifling innovation in UX.
GNU libc has a lot to answer for here honestly.
It is not surprising that a libc headed by the chief gnuissance would produce sn ecosystem where everything works better when apps are compiled from source for each distro.
> Sometimes stifling innovation in UX.
How does the Linux kernel maintaining backward compatibility stiffle UX innovation?
You’re probably thinking of UX as being user interfaces and desktop environments.
But sometimes a user is an api consumer.
There’s plenty of horrible kernel functions with footguns in Linux, but they won’t be improved due to “never break userspace”
theres lots if examples if you need specifics. readdir, epoll, futumesat (and ufutumesat), etc.
Well, it certainly isn't a stable ABI on Windows.
The idea of AppImages is neat, but the implementation is awful and rarely works (except perhaps on Ubuntu and Fedora and extremely similar scenarios).
The main issue being that they're dynamically linked binaries, which is exactly what you want to avoid for their use case.
Using packages from your favourite distribution is usually your best bet.
AppImages are supposed to be able to handle all of that and I have used a number of them that do. In the case of Tauri though it seems nobody on the framework team knows Linux well enough to fix the build process to not constantly break as libraries update on the GitHub Ubuntu VMs or to make all the required dynamically linked libraries get included in the AppImage. And finally most of the downstream app developers have never written an app for Linux and chose the framework expecting it to solve the problems it clearly isn't.
The idea is awful as well if you spend one second thinking about dependency sharing.
Yeah, I switched to Linux and my single Tauri app was not cooperating.
They do have an effort to use Chromium Embedded Framework for rendering the webview, it's potentially much more stable in Linux. [1] It is nowhere near finished but you can run the cefsimple example, and it rendered me a window in Wayland.
CEF is also bundled in many distros, like Fedora 43, so if it can be linked with Linux distros version of CEF, then the binary stays smaller.
I've been a lifelong Linux user, and this makes me sad.
I don't know enough to comment about whether or not it's necessary, but any time I've tried to get anything working that wasn't updated recently, it was impossible.
Well impossible is a bit strong, the process ranges from:
- Find a forum post that links to some old .deb files and install them manually
- Install a newer version of a dependency and then recompile from source code, after spending an hour or two updating the program so it works with the new version of the dependency because the dependency changed its API for no reason (that one's not a Linux problem per se, but it wouldn't be necessary if the old one still worked!)
Better to download the Windows version and run it in WINE...
Sadly, every time that one guy posts his personal finance app on HN I try it and every time tauri gives me trouble to build, and when I fix whatever build errors it gives me it basically opens up a blank window and the app doesn't work (He now offers a Docker image which I can't help but feel is related to these difficulties).
I think the blank window bug was caused by a change in the libraries used by the webview on Ubuntu 22.04 used by suggested build action. Details and fixes were spread across bug reports in multiple downstream projects but afaik it was fixed in an Ubuntu update.
I really wanted to use tauri instead of electron, but the libwebkit it uses on linux is just too slow for modern CSS/html, from memory I managed to get single digit fps just scrolling the components page of daisy-ui. I am holding on for when they get a servo integration.
In my experience building Kanmail neither Tauri or Wails have this figured out. I had to combine elements of both projects custom linuxdeploy GTK plugin and I’m still not 100% sure it works everywhere. https://github.com/Oxygem/Kanmail/blob/19c5bfe78fe1b22147c01...
Yeah.. It's pretty damn hard to get working at all, and the systems it does seem to work on is quite limited as well. And also the developers of Tauri largely have seemed to have given up on Linux (which to some degree I understand, it represents a tiny amount of users for 99% of the problems due to the massive diversity in the ecosystem of Linux DE)
I fight with GitHub Actions on this all the time, and damn near think about running dedicated instances just to build from.
Recently I tried Electron app, it didn't work out of the box in Ubuntu 24.04 (AppImage). Turned out some issue with apparmor. It worked if extracted manually, though, but that's a bit of friction for ordinary users, also probably wouldn't work with updater.
I think that's the issue: https://github.com/electron/electron/issues/41066
Not even sure who to blame in this situation.
En Croissant and Pawn Appetite use Tauri (chess interfaces), neither ever works, got so annoying I just setup docker to build them on fedora and copy the binary out via scratch stage, needed to install one library and now both work.
Tauri itself seems fine but the packaging in AppImage is exactly as you describe, or EFL just breaks.
Tauri finding and loading WebView is not the only game in town. There's wails too for golang.
I don't understand the obsession with trimming the disk size at the expense of stability.
The WebView these libraries find isn't the one your JS bundle is hoping for and an upgrade of the WebView isn't an option then what?
It's not only the disk size, it's also RAM.
Yup, came here to say this. After reading the article, it became abundantly clear that the author doesn’t support Linux and most of the article is just a summary of the common Tauri talking points that are out of date. To add data to this - Tauri is looking to allow embedding chromium as an option because the creator of Tauri acknowledged that it doesn’t work well on Linux. To the point where if Linux is a serious target, they don’t recommend Tauri: https://github.com/tauri-apps/wry/issues/1064#issuecomment-2...
The upstream projects aren’t in a place to support this yet so this feature didn’t make it into Tauri v2. I’ve been tracking this for a long time and hope that they will make it possible in v3.
Thanks for the link. That's great info to know but it's only part of the problem. If they think changing out the renderer will fix everything then they haven't learned anything.
Their build action creates seriously flawed AppImages for Linux for multiple reasons that have nothing to do with the renderer but with the AppImage creation process.
Good to know. Every time I gave Tauri a shot, issues with the state of WebKit on Linux was always my first hard wall. I never got to even trying to make a production executable. Sounds like it’ll be a long time before this ever becomes viable for fully cross platform use cases.
Using `zig-cc (clang)` to set a particular `LibC` version is one of the best decisions i have made, and saved me from those meaningless libC mismatch errors!
It's insane that Zig was needed to achieve this, instead of a preprocessor definition like "#define GLIBC_MIN_COMPATIBLE_VERSION GLIBC_2_40".
I've ditched the AppImage build in my tauri apps for .deb. They work fine on other distros as long as you install libwebkitgtk
[flagged]