Firefox for Android is a mess, and something needs to change.

Let me preface this by saying that the following post is going to be one huge rant. I am probably going to come off as uncompromisingly negative in the following paragraphs. Also, many of the issues I will bring up were born solely out of my own personal frustration, and that frustration does indeed color the tone of what I will say. But I feel that if I don't get this off of my chest right now, it will only further endanger the future of Firefox on Android, and potentially the future of the mobile web along with it.

When people say that Mozilla is the last company standing that can save the web from a browser monoculture, I look at the state of Firefox on Android and cannot possibly see how that's going to happen within the scope of the mobile web. And up until now, it seems that the dissatisfaction with Firefox for Android has been confined to the occasional disgruntled comment on Hacker News or a significantly larger number of frustrated users on its issue tracker. From the perspective of someone who has suffered through desperately and earnestly attempting to use the new version of Firefox for Android as a daily driver for over a year before finally giving up and switching to a Chrome-based browser, I wanted to try and capture my frustrations—as well as the frustrations of many others—in one openly visible place, in the hopes that something will change.

The latest iteration of Firefox for Android, codenamed "Fenix", was initially released in 2019 as a complete rewrite of the older version of Firefox for Android in circulation at the time ("Fennec"). Having used Firefox on my desktop machine since the days of XUL-based add-ons, it at first seemed like a good proposition to adopt a brand-new version of Firefox on my smartphone as well. However, after a year of disappointment stemming from the bugs, instability and missing features in what has become the most important mobile app I use, and one which I've had to rely on nearly every day, I switched from Fenix to Brave for Android and cannot see myself returning anytime soon.

I have always rooted for Mozilla in preventing Google from obtaining unequivocal control of what has become the most critical software platform in the modern era, one that holds relevance in nearly everyone's life: the web. In case the following post comes off as overly harsh, let me be clear—I want to root for Mozilla, with all of my heart. Their message of valuing privacy is agreeable to me, and in practical terms Firefox is about to become only remaining web browser for desktop and mobile that will be fully compatible with uBlock Origin once Google rolls out Manifest v3. I have no issues at all with Mozilla's intention to support a new version of Firefox on Android devices. However, my enthusiasm has faded after suffering through their botched execution of that plan.

Before proceeding, I want to make it clear that I'm not trying to criticize Mozilla or anyone who is or has been involved with Mozilla out of spite. I honestly believe that if more people aren't aware of these issues, Firefox for Android might soon end up dying a slow, painful death as its users give up in frustration and leave for better web browsers. I don't want this to happen. I want Firefox for Android to become a browser that I enjoy using, and one that I'm proud to use on a daily basis. If Firefox on desktop has already lost a significant share of its userbase despite being a perfectly capable web browser that I can use without issue on a daily basis, then after witnessing the current state of Firefox for Android's development, I can't possibly imagine how Mozilla has much hope of taking back market share from Chrome-based Android web browsers the way things are being managed right now. Firefox for Android constantly alienates even the people who stand by it to report all of its issues or use it out of principle—people like yours truly. In the following post, I will attempt to lay out the reasons why this is so, to the best of my ability.

Note: In order to avoid confusion, I will use the name "Fenix" in this post to refer to the current iteration of Firefox for Android, and not its previous version (codenamed Fennec) or any other version of Firefox.

And finally, I do not intend to personally attack any of the individual humans who are working on Fenix, or anyone who is a part of Mozilla in any way whatsoever. If that is how this post will end up being interpreted, then I sincerely apologize in advance. My intention is only to describe my personal experience of using Fenix, and the reasons why I couldn't bring myself to keep using it any longer.

The UX

To begin with, the act of using Fenix in its current state can at times feel like a chore.

For example, consider the fact that over two years since its original release, you still can't search through your browsing history. This is a completely bewildering omission for a modern web browser in 2021. Over the course of a whole year, my experience with needing to go to a page in my search history in Fenix was to open the omnibar, type a few parts of the URL, wait ten seconds for the agonizingly slow suggestions engine to search through everything, and then hope that the page that I wanted to find showed up as part of the suggestions.

