| Supported Chromium Products and Platforms |
| ========================================= |
| |
| Chromium is used to produce many products, which run on many platforms. |
| One of the biggest challenges in making changes to Chromium is appropriately |
| considering that wide variety of supported products and platforms and dealing |
| with platform-specific or product-specific test failures. |
| |
| To keep this cost manageable the Chromium project is very conservative in adding |
| new supported platforms and products, with additions requiring approval by Chrome |
| ATLs (chrome-atls-discuss@google.com). This document is the canonical document |
| describing which products are officially supported on which platforms. |
| |
| **Note**: This document applies to Chromium. Some of Chromium's subcomponents like |
| ANGLE or V8 currently support more platforms. |
| |
| **Note**: Any feedback/questions on this doc itself can go to the individuals |
| listed as [per-file OWNERS of the |
| doc](https://source.chromium.org/chromium/chromium/src/+/main:docs/OWNERS;l=1?q=docs%2FOWNERS&sq=&ss=chromium). |
| |
| Definitions of Terms |
| -------------------- |
| |
| * **Platform**: for this document means a build configuration: A combination |
| of OS, ISA like 64-bit Intel or 32-bit Arm, compiler, debug / release, |
| sanitizers, and so on. In short, a combination of flags you might stick into |
| args.gn. |
| * **Product**: An executable that can be built on one or more platforms and |
| ships to users. |
| * **Embedder**: An embedder is a code module that glues together ("embeds") |
| Chromium's lower-level layers (e.g., content layer + selected //components) to |
| produce a product. Embedders can live either upstream (i.e., in the Chromium |
| repository) or downstream. |
| * **Officially supported product**: A product is officially supported if |
| engineers working in the Chromium codebase are accountable for regressions |
| in that product. |
| * **Officially supported platform**: A platform is officially supported if there |
| are bots on [Chromium's waterfall](https://build.chromium.org) and commit queue that build and run tests on that |
| platform. Commit queue coverage means that no patches that land will break these |
| platforms. Note that official platform support can and does vary by product, |
| as detailed below. |
| * **Community supported platform**: Some platforms that are not officially |
| supported for a given product can still be community supported. That means that |
| despite no bots making sure that the platform does not break, the community sends |
| patches to unbreak things, and we accept these patches unless they introduce |
| undue cost in the judgment of the local owners in question. |
| * **Unsupported platform**: Actively blocked from working upstream (e.g., may |
| #error out in build). |
| * **Downstream product**: Chromium is used by several other projects as a "soft-fork" |
| (downstream branch) for which engineers making upstream changes are not |
| accountable for preventing regressions, but instead should ideally be helpful in |
| providing guidance to |
| project owners in a good open-source citizen best-effort fashion. Such |
| downstream products are of course free to support platforms that are |
| unsupported in upstream Chromium at the cost of maintaining the fork. |
| * **SKU (Stock keeping unit)**: A build configuration of a product that ships to |
| users. We try to limit the number of SKUs. For example, on each OS, we generally try to |
| have a single binary for each product per ISA (instruction set architecture, e.g. x86 |
| or ARM), with optional fast paths for optional specialized instructions dispatched to |
| at runtime. |
| * **CQ (commit queue) bot**: A bot that runs some build/test configuration on Chromium |
| CLs pre-submit and blocks submit if it turns red. |
| * **CI (continuous integration) bot**: A bot that runs some build/test configuration |
| on Chromium CLs post-submit and closes the tree if it turns red. |
| * **FYI bot**: A bot that runs some build/test configuration on Chromium's |
| waterfall at some cadence but does not block commit or close the tree on |
| turning red. |
| * **Internal bot**: A bot that runs some team's set of tests somewhere |
| internal to that team. (Note for Googlers: see details about Google-specific |
| internal bots on the CQ |
| [here](https://g3doc.corp.google.com/company/teams/chrome/ops/engprod/browser_infra/cq/overview.md?cl=head#internal-builders-on-the-cq)). |
| |
| Engineer Responsibility |
| ----------------------- |
| |
| ### When making changes |
| |
| * The engineer making a change is accountable for reasonably proactively ensuring |
| that change doesn't negatively impact officially supported platforms and products |
| using their code |
| * This is obviously always a cost/risk judgement call and the perfect balance |
| certainly does not mean elimination of all risk. But engineers should expect that |
| when they cause an issue of this type, they are the ones on the hook for |
| remediation (eg. immediate revert / merge), post-mortem and potentially post- |
| mortem action items and so should feel the incentive to use tools like experimentation |
| appropriately. In particular: |
| * Detected breakage of CQ/CI bots has a "revert first, ask later" policy. |
| Engineers should expect that any of their CLs causing such breakage may |
| freely be reverted without prior discussion, and their first priority in |
| resolving such breakage should be turning the bots green again ASAP. |
| * Detected breakage of FYI bots should *not* result in reverts a priori. The |
| team gardening that FYI bot may reach out to the engineer authoring the CL |
| to understand more about the impact of the CL, but as a general rule, the |
| challenge of keeping the FYI bot green is on the team gardening the FYI |
| bot. |
| * Detected breakage of internal bots should *not* result in reverts a priori. |
| The team gardening that internal bot may reach out to the engineer |
| authoring the CL to together determine the best path forward. That best |
| path forward may involve reverting the upstream CL, but that should be |
| done only (a) with the consensus of the engineer who authored the CL and |
| (b) with the commitment of the downstream team to do whatever necessary to |
| allow the engineer in question to advance their upstream work. Note: There |
| may be exceptions for engineers on the downstream team in question, for |
| whom there can be tighter policies as determined by the team itself (for |
| a concrete example, see the "Tast notes section" in [this document](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/testing/testing_in_chromium.md)). |
| |
| ### When introducing new features |
| |
| In general, engineers adding a new feature are accountable for: |
| * Deciding which of the supported platforms their new feature will support |
| * Ensuring their feature works well on all such platforms, and is correctly |
| disabled (and so causes no regressions) on all other official Chromium platforms |
| * Adhering to Chromium's [flag guarding |
| guidelines](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/flag_guarding_guidelines.md) |
| * Informing platform owners appropriately in case they want to partner on |
| additional support earlier rather than later |
| * Some feature areas have additional processes to support this and promote |
| consistency: eg. for new web platform APIs we ask engineers to explain their |
| platform support decision and API owners may object when a decision lacks |
| suitable justification (eg. lacking WebView support for no good reason) |
| |
| Supported Compilers |
| ------------------- |
| |
| The only officially supported C++ compiler is Chromium's hermetic clang. |
| This is upstream clang built at a specific upstream revision that's |
| periodically updated. (See "Cronet" below for a small asterisk.) |
| See docs/clang.md for more details. |
| |
| The only officially supported Rust compiler is Chromium's hermetic rustc. |
| This is upstream rustc built at a fixed revision, built against the same |
| LLVM that Chromium's clang is built against (to make cross-language LTO work |
| well). It enables rustc nightly features. |
| |
| On Linux, GCC is community-supported (per the definition in the [definitions of |
| terms](#definitions-of-terms)). |
| |
| MSVC is not supported, and `base/compiler_specific.h` `#error`s out on it. |
| |
| Supported Chromium Browser Platforms by OS |
| ------------------------------------------ |
| |
| The Chromium browser (and its official counterpart Google Chrome) are produced |
| via the //chrome embedder (except for on iOS, where the embedder is |
| //ios/chrome). This section details officially supported Chromium browser |
| platforms. |
| |
| Note: Googlers can see additional internal information |
| [here](https://g3doc.corp.google.com/company/teams/chrome/platform_support.md?cl=head). |
| |
| ### Android |
| |
| Chrome on Android is supported on x86, x64, ARM, and ARM64. The current minimum |
| OS version supported is listed [here](https://support.google.com/chrome/a/answer/7100626). |
| |
| The `is_desktop_android` GN arg configures a build of Chrome for Android that |
| is customized for a desktop form factor. |
| |
| Chrome also runs on Android Automotive, shipping Chrome Beta on Intel-based |
| chips and both Chrome Beta and Chrome Stable on ARM. Chrome's minimum |
| supported OS version for Android Automotive is Android R. |
| |
| ### ChromeOS |
| |
| Chrome for ChromeOS supports both x86-64 and ARM architectures. For |
| development and testing, the linux-chromeos build serves as an emulator, |
| providing a functional ChromeOS environment on Linux. |
| |
| Unlike its counterparts on other platforms, Chrome for ChromeOS is not merely |
| a web browser; it is a monolithic binary responsible for the System UI, Window |
| Management, and core system services. While //ash currently encapsulates the |
| System UIs and Window Manager and //chromeos houses platform-specific |
| components, the //chrome directory still retains significant legacy |
| system-level logic. Active refactoring is underway to migrate these |
| non-browser concerns into //ash and //chromeos to improve modular isolation |
| and reduce technical debt. |
| |
| Chrome for ChromeOS follows the [ChromeOS auto-update |
| policy](https://support.google.com/chrome/a/answer/6220366). |
| |
| ### Linux |
| |
| [This page](https://support.google.com/chrome/a/answer/7100626) details |
| minimum operating system and hardware requirements. |
| |
| As of March 2026, official support on ARM is |
| [upcoming](https://blog.chromium.org/2026/03/bringing-chrome-to-arm64-linux-devices.html). |
| |
| Many more platforms/distributions are community-supported (per the definition |
| in the [definitions of terms](#definitions-of-terms)), including Flatpak |
| (alternative packaging format), Arch Linux (via AUR), and downstream Chromium |
| packages. For example, there are packagers distributing Chromium in different |
| configurations (Debian distributes amd64, arm64, armhf, i386) and some use |
| different build configs (gcc instead of clang). We occasionally get patches |
| for different architectures, or for the gcc build, and we typically accept |
| those patches. We do not support downstream forks of Chromium and we typically |
| won't entertain patches for those. |
| |
| ### macOS |
| |
| [This page](https://support.google.com/chrome/a/answer/7100626) details |
| minimum operating system requirements. |
| |
| ### iOS |
| |
| Chrome on iOS is supported on ARM64. The minimum supported operating system |
| version changes roughly once a year. As of February 2026, the minimum OS |
| version supported is iOS 17.0. |
| |
| ### Windows |
| |
| [This page](https://support.google.com/chrome/a/answer/7100626) details |
| minimum operating system and hardware requirements. |
| |
| Other Upstream Embedders |
| ------------------------ |
| |
| Besides the embedder for the Chromium browser, there are several other |
| upstream embedders in Chromium, which have their own CQ and CI bots that |
| Chromium engineers are responsible for keeping green. This section details |
| these embedders. |
| |
| ### Android WebView |
| |
| Android WebView is an Android system component for displaying web content. |
| The embedder code for Android WebView lives in //android_webview. Details are |
| [here](https://chromium.googlesource.com/chromium/src/+/main/android_webview/README.md). |
| |
| Currently (and for all past versions), WebView supports exactly the same |
| architectures and Android OS versions as the same version of Chrome on Android |
| does. It's theoretically possible that this may change in the future, but not |
| that likely. |
| |
| ### Chromecast |
| |
| The embedder code for Chromecast lives in //chromecast. This code is used to |
| build the *Cast Web Runtime*, also known as the "Cast Browser", which is used to |
| display [web-based Google Cast apps](https://developers.google.com/cast/docs/web_receiver). |
| |
| The supported platforms are defined in the gn files in |
| //chromecast/build/args/product. Each file corresponds to a single supported |
| platform for the Cast Web Runtime. |
| |
| Details are [here](https://chromium.googlesource.com/chromium/src/chromecast/README.md). |
| |
| ### Cronet |
| |
| Cronet is an Android library that packages Chromium's network stack. The |
| embedder code for Cronet lives in //components/cronet. Details are [here](https://chromium.googlesource.com/chromium/src/+/main/components/cronet/README.md). |
| |
| One particularity of Cronet is that at any given time it may be supported on a |
| broader range of Android versions than Chrome on Android due to aligning |
| with [Google Play Services minSDK](https://android-developers.googleblog.com/search/label/Google%20Play%20services). For example, as of |
| March 2026, Cronet is supported on Android M+ whereas Chrome on Android is |
| supported on Android Q+. This has the implication that Chromium code that is |
| used as part of Cronet must be able to build and run with the minimum Android |
| version that Cronet supports rather than just the minimum Android version that |
| Chrome on Android supports. |
| |
| ### Fuchsia WebEngine |
| |
| Fuchsia WebEngine is an application running on the Fuchsia operating system for |
| displaying web content and running cast applications (sometimes being referred |
| as a Cast Receiver). The embedder code for Fuchsia WebEngine lives in |
| //fuchsia_web. Details, including information on platform support, are |
| [here](https://chromium.googlesource.com/chromium/src/+/main/fuchsia_web/README.md). |
| |
| ### Headless |
| |
| Headless Chromium allows running Chromium in a headless/server environment. |
| The embedder code for Headless lives in //headless. |
| Headless is supported on Linux, Windows, MacOS, ChromeOS and Fuchsia. |
| On Linux, headless supports [numerous build settings for trimming down |
| the dependencies and producing a binary capable of running in a minimal |
| runtime environment]( |
| https://source.chromium.org/chromium/chromium/src/+/main:build/args/headless.gn). |
| Details are |
| [here](https://chromium.googlesource.com/chromium/src/+/main/headless/README.md). |
| |
| ### iOS WebView |
| |
| iOS WebView is an Objective-C framework that renders web content with |
| `[CWVWebView]`. It bundles select Chromium features to enhance the web browsing |
| experience beyond what WKWebView provides out of the box. The embedder code for |
| iOS WebView lives in //ios/web_view. Details are |
| [here](https://chromium.googlesource.com/chromium/src/+/main/ios/web_view/README.md). |
| |