tl;dr: We are enabling back/forward cache by default on Android in M90 and starting the Multiple Page Architecture (MPArch) project to further generalise Chromium’s architecture to support projects like prerendering and portals. These features may require changes to Chromium embedder code.
Back/forward cache improves user experience by enabling instant history navigation to previously-visited pages by freezing and preserving them in memory and reusing them upon history navigations. This feature is now enabled by default for most Android devices. While the bfcache is implemented in //content, it changes a number of assumptions around navigation and document lifecycle, which can lead to various bugs in the code relying on them. More details are available here — we recommend all //content embedders to audit their codebases to detect and fix assumptions invalidated by bfcache. In the meantime, embedders can avoid any potential bugs by disabling the kBackForwardCache feature and chrome://flags#back-forward-cache is available for local testing.
Our next step is to continue to evolve Chromium’s navigation architecture by starting Multiple Page Architecture (MPArch) project, which will bring support for multiple active pages in the same tab (WebContents). This will enable new types of features like prerendering and portals, and it will change even more assumptions in the various //content/public APIs. The summary of the changes and their expected impact on the embedders is available here — we would recommend embedders to familiarise themselves with the plans, and we would appreciate early feedback.
We will provide a further update when all of the necessary primitives and accompanying documentation in //content/public are available, to help embedders audit and update their code.
Alexander on behalf of bfcache-dev@ and navigation-dev@.