Retriever is designed to be fast and scalable at the same time. Multiple things have been done to achieve this, including utilizing a mixture of local and server side processing.

Server side processing

Retriever uses server-side processing because it doesn't require the downloading of the entire content list, when the content is already indexed on the server that the application is stored on. This works well for a wide range of devices that don't have lots of memory or power capabilities, like phones.

Your request is sent to the server where it is processed, turned into useful information, and then a list of content is returned to the application and displayed to the user in a fraction of a second.

Local processing

Sometimes, it is better to process searches locally, on your device. This is good for small amounts of simple contents (around 50) such as categories, but is not good for hundreds or thousands of contents with lots of metadata, long descriptions, lots of images, or links.

Local processing is also good for security. It doesn't require extra processing to be done on the server, so searching for things like passwords or private messages has less risk of attacks.