A method to synchronize application data with a server, comprising: at a client having one or more processors and memory storing programs for execution by the one or more processors: sending a request to the server to initiate data synchronization with the client for a software application, wherein the request includes information to inform the server about a next data range to be synchronized with the client; receiving application information from the server, the application information including a first data set and a second data set, wherein: the first and second data sets are defined by the server based on a record of past synchronizations maintained on the server; the first data set consists of application data items that have never been synchronized with the client and have been selected in accordance with a priority of the data items, and the second data set is distinct from the first data set and consists of change operations that have been selected in accordance with a chronological order of the change operations, wherein the change operations are changes to application data items, the changes occurring since a prior synchronization operation of the record of past synchronizations; concurrently performing a backward synchronization process on the first data set and a forward synchronization process on the second data set, wherein the data items in the first data set and the change operations in the second data set are processed independently, wherein the forward synchronization and the backward synchronization share information to ensure not to synchronize a same data item twice; and enabling, via the software application at the client, a user of the client to have access to: the application data items in the first set in accordance with the backward synchronization process; and application data on which the change operations from the second set have been performed in accordance with the forward synchronization process. sending a request to the server to initiate data synchronization with the client for a software application, wherein the request includes information to inform the server about a next data range to be synchronized with the client; receiving application information from the server, the application information including a first data set and a second data set, wherein: the first and second data sets are defined by the server based on a record of past synchronizations maintained on the server; the first data set consists of application data items that have never been synchronized with the client and have been selected in accordance with a priority of the data items, and the second data set is distinct from the first data set and consists of change operations that have been selected in accordance with a chronological order of the change operations, wherein the change operations are changes to application data items, the changes occurring since a prior synchronization operation of the record of past synchronizations; the first and second data sets are defined by the server based on a record of past synchronizations maintained on the server; the first data set consists of application data items that have never been synchronized with the client and have been selected in accordance with a priority of the data items, and the second data set is distinct from the first data set and consists of change operations that have been selected in accordance with a chronological order of the change operations, wherein the change operations are changes to application data items, the changes occurring since a prior synchronization operation of the record of past synchronizations; concurrently performing a backward synchronization process on the first data set and a forward synchronization process on the second data set, wherein the data items in the first data set and the change operations in the second data set are processed independently, wherein the forward synchronization and the backward synchronization share information to ensure not to synchronize a same data item twice; and enabling, via the software application at the client, a user of the client to have access to: the application data items in the first set in accordance with the backward synchronization process; and application data on which the change operations from the second set have been performed in accordance with the forward synchronization process. the application data items in the first set in accordance with the backward synchronization process; and application data on which the change operations from the second set have been performed in accordance with the forward synchronization process.