And after attempting to use the aforementioned workaround with the most recent version of Fenix Nightly, I have found that it doesn't seem to work anymore. So, at present writing, I suppose there is no longer any method of searching through your browsing history in Fenix.

The issue for this arguably basic feature has been open since April of 2020—nearly a year and a half ago. This is a recurring theme with many bug reports and feature requests in Fenix's issue tracker.

Also, even if you know the full URL of a page in your history, the omnibar will only suggest a single URL segment at a time, forcing you to type a few letters of each segment and then tap to move the cursor to the end after the correct suggestion appears. As the following video shows, another unhelpful behavior is that the omnibar suggests over, despite the fact that I only visited the former site only twice, and the latter many dozens of times. And as if to add insult to injury, the final URL never shows up in the autosuggestions list, even though the omnibar is capable of suggesting each individual segment.

Contrast this with Brave, which brings up a few suggestions after typing any part of a URL within milliseconds.

This is only one of many UX issues I hoped to see resolved for months on end, especially since I often ran into it multiple times per day back when I still used Fenix.

There's also no simple way to access bookmarks, even though you were able to access them from the new tab page with the old version of Firefox for Android (Fennec). With Fenix, you have to open the bookmarks view from the main menu, which already requires two taps, before needing to scroll down to find the bookmark you want—because, just like with search history, there also isn't a way to search though bookmarks. On top of that, you can't reorder the list of bookmarks, either. The corresponding issues for frequent bookmark access, bookmark searching and bookmark reordering have all remained open for over a year—two years, in the case of bookmark reordering. There was even a full set of feature mockups posted in the issue thread for frequent bookmark access, after which... nothing much happened.

There are other features missing from Fenix that many have come to expect from modern web browsers, such as the ability to reorder tabs and the ability to open about:config. About the only significant feature in my mind that Fenix has which Chrome for Android does not is WebExtension support, and even though this is indeed a very significant feature, for a user who doesn't particularly care about privacy it is practically the only feature that makes Fenix worthy of consideration over Chrome. Not to mention that there is still no official way to install arbitrary WebExtensions—leaving only a handful available to install from a "recommended" list—which significantly hampers the usefulness of that single differentiating feature. And if, like me, you need to use the unofficial method of installing extensions to sideload one that isn't officially sanctioned, you have no choice but to use Nightly, with its instability and its numerous bugs.

The Bugs

There are too many to count, they are a constant hinderance every time you use Fenix (depending on which features you rely on), and the rate at which they get fixed is at times frustratingly slow. That is, if they're even considered valid issues at all.

One example is the pull-to-refresh feature, which was initially pushed out only to be disabled immediately afterward because of the number of bug reports that came in. Even after it was re-enabled, the issues persisted for months afterwards, including being unable to scroll up on Google's search results page. And the ability to disable pull-to-refresh as a workaround was only implemented five months later. To this day, there are still numerous unresolved issues with pull-to-refresh in both stable and Nightly, even though it's enabled by default.

Another pervasive issue—which has no workaround—is the inability to download images from sites that require cookies, like those behind CloudFlare's DDoS protection, or ones that require a user login. This personally affected me the entire time I used Fenix over the course of a year, and I had no choice but to use Brave as a fallback every time I wanted to download an image from those sites. (The fact that I even needed to have two web browsers installed to perform basic operations on the Internet is a negative in itself.) Also, it's still an issue in both stable and Nightly at present writing, having remained so for eight months by now. The issue is blocked because of a missing feature in GeckoView, and the corresponding issue on Bugzilla was pushed back at least five version milestones over the past eight months with hardly any acknowledgement from either side. Personally, I consider being able to download an image that is visible on a webpage to be basic functionality in a modern web browser in 2021, but it's hard to believe that Mozilla's development teams feel the same way with how little attention has been paid to this issue.

