A method of updating a conversation, comprising: at a client device having one or more processors and memory storing one or more programs to be executed by the one or more processors: sending a request to update a conversation to a server, wherein at least a portion of the conversation is stored on the client device; wherein the request includes: a conversation identifier corresponding to the conversation, a first message identifier corresponding to a first message in the conversation, a last message identifier corresponding to a last message of the conversation, and a conversation metric of the conversation, wherein the conversation metric is a checksum of message identifiers in the conversation; and receiving one or more updates from the server, the one or more updates including one or more messages corresponding to the conversation; wherein the at least a portion of the conversation stored on the client device includes one or more messages other than the first message and the last message, and the request does not include any message identifiers corresponding to the one or more other messages. at a client device having one or more processors and memory storing one or more programs to be executed by the one or more processors: sending a request to update a conversation to a server, wherein at least a portion of the conversation is stored on the client device; wherein the request includes: a conversation identifier corresponding to the conversation, a first message identifier corresponding to a first message in the conversation, a last message identifier corresponding to a last message of the conversation, and a conversation metric of the conversation, wherein the conversation metric is a checksum of message identifiers in the conversation; and receiving one or more updates from the server, the one or more updates including one or more messages corresponding to the conversation; wherein the at least a portion of the conversation stored on the client device includes one or more messages other than the first message and the last message, and the request does not include any message identifiers corresponding to the one or more other messages. sending a request to update a conversation to a server, wherein at least a portion of the conversation is stored on the client device; wherein the request includes: a conversation identifier corresponding to the conversation, a first message identifier corresponding to a first message in the conversation, a last message identifier corresponding to a last message of the conversation, and a conversation metric of the conversation, wherein the conversation metric is a checksum of message identifiers in the conversation; and a conversation identifier corresponding to the conversation, a first message identifier corresponding to a first message in the conversation, a last message identifier corresponding to a last message of the conversation, and a conversation metric of the conversation, wherein the conversation metric is a checksum of message identifiers in the conversation; and receiving one or more updates from the server, the one or more updates including one or more messages corresponding to the conversation; wherein the at least a portion of the conversation stored on the client device includes one or more messages other than the first message and the last message, and the request does not include any message identifiers corresponding to the one or more other messages.