A client device may access remotely an application running on a remote server. However, a remote application may be designed for a desktop environment for a large screen, which can make it very difficult for a user at a client device having a small screen to interact with the remote application.
Instead of remotely accessing a desktop application from a client device, the application may be rewritten to run on the client device. However, client devices are typically slower and have limited resources compared with servers (e.g., desktop computer). As a result, rewriting an application on a server to run on a client device can be a huge undertaking requiring a large investment and long development time. For example, it can be very difficult to port existing code from an operating system of a server to a client device (e.g., smartphone). In many cases it is not practical to rewrite an application from scratch to match the native functionality and user interface of a client device.
Accordingly, there is a need for systems and methods that facilitate user interaction with an application running on a server from a client device and provide an improved experience for users at the client device.