- Create an Axios instance with `axios.create({ baseURL, timeout })` — don't use the global import.
- Use interceptors for auth headers, error handling, and request/response logging.
- Use request/response interceptors for auth token injection, error transformation, and automatic retry on network failures.
- 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.