Background
Drupal core officially declares support for Opera Mini. This setting is stored in core’s package.json (https://git.drupalcode.org/project/drupal/-/blob/9.2.x/core/package.json...), which is then read by core’s PostCSS and Babel processes to compile the CSS and JS.
To know what changes need to be made, these processes query the caniuse repository at https://github.com/Fyrd/caniuse. For more information on exactly how this process works, see https://github.com/browserslist/browserslist/issues/409.
What is Opera Mini?
Opera Mini is a mobile specific browser that was created to dramatically save bandwidth. It does so by pre-compiling the third-party HTML server-side, compressing it, and then sending it to the client.
However in later versions of Opera mini, this server-side compiling is only done when in “Extreme Data Savings” mode. This mode does not support modern browser technologies such as CSS Variables, CSS Grid, Logical Properties and more.
Note that Opera Mini also supports a "High Data Savings" mode (see https://blogs.opera.com/news/2015/09/new-high-saving-data-opera-mini/). This mode does not use server-side rendering, and works properly with modern features.
According to the tooltip on CanIUse,
Opera mini is primarily used on feature phones with processing done based on Opera 12.1 via Opera servers. To test on iOS/Android this mode can be enabled using “Extreme Data Savings”

Problem
Even though we declare we support this browser, we don't. See #2119299: Make sure Drupal 10 works with mobile proxy browsers.
There are further problems with our declaration of support:
- The caniuse repository doesn’t differentiate between Opera Mini versions. There is only one version called “all”.
- The caniuse repository doesn’t differentiate between using “Extreme Data Savings” mode and not. It assumes “Extreme Data Savings”.
This is very important because “regular mode” supports modern features like CSS Variables, and CSS Grid.
The summary of this is that CanIUse’s documentation of Opera Mini’s feature list is not the documentation for the browser, but for a non-default mode within the browser.
Continued support for Opera Mini in this manner will completely negate the use of modern browser features for the indefinite future (including any improvements from removing IE11 support)/
Proposed resolution
Remove Opera Mini from the list of supported browsers. Opera Mobile is not affected, that is based on Chromium’s rendering engine, Blink.
Release notes snippet
Drupal core previously declared support for Opera Mini in 'Extreme Data Savings' mode, due to an issue with how CanIUse documents the browser's features. Drupal never actually supported this mode, so the declaration has been removed. Opera Mini in 'High Data Savings' mode, as well as Opera Mobile (a different browser altogether), are unaffected.
| Comment | File | Size | Author |
|---|---|---|---|
| #15 | 3202818-9.3.patch | 5.61 KB | spokje |
| opera mini tooltip.png | 211.26 KB | mherchel |
Comments
Comment #2
droplet commentedDrop it. Drupal has never truly supported it.
Comment #3
mherchelAdded information about Opera Mini's "High Data Savings" mode.
Comment #4
nod_What droplet said.
we can burry this one at the same time too: #2119299: Make sure Drupal 10 works with mobile proxy browsers
Comment #5
nod_Comment #6
mherchelComment #7
wim leersJoining @droplet and @nod_ in agreeing that dropping Opera Mini support is the sensible pragmatic choice here.
Especially when you consider that it’s been known to have issues for the entire Drupal 8 cycle: #2119299-5: Make sure Drupal 10 works with mobile proxy browsers, by @nod_, seven years ago.
Comment #8
gábor hojtsyParenting to the right META for Drupal 10. Do we have a reliable source of Opera Mini market share? I found Opera market share in general at 1 to 2%, don't know that would include Opera Mini or not. Looks like since we did not support it in the first place, it would only be honest to declare we don't support it.
Comment #9
shaalI was able to find this stat, specifically for Mobile -
https://gs.statcounter.com/browser-market-share/mobile/worldwide
On April 2021, Opera Mini usage was 1.97%
in https://analytics.usa.gov
Opera browser is not even listed (very low usage)
Comment #10
mherchelAlso keep in mind that Opera Mini by itself supports modern features. It's only when in “Extreme Data Savings” mode, where it does not support modern features.
So if the full Opera Mini market share is 1.97%, it can be assumed that less than half of that is in “Extreme Data Savings” mode.
Comment #11
catchOpera has higher usage in the global south - i.e. stats for Africa show about 10% of mobile usage: https://gs.statcounter.com/browser-market-share/mobile/africa
However, this doesn't differentiate between opera mobile and opera mini, let alone reverse proxy mode. I think it's better to be honest and admit we don't support it, rather than pretending we do as currently.
Comment #12
gábor hojtsyRecategorizing as Task like the other requirements issues.
Comment #13
gábor hojtsyIf this is just updating what we state to what we actually do, then do we need to wait until Drupal 10? Retitling for better accuracy for now.
Comment #14
spokje(Updated IS to link to the correct line in
core/package.json)Comment #15
spokjeOut of curiosity, I removed the line for
"last 1 OperaMini version",fromcore/package.jsonand did a:on the
9.3.x-branch.Attached are the resulting changes.
Comment #16
gábor hojtsyIf we want to jump right into cod updates here, then it is not a policy issue anymore. Are there also docs to update for Drupal 10?
Comment #17
spokjeComment #18
wim leersThanks, @catch, for phrasing better what is really what I wanted to convey 😊
Comment #19
gábor hojtsyI think its fine to jump into implementation here unless it would need multiple issues.
Comment #20
spokjeThanks @Gábor Hojtsy for blessing my (non-intended) hijacking ;)
Since we're not "actually/really/fully" support opera mini, let alone reverse proxy mode currently, would it be OK to "drop" the "non-support" in D9.2 already, or is this a bridge too far and would this be D9.3 material, or am I way too over-enthusiastic and is this still D10 stuff?
Comment #21
gábor hojtsyOn that one I would refer to @lauriii and/or @justafish and/or @nod_.
Comment #22
spokjeThanks afain @Gábor Hojtsy.
Let's await the verdict from The Council of The Front-End Elders. :)
Comment #23
justafishPatch looks good in #15
The code change is very minor so I'd happy for it to go into 9.2, but I'd defer to @catch and @xjm on how disruptive that would be.
Comment #24
andypostIt needs CR or release note snippet
Comment #25
spokjeThanks @justafish and @andypost.
Let's first do a tag-clean-up and title change to reflect we're back in the land of "doing stuff" in
9.2.x/9.3.xinstead of discussing10.xpoliciesComment #26
spokjeComment #27
spokjeComment #28
gábor hojtsy@Spokje: what's the reason for the title change? As explained above support does not actually exist, so we are not removing it. This new title sounds alarming compared to what is actually happening.
Comment #29
spokje@Gábor Hojtsy: They way I see it: We currently say we support it, that's technically done by the line in the IS (https://git.drupalcode.org/project/drupal/-/blob/9.2.x/core/package.json...). The patch removes that line and thus the support.
Now I'm not a man of subtleties, (nor a native speaker), so chances are I've made things worse with the title change.
That's certainly not what I intended. If you think the previous title is stating the thing we're doing with the patch. I'm more than happy to revert the title-change or let you revert it.
Comment #30
gábor hojtsyRemoving actual support for a browser would not be possible in Drupal 9 for backwards compatibility reasons :) We are discussing removing our declaration of support because it is not true. Proposed yet another variant for the title.
Also updated the summary a bit.
Comment #31
spokje@Gábor Hojtsy: You're a well spoken man, thanks :)
tips hat
Comment #32
catchAdding a release notes snippet and CR.
Comment #33
catchWe've missed the window for the release candidate, so I think we should do this in 9.3.0.
Comment #34
spokjeChanged Version of issue to
9.3.x-dev.Comment #35
spokjeComment #37
ravi.shankar commentedRe-tested patch #15 on Drupal 9.3.x and it's green.
Moving back to RTBC as per comment #32.
Comment #38
catchCommitted/pushed to 9.3.x, thanks!
Comment #40
catchUpdated the documentation page. https://www.drupal.org/docs/system-requirements/browser-requirements
Comment #41
catchComment #42
droplet commentedMissing a credit for @nod_ and @justafish I think.
Comment #43
catchOof, added.