The installer is somewhat different from the runtimeponent but I'll ex how the install flow works which should let us talk about both. Lets assume you visit a site that's hosting a Chrome Frame prompt e.g. my blog Upon consenting to the install the installer is downloaded and if possible the install process is accelerated by an Open Sourceponent called Omaha Once the installer download starts the page begins running an occasional check to see if the install has finished. It detects this by looking to see if it can create an instance of the ActiveX control that Chrome Frame provides. Upon startup this control looks to see if the browser-resident portion of Chrome Frame (the bit that usually loads when the browser starts) has been loaded. If not the ActiveX control loads it. Once detected we know that the installation is finished and the page is reloaded (or the user sent to whatever URL the developer wanted). It's this next page load that involves the normal Chrome Frame detection mechanism. The in-browserponent that we previously bootstrapped otherwise known as a Browser Helper looks at the headers and first bytes of the web page being loaded. If it detects that the developer has sent the flag to ask the page to render via Chrome Frame (learn about that here #TOC-Making-Your-Pages-Work-With-Google- ) a full-page rendering surface is created much the way a PDF viewer or Office Docment viewer can be invoked by IE to render some documents; unlike those viewers Chrome Frame renders -old HTML using the Chrome renderer instead of IE's built-in engine. That's all there is to it! When you navigate to another page the exact same process happens all over again allowing each page to decide for itself if it wants to be rendered in Chrome Frame meaning that old content is never broken.