The use case is very convenient, but one of the downsides for the presently available features is that the webservice connection is carried out as a single operation, with no feedback until the search is complete. From a user experience point of view, an operation with no progress indicator gives the impression of taking about 10x as long as one that provides useful feedback.

So, the webservice protocol has been re-tooled so that the search is initiated on the server, and runs in the background. The app regularly polls the service to find out if any more results have come in, so it is able to display intermediate results. The diagram on the top right shows this sequence happening on an iPad: a substructure search (using caffeine) is scouring the PubChem and ChEBI databases for candidates, and the list of structures is steadily piling up, and taking over space in the please-wait screen. Once the search is complete, the app moves on to the list of final results.

In more detail, the waiting screens look something like this:

The many little structure diagrams in the grid represent interim results, i.e. they might not be properly sorted, and some post-processing/filtering may happen en route to the final result list, but it is at least a good indication that stuff really is happening on the server, and the search is going to turn up useful content. And it’s more fun than watching a blank screen!