1. A computer program product, tangibly embodied in an information carrier, comprising instructions operable on a client computer to: provide on a client computer a user interface for a computer program application, the user interface being operable to receive input from a user interacting with the client and from the input to generate user interaction events; identify on the client one or more possible user interaction events while the user interface is in a current user interface state, the possible user interaction events being user interaction events that would arise from input the user interface could possibly receive in the current user interface state from the user; pre-process one or more of the possible user interaction events to generate one or more possible user interface states; and store the one or more possible user interface states for later use.