In search of the Miui Browser

Today it’s time for an old-fashioned browser detective story about the Miui Browser, the current state of non-Google Chromia on Android, and assumptions about browsers and UA strings. In addition, this article will highlight a few principles of mobile browser research, one of which was vindicated rather nicely.

Update: severe vulnerability discovered in Miui/Mint Browser.

The old gang

A client wants me to see how the the old gang of non-Google Chromium browsers on Android is doing. We all know Samsung Internet is doing fine, thanks so much for asking. But what about the others? Several of them, such as HTC Chromium, have silently disappeared. What’s the exact current score? Who are the survivors?

When in doubt, tweet. I asked my followers for non-Google Chromium browsers, and enough of them responded to get a first impression. Samsung Internet, obviously, but also the Miui Browser for Xiaomi devices, using mostly Chromium 61, but sometimes 63. That was interesting.

The device

In order to say anything useful about such a browser, you need the device it’s made for — even though it may be available for download, as is the case for the Miui Browser. I needed a Xiaomi phone. (This, by the way, is the principle that was vindicated. We’ll get to that in due time.)

So I went to the local friendly phone shop and ordered a RedMi 5, a model that was present in several browser strings my followers sent me. (And why didn’t I order it online? Because such small shops allow you to test phones before buying them, so that I can be certain they contain the browser I want. The shop going out of business would be bad for my business. So I ordered the device there and allowed them to take their margin.)

The home screen

I did this on Thursday, and picked up the phone on Friday afternoon, politely declining their testing offer (I was tired, and the end of the week was very near). I only got around to firing it up on Tuesday. And when I did ... deception! There was just a regular boring old Google Chrome on the home screen!

The RedMi 5 home screen with Google Chrome ... and the Browser icon I initially missed.

Mistake #1 on my side: I plain missed the “Browser” icon in the upper left.

In my defense, this default home screen is non-standard. In fact, it’s the first time I see this particular configuration of icons.

I expected the “Browser” icon to be in the favourite bar at the bottom of the screen, in the exact spot the Chrome icon takes up. That’s the proper place for the browser that the vendor wants its users to use. If Google Chrome is there, it means the device vendor has no browser of its own. (Or that the operator put it there, but this phone was unlocked, so there’s no operator hanky-panky going on.)

I lamented the fate that made me throw away hundreds of euros on a worthless device, dutifully noted that the default browser was a Chrome 67, which after an update became a 73, yawned widely, and put the RedMi away. No Xiaomi Chromium for me or my client.

The WebView

Later that day I hit on what I thought was mistake #2. I re-checked the browser strings my followers had sent me, and sure enough, there it was, in every single browser string I received: the telltale Version/4.0 that denotes a WebView.

A WebView is a secondary browser on a mobile device that is available for apps such as Twitter and Facebook. Clicking on a link in those apps opens web pages not in the device browser, but in the device WebView. That way the users don’t have to leave the app. Engagement stuff.

On iOS you are not allowed to install other rendering and JavaScript engines. Therefore, browsers such as Chrome and Firefox iOS are not in fact Chrome or Firefox. They use the Safari WebView for their actual browsing.

On Android you can install any browser you want, but Google requires all device vendors to use the Google WebView. It is updated regularly and is at most one or two versions behind Google Chrome.

I assumed these Xiaomi users had seen my tweet in their Twitter app and clicked on the link, firing up the system WebView. It was a bit odd that all these devices used Chromium 61 instead of the expected 71 or 72 — but apparently Chinese manufacturers did not have to worry about that rule as much. Or something.

I thought I had found my mistake. In fact, I hadn’t. In fact, I’d done exactly the right thing by buying the device and ignoring the Version/4.0. But I didn’t know that yet.

Browser

On Wednesday I felt bad for my client, whom I’d promised a Xiaomi Chromium that I couldn’t deliver. So I decided to check in on the one definite non-Google Chromium: Samsung Internet. Samsung claims you can install that browser on pretty much any Android device nowadays. Let’s put that to the test and install it on the RedMi 5.

