- Create a typed Axios instance with `axios.create({ baseURL, timeout })` — share across the app for consistent configuration.
- Use interceptors for auth token injection, error normalization, and retry logic — configure once on the instance, applies to all requests.
- Type API responses with generics: `axios.get<User[]>('/api/users')` — the response `data` property is automatically typed.
- Use request interceptors to attach auth tokens: `instance.interceptors.request.use(config => { ... })`.
- Use response interceptors for centralized error handling: redirect on 401, retry on 503.
- Use `CancelToken` or `AbortController` for cancelling in-flight requests on unmount.
- Define typed response interfaces and use `instance.get<ResponseType>(url)` for type safety.