I should also mention that Chrome-based browsers have no such issue, and I am happily downloading all the images I want using Brave. I shouldn't have to worry about whether or not the image I'm seeing on a webpage is protected by a login cookie every single time I want to download one. That was my day-to-day experience using Fenix, and if I were to switch back to Fenix today, that would once again become my day-to-day experience.

And this omits many other issues that I and others have suffered through over the course of the last two years, including—but not limited to—closed then restored tabs being moved all the way to the top of the tabs list instead of their original position, backgrounded tabs being cleared from memory less than a minute after switching away from them, the last visited page not being restored when restarting the app (which was closed as "won't fix" despite still being an issue nearly every time I started the app again), video embeds being cut off in fullscreen mode, search engine queries ignoring text that looks like a URL, Bitwarden, Keepass and other autofill providers not triggering on form inputs...

Once again, Chrome for Android has none of these issues.

By the way, if all of these issues ultimately cause you to become fed up with Fenix and you want to switch to another browser, but still want to save your list of tabs, you might be able to use the "share all tabs" feature—unless you're like me and have a large number of tabs open, because of course there's another bug that prevents you from exporting a large number of tabs, and that bug has been left unresolved for almost two months.

Even with some of these bugs having been fixed, it seems that more of them keep coming up in their place, and others are left unfixed for months at a time. Added to the terrible yet intentional UI redesigns that will be discussed shortly, I eventually found that the only two reasons I continued to use Fenix as a daily driver were the WebExtension support and the principle of standing with Mozilla, and those positives were by then far outweighed by the lost value of having a stable and reliable web browser. At the point I had decided to give up on Fenix, I couldn't see the cycle ending anytime soon.

The Redesigns

And the reason that I have lost hope in seeing those issues being resolved in a timely manner is the significant amount of churn and effort spent on less important things like the constant, unnecessary redesigns of the user interface.

When talking about the Nightly version of Fenix, the one thing that cannot escape mention is just how unstable the user interface is. It feels like the development team spends a lot of time heading in the wrong direction by constantly pushing out poorly thought-out redesigns of crucial UI workflows. Given that Fenix Nightly is explicitly labeled as an unstable release for developers and testers, the numerous UI changes might be tolerable—if those changes at least resulted in a better user experience, which has not been the case in recent months.

Since its release in 2019, Fenix has undergone no less than four redesigns of its tab switcher. Initially, the tab list was integrated into the new tab page in a fullscreen view. Then it was redesigned into a drawer which only partially covered the screen, which received a large amount of negative criticism for being unintutive—a sentiment that I agreed with, having experienced it myself. Then the tab list inside the drawer was replaced with a grid view similar to Chrome's, without doing away with the drawer itself. And then, the grid was changed to automatically move "inactive tabs" into a drop-down menu at the top of the tabs list.

The inactive tabs feature was met with significant criticism, because it turned out that if you had a large number of open tabs, it was now impossible to reach the list of "active" tabs without spending several seconds or minutes scrolling past the list of inactive tabs, every single time you opened the tab list. This was because of the inexplicable design decision of putting the inactive tabs drawer at the top of the menu and not offering a way to instantly jump to the bottom of the list of tabs. More fundamentally, having one's tabs automatically moved from one part of the tabs list to another using a criteria that is not obvious is entirely unhelpful, since you have to keep hunting in the list for the tabs that do get moved if you didn't consider them to be inactive like the algorithm did. And the inactive tabs drawer doesn't have feature parity with the existing tabs UI, either.

I remember having to temporarily give up on using Fenix the day this feature was released, because the amount of effort it now took to so much as switch between tabs was no longer worth it to me. And a month after this feature was implemented, there is still no way to disable it.