Play Store, install, no hitch, done. Load test site, works. “Make Samsung Internet your default browser?” Since I was feeling vengeful and spiteful towards Google Chrome, I decided to do it. The phone sent me to a settings menu where I could select my default browser. (Incidentally, I like this idea. Instead of allowing browsers to set themselves as the default, merely allow them to open the system setting for the default browser. This might even be a solution to the latest Google-EU conundrum.)

Anyway, the menu gave me the options for my default browser: Google Chrome, Samsung Internet ... or “Browser.”

“Browser?”

Wait a minute. There IS a vendor browser on the RedMi 5! Called Browser. (Browser and Internet are the only two names allowed for a vendor browser in Asian mythology. Don’t ask me why.)

I finally noticed the icon on the homescreen, tapped it, saw an unknown browser open before my very eyes, sent it to my test site with trembling fingers, and lo and behold, there was MiuiBrowser 10.1.2 in all its glory:

Mozilla/5.0 (Linux; U; Android 8.1.0; en-gb; Redmi Note 5 Build/OPM1.171019.011)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile
Safari/537.36 XiaoMi/MiuiBrowser/10.1.2

Another surviving member of the old gang! I hadn’t wasted my client’s time and my money after all! Good days and weird browsers are here again! I was in paradise.

Then I noticed the snake: Version/4.0. A WebView.

Again the WebView

What was this? Why was this application that was clearly a browser pretending to be a WebView?

One possible answer is that it’s in fact only a skinny app that uses the WebView for all its actual browsing. I saw that before in the curious case of the Indian Micromax.

I didn’t believe this was a skinny app, though. My gut feeling told me that this is a real browser. So I downloaded an app that tests the WebView, and it gave me this for the WebView UA String on the RedMi 5:

