1. Help us out and fill out the survey

It's anonymous

2. There can be only one expanded contact at a time

Hint the Context value can also contain functions.

3. Fetch a list of contacts from external source

Hint either use the randomuser.me service.
Hint use the fetch API to create the HTTP request for contacts.
Hint use the seed option to get the same response with each request.

Create a dark theme for your app and a widget to change the theme

Hint the widget can be as simple as a select dropdown.

Simulate querying and sorting on the server

Hint The API doesn't support querying or sorting, but this can be simulated on client side
Hint Create a requestContacts function that takes query and sort, and returns a list of contacts
Hint remember to cleanup pending requests if user keeps typing

When filtering highlight the searched phrase in each contact

It was all about Pokemon

Use the Pokemon TCG API and replace contacts with Pokemon