How did this inactive tabs feature of no discernable value manage to pass user experience testing before being merged? And why did the development team think this feature would be useful in the first place, to the point that it merited further experimentation? Personally, I don't find it useful at all, I wouldn't have found it a useful idea on paper, and I have no issues with using a simple grid of tab previews like Chrome's, with no distinction between active and inactive tabs—as in, the way it was before the drawer was added.

And just as I was beginning to write this post, within ten seconds of casually browsing the issue tracker I'd discovered that the tab switcher had been redesigned yet again only three days prior, via yet another issue complaining about the awful UX that resulted. This time the grid had been split up into multiple sections that are supposed have some kind of logical correlation based on search history, or something.

But even if this were a useful feature—which it isn't, in my opinion—it hasn't even been finished yet. Not in the sense of being ready for user testing, but in the sense of being severely broken. Despite the "search" tabs having an X to close them and appearing nearly identical to normal tabs, the "swipe to close" gesture that you can perform on normal tabs doesn't work on these new tabs. The horizontal layout occupied by the search tabs means there is now significantly more wasted space where more tabs could have been displayed in the past. The inability to reorder tabs only compounds the issues with organization this change introduces. And on top of that, the inactive tabs drawer is still there, with all the same issues as before. Worse, closing tabs in the inactive tabs drawer can randomly move other tabs from the inactive group into a new "search" group without any further interaction, which is both counterintuitive and completely unhelpful.

If this design is here to stay, which would be a highly undesirable situation due to the wasted space, all of the aforementioned bugs would have to be fixed. And if not, the UI would have to undergo even more changes. Both of these options would cost more time and development resources that could have been spent elsewhere.

In my opinion, the tab switcher didn't need to change anymore to begin with; the previous grid-based view that copied Chrome's layout worked perfectly fine. Judging from the complaints in the corresponding issue criticizing this latest redesign, I would say that I'm not alone in holding that opinion. It's telling that both the inactive tabs and search tab grouping changes received feature requests for the ability to disable them shortly after being merged into Nightly.

When your design team is creating issues with titles like As a user, I find the tab experience to be horrible and frustrating, you know you have a problem on your hands. But when one of the most important features of a web browser is still undergoing significant changes over a year later, there is likely an even bigger issue at play. How many more months or years of development work on Fenix will it take for there to no longer be a need for radical experimentation with the UI, after settling on something that at least works for most users? This new iteration of the UI does not work, in the sense of being intuitive and reliable, unlike the previous grid-based version that mimicked Chrome's tab viewer.

In fact, if Fenix's UI was nothing more than a carbon copy of Chrome's with full support for pre-Manifest v3 WebExtensions, that alone would be enough of a reason for me to never use Chrome again.

In my experience, the frustration stemming from this is not due to the fact that there are constant UX changes because Nightly is an experimental platform—that is to be expected. It's frustrating because people are unable to figure out why the team thought these changes were a good idea in the first place. No amount of experimentation or user testing can salvage a feature that nobody finds useful. And most importantly, the frustration is amplified because this was a use of development resources that could have instead been spent on fixing the numerous aforementioned bugs and other issues that people like me actually care about—issues that are still present in both Nightly and stable.

Also, it isn't currently possible for average contributors to get a clearer picture of why the team felt these new features were worthy of implementation. As mentioned in one of the issue threads, there is a Jira instance that apparently holds details about the planning for UX-related changes, but it is restricted to Mozilla employees only. In another thread, one of the mobile team members said that user research is "very tricky to discuss openly", for unexplained reasons.

But why does user feedback for an open-source project like Fenix have to be handled behind closed doors? Clearly there is some kind of disconnect between the users and the development team, because there have been so many redesigns that have consistently attracted a significant amount of negative criticism over the past few years. Even if there is a justifiable reason for keeping the discussions about user research closed to Mozilla employees, I would argue that it's still important to discuss upcoming new features or redesigns with users before they've been greenlit for implementation—the same users who have felt confused, frustrated or betrayed every time a new, unwanted redesign or change gets pushed out.

