Hi,I've seen some examples of new web platform APIs with browser integration being broken for a long time in various Chromium-based products. Eg. FedCM has a mix of blink and browser UI code and while major Chromium browsers like MS Edge work well, some limited testing has shown that a number of other browsers fail in different ways - from just failing to show any UI and not resolving promises, to failing with various error codes.I worry this is problematic for the web ecosystem because it makes feature detection unreliable and instead encourages web developers to follow the much-hated pattern of allow-listing specific browser UA strings for specific functionality (thereby making it difficult for other browsers to get the same experience when they fix their issues).
In general I'd hope that every serious Chromium-based browser is running test suites like web-platform-tests and then fully disabling web APIs they don't support (eg. it's a simple RuntimeEnabledFeature to just turn FedCM off), but apparently that's not happening in practice or maybe enough has been implemented to pass the automated tests without actually wiring up to browser UI for real users?
We're not likely to be able to prioritize taking on additional work on the Chrome team to help identify and mitigate such cases (sorry your product quality is your problem, not ours 😉). But I'd be interested in any simple low-cost options to help mitigate the problem. For example, perhaps we could track such web-exposed-browser-UI features a bit differently in runtime_enabled_features.json5 such that embedders can have them disabled by default and then override enable them on a case-by-case basis? That doesn't mean we'd have test coverage for that unsupported configuration in upstream chromium bots (unmodified Chromium builds would continue to have these features enabled and fully tested), but at least that might make it easier to manage defaults downstream and be aware of relevant changes. Thoughts?
--Thanks,Rick
You received this message because you are subscribed to the Google Groups "Chromium Embedders" group.
To unsubscribe from this group and stop receiving emails from it, send an email to embedder-dev...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/embedder-dev/CAFUtAY87fq637nNE9Gk%2B6pBZdTbhzVF_CnzpBaXf3gwDE%3DVMuw%40mail.gmail.com.
On Tue, Jun 24, 2025 at 4:21 PM Rick Byers <rby...@chromium.org> wrote:Hi,I've seen some examples of new web platform APIs with browser integration being broken for a long time in various Chromium-based products. Eg. FedCM has a mix of blink and browser UI code and while major Chromium browsers like MS Edge work well, some limited testing has shown that a number of other browsers fail in different ways - from just failing to show any UI and not resolving promises, to failing with various error codes.I worry this is problematic for the web ecosystem because it makes feature detection unreliable and instead encourages web developers to follow the much-hated pattern of allow-listing specific browser UA strings for specific functionality (thereby making it difficult for other browsers to get the same experience when they fix their issues).Google (and potentially other sites) block login from third-party browsers based on UA strings, and other libraries (like some media players and ads serving platforms) just break outright if they don't find an expected UA string. All else being equal, this is strong encouragement for third-party browsers to be disingenuous about their UA, and makes it very problematic to rely on UA for accurate feature detection.In general I'd hope that every serious Chromium-based browser is running test suites like web-platform-tests and then fully disabling web APIs they don't support (eg. it's a simple RuntimeEnabledFeature to just turn FedCM off), but apparently that's not happening in practice or maybe enough has been implemented to pass the automated tests without actually wiring up to browser UI for real users?
Hi,I've seen some examples of new web platform APIs with browser integration being broken for a long time in various Chromium-based products. Eg. FedCM has a mix of blink and browser UI code and while major Chromium browsers like MS Edge work well, some limited testing has shown that a number of other browsers fail in different ways - from just failing to show any UI and not resolving promises, to failing with various error codes.
I worry this is problematic for the web ecosystem because it makes feature detection unreliable and instead encourages web developers to follow the much-hated pattern of allow-listing specific browser UA strings for specific functionality (thereby making it difficult for other browsers to get the same experience when they fix their issues).
In general I'd hope that every serious Chromium-based browser is running test suites like web-platform-tests and then fully disabling web APIs they don't support (eg. it's a simple RuntimeEnabledFeature to just turn FedCM off), but apparently that's not happening in practice or maybe enough has been implemented to pass the automated tests without actually wiring up to browser UI for real users?
We're not likely to be able to prioritize taking on additional work on the Chrome team to help identify and mitigate such cases (sorry your product quality is your problem, not ours 😉). But I'd be interested in any simple low-cost options to help mitigate the problem. For example, perhaps we could track such web-exposed-browser-UI features a bit differently in runtime_enabled_features.json5 such that embedders can have them disabled by default and then override enable them on a case-by-case basis? That doesn't mean we'd have test coverage for that unsupported configuration in upstream chromium bots (unmodified Chromium builds would continue to have these features enabled and fully tested), but at least that might make it easier to manage defaults downstream and be aware of relevant changes. Thoughts?
Other folks have provided a good overview of the complexity of this space. I’ll offer some additional thoughts from the Microsoft Edge team.
It would be valuable to have a consistent, easy-to-use pattern to enable embedders to:
I don’t think trying to structure things in a way where it’s always off-by-default for embedders is likely helpful. That’s because embedders that wants things on by default would just modify any such code downstream to flip the default over.
That said, if there is sufficient embedder interest, Chromium could perhaps implement something similar to what EnableExperimentalFeatures does, but with a new marking. That new method might check some build flag like CAUTIOUS_CHROMIUM_EMBEDDER (which neither Chrome or Chromium would set, but an embedder could choose to). If that flag would set, it could turn all of the features classified in this way off.
To enable an embedder to turn on a subset of these APIs (where app-level code exists), a potential idea would be to have a separate, embedder-specific JSON configuration file that allows overriding the feature marking individually. I say “separate file” because we’re really worried about the ongoing conflict/merge complexity of trying to tackle it in a huge file like runtime_enabled_features.json5. If there was instead something similar to fieldtrial_testing_config.json where an embedder could add embedder-specific overrides one-by-one, that would largely mitigate the maintenance concern. Or maybe the suggested FeatureAvailable pattern could work if there was a central, isolated file for an embedder to place those overrides.
From: embedd...@chromium.org <embedd...@chromium.org>
On Behalf Of José Dapena Paz
Sent: Wednesday, June 25, 2025 12:45 AM
To: embedd...@chromium.org
Subject: [EXTERNAL] Re: [embedder-dev] Preferred embedder support for web platform APIs with significant browser integration
You don't often get email from jda...@igalia.com. Learn why this is important |
--
You received this message because you are subscribed to the Google Groups "Chromium Embedders" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
embedder-dev...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/embedder-dev/848ae4e6684d1b4594b4677dbbe5f29bf1739639.camel%40igalia.com.
To unsubscribe from this group and stop receiving emails from it, send an email to embedder-dev+unsubscribe@chromium.org.
Thanks folks! A few responses:On sites conditioning functionality on UA strings: I think we all agree this is bad. I've fought against this a bunch myself too, but as soon as a web developer points to a popular chromium browser which has an API which passes feature-detection checks but is broken and doesn't fail gracefully then I loose the argument and the web developer feels vindicated in their UA-string-based opt-in approach supporting only the specific browsers they've tested and validated to be working. This is what's motivating this thread for me - I think we need to fix things such that it's rare for web developers to find features exist but non-functional in chromium-based browsers if we want any hope of making more progress against the UA-string conditioning problem.In terms of reaching out to broken browsers, absolutely I personally do that when I notice or hear about such breakage. But also we (Chrome team) generally do not proactively test other Chromium browsers, so this isn't really a solution in any sense.Good points about merge conflicts with runtime-enabled-features.json5 being a pain. This suggests one quick and easy pragmatic improvement - update the build infra to look for an additional file which can override values. I've filed this issue to track that and I'm happy to help ensure consensus and code reviews if someone in the downstream community wants to take on writing a patch for this.There was some discussion of features being off by default in upstream Chromium and then enabled by Google Chrome. I'm not personally aware of any features which are upstream on-by-default but don't actually work there, are others?
To unsubscribe from this group and stop receiving emails from it, send an email to embedder-dev...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/embedder-dev/9beacb9b-36ff-4ace-960e-8cadf8f6a333n%40chromium.org.
You received this message because you are subscribed to a topic in the Google Groups "Chromium Embedders" group.
To unsubscribe from this topic, visit https://groups.google.com/a/chromium.org/d/topic/embedder-dev/KpiAwIIlqSM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to embedder-dev...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/embedder-dev/ece0f0aa-0c3a-4dea-8646-1b7be0bf0b44n%40chromium.org.