> For the complete documentation index, see [llms.txt](https://abdulrahman-1.gitbook.io/my-digital-garden/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://abdulrahman-1.gitbook.io/my-digital-garden/level-2-system-design/step-4-low-level-detailed-design-system/clients.md).

# Clients

{% hint style="info" %}
**We have many types of client applications**

* Web / Browser
* Mobile
* API
* ...
  {% endhint %}

## Web

### Caching

* CDN : to serve static assets such as HTML,CSS,JS, and media
* Local storage
  * You can't specify expiry as built-in but you can do it as an author `{“value”:””, createdAt:””}`
* Session storage
  * expire when you close the tab
  * it can be used to save UI State
* Cookies
  * User sessions
  * Authentication : Session ID or JWT
* Service workers and cache API : save responses to be used offline
* IndexedDB

### Network requests

* Retry
* Timeout
* Web socket
* HTTP pooling
* Error handling

### Performance

* Rendering
* Network bandwidth
* Compressing media
* Profiling

{% embed url="<https://create-react-app.dev/docs/production-build/>" %}

### Testing

* End-to-end
* A/B
* Automated UI Testing

{% embed url="<https://www.cypress.io/>" %}