I believe that this problem could be solved if the development team had a better idea of what users want to see improved. The notion of experimentation itself isn't really the problem; the problem is that the experimentation is both poorly thought-out and prioritized over addressing all of the bugs and missing features that I discussed earlier. Users like me would prefer Fenix's existing issues that are actively causing pain to be sorted out first, before a lot of precious time is spent tinkering with new UI redesigns that are ultimately hit-or-miss.

I understand that by using the Nightly version of Fenix, you will be naturally exposed to more bugs and issues than if you were to use its stable version. But many of the bugs and missing features that are a part of Nightly have also been a part of stable for months, and even over a year in some cases. And given that I needed to use Nightly in order to install the WebExtensions I wanted to use, I found myself with little choice. Between the missing features in stable and the instability of Nightly, I ultimately couldn't find a way of making Fenix work for me as my main mobile web browser.

And the difficulty of using Fenix as a daily driver isn't the only problem that's preventing it from becoming a viable web browser sometime in the future—what about the engineering processes that prioritize working on unhelpful UI rewrites over addressing the longstanding bugs and requests for missing features? Why do people in the community feel like they're being ignored after repeatedly bringing up the issues they consider to be the most important, like the inability to install arbitrary WebExtensions in stable that would remove many people's need to suffer through using Nightly? And why does it feel like there is a disconnect between what the mobile team and Nightly's users consider to be useful features?

Perhaps this situation wouldn't be that big of a deal if Fenix weren't an important piece of software. Unfortunately, in the modern world, almost all of us need to rely on browsing the web to some extent, and smartphones have become near-universal. Some people are now unable to survive without browsing the web or owning a smartphone. In that sense, mobile web browsing may soon become inextricably tied to one's ability to stay alive. Setting aside the implications of such a thought, that means that a mobile app for browsing the web is a critical piece of software to maintain in 2021, and right now, Fenix is not being maintained like a critical piece of software.

The idea that a single poorly designed app can drive so many people to despair at once is perhaps a testament to our gradually increasing reliance on web browsers to work correctly. The number of exasperated users commenting in so many of the the issue threads about how their favorite website doesn't function properly in Fenix or how aggravating it is to put up with the browser's quirks only emphasizes the fact that this is a highly important piece of software that we all wish we could rely on for our daily activities.

Mozilla, you have lost me as a user of Fenix, even though I still side with you on the issues of privacy and avoiding a browser monoculture to this day. I still happily use Firefox on desktop, and will continue to do so until there is nobody left to keep supporting it.

But, please—you have to listen to us if you want to prevent your users on Android from getting fed up and moving away to Chrome-based browsers after fighting with Fenix at every turn. The number of complaints across the issue tracker and the lack of substantive followup on many of those complaints should be ample evidence that these frustrated users exist and are likely about to leave Fenix behind in droves, if they haven't already. I am one of those frustrated users who has given up, and I'm trying to help in some way by bringing these issues to light so a discussion about them can take place.

My suggestions would be the following: if the mobile team is understaffed, then stop putting your resources into projects like Relay that have minimal importance in comparison to literally the only piece of software that is preventing web browsing in the Android ecosystem from devolving into a Blink monoculture. If you need more resources, then let us donate money directly to the development teams responsible for developing and maintaining Firefox. Yes, I'm having to complain that I can't give your development teams my own hard-earned money.

At the very least, I implore you to bring both the mobile team and the community together, acknowledge that something needs to change, and figure out some way of shaping Fenix into a browser worth returning to after experiencing the stability and reliability of Chrome. There is no Mozilla without Firefox, and I am witnessing the trust in Firefox on Android crumble away before my very eyes. In a few years, there may be nobody left who is willing to choose Fenix with all of its bugs, UX issues and missing features over a Chrome-based alternative, and control of Android's entire web browser ecosystem could soon be completely lost to Google.

Mozilla, please show us that you care and do something about Firefox for Android's current direction. The future of the mobile web depends on it.