A streaming list in contacts should be able to outperform the current implementation. We prototyped this, and with thousands of contacts you are able to jump to any letter immediately on load. The current app takes several seconds to make a jump. This is likely due to loading all of the contacts at once before we can jump. With a streaming approach we should only ever have to wait on what we need to display.
WIP patch is coming soon. Here's some additional benefits I've noticed: 1 - Faster first display of contacts. The white flash is much reduced, it could be due to a reduction of resource loading, but I feel that we are able to display the initial list much quicker. 2 - Able to jump to 'Z' character immediately with the prototype. This takes around 30 seconds or so with 2,000 contacts on a device in master. 3 - Images load immediately. I don't have facebook implemented yet, but images from the contacts object display instantly. I'm not sure what's needed for facebook contacts, but it would be nice if we could cache the images in the same way that we do for normal contacts.
Nom'ing for 1.3 to determine if the comms team would like to include this or something like it in their roadmap for the next release.
comms triage: let perf team decide on this one
triage: not blocking. please land in master when patch is available
From our meeting at Oslo it sounds like we need one of the following two options to occur: 1) A bunch of mozContacts API improvements to support the streaming approach. (See deps here.) 2) Convert contacts app to use Datastore so that we can use IDB directly. Since neither option is going to occur soon, this is not going to hit any milestones in the near future. Also, it looks like (2) is more likely at this point as contacts FB support is getting converted to datastore now as a first step.