Skip to main content
Seán Braeken-Gray
3 min read

It was not the browsers fault

It was not the browsers fault. It was universal packages.

In my previous post about browsers on Linux, I complained my way through Edge, Chrome, Firefox, Ungoogled Chromium, and eventually Brave. The short version was that Chrome felt unusably slow, Edge had rendering problems, Firefox lacked the developer tooling I wanted, and Brave won almost by default because it was the Chromium browser that actually worked.

It turns out that was not quite the full story.

The Missing Detail

After that post I ended up moving to Fedora. I had started seeing problems even with Brave, and at that point the browser situation felt less like a collection of individual browser quirks and more like something was wrong with the environment around them. Then, on Fedora, Chrome started misbehaving as well.

That was the moment I finally looked more closely at how it was installed.

It was the Flatpak.

On my previous setup, I am fairly sure I had been using the Snap package. On Fedora, I had installed Chrome as a Flatpak. Different distribution, different package format, same broad class of problem. I removed the Flatpak, installed Chrome through dnf, and the issues disappeared.

Not improved. Not slightly better. Gone.

Snaps, Flatpaks, and Native Packages

Snaps and Flatpaks exist for good reasons. Linux packaging is fragmented, and distributing one application cleanly across multiple distributions is harder than it should be. Universal package formats try to solve that by bundling applications with more of what they need, isolating them from the host system, and giving developers a more predictable target.

There are real strengths there. Flatpak in particular is excellent for desktop applications that do not need deep integration with the host. It gives you sandboxing, consistent runtimes, easy updates, and a way to install software that your distribution may not package well or quickly. Snaps aim at a similar problem and have found a home in some areas, especially where Canonical controls the stack.

The downside is that browsers are not normal desktop applications. They sit at the intersection of GPU acceleration, sandboxing, video codecs, password stores, portals, file access, display servers, and system integration. Add another sandboxing layer or packaging abstraction on top, and the chance of something subtle going wrong increases.

That does not make Flatpak bad. It does not mean Snaps are useless. It means browsers are a particularly awkward place to discover the edge cases.

Chrome Was Fine

The frustrating part is that Chrome itself was probably not the problem. Or at least, not in the way I thought it was.

Once I installed Chrome through Fedora's normal package path with dnf, the performance issues disappeared. Pages loaded as expected. The odd behaviour stopped. The general feeling of the browser fighting the operating system went away.

That also reframes the original post a bit. Brave did not necessarily fix Chrome's underlying issues because Brave was inherently better on Linux. It may simply have been installed in a way that avoided the packaging problem I had created for myself.

Annoying? Yes. Useful to know? Also yes.

Not a Flatpak Hit Piece

I want to be clear about this because it would be easy to overcorrect: I still use Flatpaks, and plenty of them are completely fine. For a lot of desktop software, Flatpak is a great answer. It makes installing applications easy, it keeps them reasonably contained, and it avoids the mess of waiting for every distribution to package every app perfectly.

But for my browser, I am done with it.

Chrome installed through dnf behaves exactly how I wanted it to behave in the first place. No weird rendering issues, no sluggishness, no Teams crashes, no sense that the browser is running at arm's length from the rest of the system.

So the conclusion is simpler than the original post made it sound. It was not really Edge versus Chrome versus Brave. It was not even Fedora versus whatever I was running before.

It was the package format.