Autocomplete and CancellationToken
Just a small suggestion.

Typical typing rate is 40 WPM (with keyboard). It means more or less one character every 300ms. With mobile phone (and a good virtual keyboard) rate is typically slower (around 20/30 WPM).

Assuming:


You can start a request in few milliseconds.
User will have a useful result after few typed characters.


It means that for each user and for each typed word you will start few HTTP connections with your server (in the best case where user will pick something from the autocomplete). Multiply for all the searched words for all your user base and you will see that you add a useless load to your server (and you consume mobile bandwidth...)

Do not start lookup while typing but AFTER user stopped typing for a short period, let's say 300 ms for mobile devices but you may tune this value with some usage statistics. Network latency, server response time and UX fluidity need to be considered to find a trade-off.

Note that this may be done also with a simple Task.Delay(300) inside GetAutocomplete(), before calling _client.GetAsync(). It has the advantage to keep GetAutocompleteSearchResultsAsync() unchanged.

await Task.Delay(DebouncingDelayInMilliseconds, cancellationToken);