ios/web performs a similar role on iOS as what content/ does on other platforms. It encapsulates the architecture for displaying web content, managing navigation, and providing an API that embedders (like ios/chrome, ios/web_view) can use to build a browser (or browser-like application).
On iOS, Blink is not available. Instead, ios/web wraps WKWebView (provided by WebKit) and layers on top of it to provide features like:
content::WebContents).content::BrowserContext).WKWebView's navigation stack.//ios/web supports iOS 16 and above. This is a lower minimum iOS version than Chrome in order to support //ios/web_view deployment to older versions of iOS.
The ios/web layer sits above base, net, components, ui, and more. It is the renderer equivalent on iOS.
ios/web vs ios/components vs components/ios/web: The renderer-equivalent on iOS. It does not depend on higher-level features found in ios/chrome or ios/web_view.ios/components: Contains reusable feature code that is specific to iOS but shared across multiple embedders (e.g., ios/chrome and ios/web_view). Implementations in ios/components often depend on ios/web/public. See //ios/components/README.md.components/: Generally cross-platform, sometimes excluding iOS. See //components/README.md.Dependency Notes:
ios/components can depend on ios/web.ios/web can depend on ios/components, so long as the component does not depend on ios/web.Embedders (like ios/chrome or ios/web_view) must consume ios/web through the Public API, located in ios/web/public.