1. A method for changing a version of an application transparently on a client, comprising: determining when to begin changing a current version to a new version; and when: determining resources for the client to change to the new version; and supplying the client with the resources; when the resources are located on a server, then downloading the resources from the server, storing the resources locally on the client; and when the resources are stored locally on the client, obtaining the locally stored resources; determining when to switch to the new version on the client; and switching to the new version based on the determination; wherein the client is configured to execute the new version with a subset of the resources associated with the new version.