# strapi.fetch uses native fetch() API

> Source: https://docs.strapi.io/cms/migration/v4-to-v5/breaking-changes/fetch

In Strapi 5, `strapi.fetch` wraps the native `fetch()` API instead of node-fetch, requiring the `timeout` parameter to be replaced with `signal: AbortSignal.timeout()`.

In Strapi 5, the `strapi.fetch` object is now wrapping node Fetch API instead of node-fetch.

This page is part of the [breaking changes database](/cms/migration/v4-to-v5/breaking-changes) and provides information about the breaking change and additional instructions to migrate from Strapi v4 to Strapi 5.

- Is this breaking change affecting plugins? Yes
- Is this breaking change automatically handled by a codemod? No

## Breaking change description

**In Strapi v4**

Strapi.fetch wrapped node-fetch’s `fetch()` and accepted the same parameters.

**In Strapi 5**

The `node-fetch` module is not used anymore. `strapi.fetch` calls the native `fetch()` method.

## Migration

<br/>

### Notes

* The parameters are mostly compatible but there are some differences.

### Manual procedure

If your Strapi v4 code passed the `timeout` parameter to `strapi.fetch`, replace it with a signal property as follows:

**In Strapi v4**

```tsx
strapi.fetch(url, {
  method: 'POST',
  body,
  headers,
  timeout: 1000,
}); // accepts the type RequestInit from node-fetch
```

**In Strapi 5**

```tsx
strapi.fetch(url, {
  method: 'POST',
  body,
  headers,
  signal: AbortSignal.timeout(1000)
}); // accepts the type RequestInit native to Node
```
