By default, fetch() implementations have varying timeout limits (e.g., 300s in Chrome, 90s in Firefox). To enforce a specific timeout duration when using @prismicio/client, use an AbortController. You can trigger the abort() method after a set duration to cancel the request.
In Node.js environments older than version 15.0.0, you may need the abort-controller package. In modern Node.js or browser environments, AbortController is available globally and does not require an external library.
Note: When moving from Node.js to the browser, you can remove node-fetch and abort-controller dependencies.
import * as prismic from '@prismicio/client'
import fetch from 'node-fetch'
import { AbortController } from "abort-controller";
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 5000); // 5 second timeout
try {
const response = await prismic.get({
// ... other options
fetch,
signal: controller.signal
});
} catch (e) {
// Handle abort error
}