reload package handles the process of migrating an app:
serializing the app's state, then shutting down and restarting the app
(for example, to load updated client code or to move the client
restoring its state.
Packages that want to participate in the migration process register
reload. They can make the migration process wait until they are
ready and include whatever state they may possess in the serialization
and deserialization process.
reload is part of the Webapp project.