Mozilla/5.0 (Linux; Android 8.1.0; Redmi Note 5 Build/OPM1.171019.011; wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/73.0.3683.90 Mobile
Safari/537.36

That sounds about right. It’s a Chromium 73, which fits, because I just updated the device. It has the crucial wv bit in the Android/device part of the string, which denotes a WebView.

Version/4.0 and wv

So Miui is a true browser, and not a WebView. But why does the Miui Browser incorporate Version/4.0 in its browser string?

I don’t know the answer. Maybe it wants to end up on the right side of browser detects written by clueless web developers? Maybe they just plain forgot to change it? (For a short while early in its history, Chrome’s navigator.vendor was “Apple.” They obviously forgot to change that field. A scenario like this is not impossible for Miui.)

In any case, Version/4.0 no longer necessarily denotes a WebView, though I think wv still does. So we’ll have to use that last substring to identify WebViews from now on. Duly noted.

Market share

We have now positively identified the Miui Browser as the Chromium-based system default browser on the Xiaomi RedMi 5, and likely other models as well.

The first question any web developer will ask is: OK, what’s its market share?

I don’t know. There’s only one source for this sort of data, StatCounter’s global statistics, and it doesn’t count Miui Browser as a separate browser. Miui’s stats are part of the general Google Chrome stats.

StatCounter counts Samsung Internet as a separate browser, but only after the entire Samsung Internet team threatened to holds its collective breath for days on end. Apparently nobody issued a similar threat for the Miui Browser. So we have no data.

I may be able to find data from a different source, though. Let’s see what happens. But even if that succeeds I would be hugely surprised if Miui Browser holds more than 1-2% of the mobile browser market.

Zoom reflow

If talking about market share yields nothing useful, let’s talk about features instead. Is the Miui Browser browser different from a regular Google Chrome 61?

Image of normal zooming

Normal zooming: you only see part of the line.

Image of zoom reflow zooming

Miui zooming: the lines reflow to fit on the screen.

Yes, it most definitely is. Miui Browser supports zoom reflow, one of my absolute favourite mobile browser features, and one that Google Chrome never supported.

If a user zooms in to a visual viewport size where lines of text do not fit on screen, most browsers do nothing. The lines go off-screen, and if users want to read them they’ll have to pan left or right. Safari, Chrome, Firefox, Samsung Internet, and most other mobile browsers work like that.

Miui Browser and Opera Mobile, however, support zoom reflow. If the user zooms in to where lines of text do not fit on screen, the browser reacts by shortening these lines, so that the text stll fits. This does wonders for readability, especially with those annoying sites that have far too long lines.

Zoom reflow has a down side as well: the browser has to recalculate the layout of most of the page. Elements may suddenly contain many more lines of text, and therefore grow in height. Other elements below the affected elements will be moved downward, even if their height isn’t adjusted. This causes massive reflows and recalculations of the layout. Worse, if the user zooms out the entire process has to run in reverse.

Despite this, the presence of zoom reflow is enough to make me consider switching devices in order to have the Miui Browser available. I simply LOVE it. (OK, Opera Mobile supports it as well.)

Variants

Christian Schaefer pointed out the Miui Browser can also be downloaded. Would that yield the same browser as the one on the device?

Christian referred me to the APK Mirror site (a site so horrible that I refuse to link to it, although it does appear to be trustworthy). At first I didn’t want to mess with a complicated site, so I just searched the Play Store for “Miui Browser” and got a hit. Download, install, try. This is the browser:

Mozilla/5.0 (Linux; U; Android 5.0.1; en-gb; GT-I9505 Build/LRX22C)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile
Safari/537.36 XiaoMi/Mint Browser/1.6.2

There are two important differences with the pure Miui on the RedMi: it’s a different device (Galaxy S4, because it happend to be within reach of my hands), and the name is not Miui Browser but Mint Browser, though it’s still branded Xiaomi. Also, the Version/4.0 is very much present in this browser, which is downloaded and thus certainly not a WebView.

But is there an actual difference in features? Yup, of course there is. Mint Browser does not support zoom reflow, instead handling zooming exactly as the other, boring browsers.

That leads to the question if the Mint Browser is truly a Miui Browser, or just a downloadable variant. I’m currently assuming the latter, and have concluded that testing on Mint Browser cannot stand in for testing on Miui Browser.

Then I gritted my teeth, steeled my soul, and dove deep into APK Mirror and its terrible process flow. It took me twenty minutes to figure out how to download something, and I could only do that because I browsed the site on Chrome Mac, then copied the correct clicks to my phone. It was an awful experience — but I heroically snatched Miui Browser 10.6 from the claws of this site:

Mozilla/5.0 (Linux; U; Android 8.0.0; en-gb; SM-G930F Build/R16NW)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile
Safari/537.36 XiaoMi/MiuiBrowser/10.6.1

This one is now on my Galaxy S7, hence the different device string. It’s a later version than the one on the RedMi 5, though it still uses Chromium 61. But the browser name is Miui Browser, and not Mint Browser. Also, it supports zoom reflow. That’s enough for a positive identification. The APK Mirror version is a true Miui Browser.

Conclusion: non-Google Chromia

I have now identified Miui Browser as one of the few surviving non-Google Chromium browsers on Android, in addition to Samsung Internet.

Update: severe vulnerability discovered in Miui/Mint Browser.

Also, I feel vindicated by my insistence on buying an actual device. If I’d just searched on the Play Store I would have got the Mint Browser, which is not the native browser on Xiaomi devices. Now I’ve got the real thing. Also, I could experimentally verify that the APK Mirror download actually is the real thing as well.

It’s interesting that, like Samsung, Xiaomi thinks it’s useful to offer its browser for download. Also, Miui Browser is not restricted to Xiaomi phones any more, just as Samsung Internet is not restricted to Samsung phones any more. I now have a Xiaomi phone with Samsung Internet, and a Samsung phone with Miui Browser. Interoperability FTW!

It appears Samsung’s web developer communication strategy is partly being copied — and that shouldn’t come as a surprise, since it’s a pretty successful one. Web developers are aware of the existence of Samsung Internet, and can download it for testing even on non-Samsung devices. If Xiaomi made the downloading process easier, and did something about web developer outreach, it could have similar success.

That leaves two minor mysteries to be solved: its market share, and its use of Version/4.0 in the UA string of a true browser. I hope to be able to offer new insights later.

For now, though, I will continue my search for other surviving non-Google Chromia. If you think you’ve discovered one, please go here, add a note as to the device or the browser, and hit Send Info. The Internetz will thank you later.

This is the blog of Peter-Paul Koch, web developer, consultant, and trainer. You can also follow him on Twitter or Mastodon.
Atom RSS

If you like this blog, why not donate a little bit of money to help me pay my bills?

Categories: