Both axios-retry and retry-axios are libraries designed to enhance the functionality of Axios, a popular HTTP client for making requests in JavaScript. They provide mechanisms to automatically retry failed requests, which can be particularly useful in scenarios where network reliability is a concern or when dealing with transient errors. While both libraries serve a similar purpose, they differ in their implementation and additional features, making them suitable for different use cases.
Npm Package Weekly Downloads Trend
3 Years
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
axios-retry
5,060,021
1,996
33.6 kB
56
a year ago
Apache-2.0
retry-axios
1,179,803
499
57.8 kB
0
4 days ago
Apache-2.0
Feature Comparison: axios-retry vs retry-axios
Retry Logic
axios-retry:
axios-retry implements a simple retry mechanism that allows you to specify which HTTP status codes should trigger a retry. It provides a straightforward API to configure the number of retries and the conditions under which they should occur, making it easy to use for basic scenarios.
retry-axios:
retry-axios offers a more sophisticated retry strategy, including support for exponential backoff, which increases the wait time between retries. This can help reduce the load on the server and improve the chances of a successful request after a failure.
Configuration Options
axios-retry:
axios-retry allows you to configure the retry count and the retry condition directly through its API. You can easily set the maximum number of retries and specify which response status codes should be retried, providing a simple yet effective configuration.
retry-axios:
retry-axios provides a more extensive set of configuration options, including the ability to customize the retry delay and the option to specify different retry strategies for different types of requests. This flexibility allows for more tailored retry behavior based on application needs.
Integration with Axios
axios-retry:
axios-retry is designed specifically for Axios and integrates seamlessly with it. It requires minimal setup and can be added to existing Axios instances without significant changes to the codebase, making it a convenient choice for existing Axios users.
retry-axios:
retry-axios also integrates with Axios but adds additional features that may require more configuration. It is suitable for new projects or when you need the extra capabilities it offers, but it may involve a slightly steeper learning curve.
Error Handling
axios-retry:
axios-retry provides basic error handling by allowing retries for specific HTTP errors. However, it does not offer advanced error handling features, which may require additional logic in your application to manage errors effectively.
retry-axios:
retry-axios includes enhanced error handling capabilities, allowing you to define custom error handling logic based on the type of error encountered. This can be particularly useful for applications that need to respond differently to various error scenarios.
Community and Support
axios-retry:
axios-retry has a smaller community compared to retry-axios, but it is well-documented and maintained. It is suitable for projects that require a simple and reliable retry mechanism without the need for extensive community support.
retry-axios:
retry-axios has a larger community and more extensive documentation, which can be beneficial for developers looking for support and examples. It is a good choice for projects that may require more complex retry logic and community-driven enhancements.
How to Choose: axios-retry vs retry-axios
axios-retry:
Choose axios-retry if you want a lightweight solution that integrates seamlessly with Axios and provides basic retry functionality without additional dependencies. It is ideal for straightforward use cases where you need to retry failed requests based on status codes or network errors.
retry-axios:
Choose retry-axios if you require more advanced features such as exponential backoff, custom retry conditions, and the ability to handle retries for specific HTTP methods. It is suitable for applications that need more control over the retry logic and want to customize the behavior based on different scenarios.
Popular Comparisons
Similar Npm Packages to axios-retry
axios-retry is a popular library that enhances the functionality of Axios, a widely-used HTTP client for JavaScript. This package allows developers to automatically retry failed HTTP requests, which can be particularly useful in scenarios where network issues or server errors might temporarily prevent a request from succeeding. With configurable options for the number of retries, delay between attempts, and conditions under which to retry, axios-retry provides a robust solution for improving the reliability of API interactions in applications.
While axios-retry is a great option for adding retry functionality to Axios requests, there are alternatives available that serve similar purposes. One notable alternative is:
retry-axios. This library is built specifically for retrying Axios requests and offers a similar feature set to axios-retry. It provides automatic retries for failed requests, allowing developers to specify the number of retry attempts and the conditions under which retries should occur. retry-axios is designed to be simple to use and integrates seamlessly with Axios, making it an excellent choice for developers looking for an alternative to axios-retry.
retry-axios is a library that enhances the functionality of Axios, a popular HTTP client for JavaScript. It provides a mechanism to automatically retry failed HTTP requests, making it easier to handle transient errors such as network issues or server unavailability. By integrating retry logic directly into Axios, retry-axios allows developers to configure how many times a request should be retried, the delay between retries, and which types of errors should trigger a retry. This can significantly improve the resilience of applications that rely on external APIs.
While retry-axios offers a robust solution for retrying requests, there are several alternatives in the ecosystem that provide similar functionalities:
axios-retry is another popular library that adds retry functionality to Axios. It allows developers to specify the number of retries, the delay between retries, and conditions under which a retry should occur. axios-retry is straightforward to use and integrates seamlessly with Axios, making it a solid choice for those looking to add retry logic to their HTTP requests without much overhead.
fetch-retry is designed for the Fetch API, providing a similar retry mechanism for requests made using the Fetch API. This library allows developers to specify retry options, such as the number of attempts and the delay between retries. If your application uses the Fetch API instead of Axios, fetch-retry is an excellent alternative for implementing retry logic.
retry-request is a library that provides retry functionality for HTTP requests made with various libraries, including Axios and the native HTTP module in Node.js. It offers a flexible API for configuring retries and can be used in both browser and server environments. If you need a more generalized solution that works across different HTTP clients, retry-request might be the right choice.
superagent-retry is an extension for Superagent, another popular HTTP client. This library adds retry capabilities to Superagent requests, allowing developers to specify retry conditions and delays. If your project is already using Superagent, superagent-retry can easily integrate retry logic into your existing setup.
Axios plugin that intercepts failed requests and retries them whenever possible.
Installation
npm install axios-retry
Usage
// CommonJS
// const axiosRetry = require('axios-retry').default;
// ES6
import axiosRetry from 'axios-retry';
axiosRetry(axios, { retries: 3 });
axios.get('http://example.com/test') // The first request fails and the second returns 'ok'
.then(result => {
result.data; // 'ok'
});
// Exponential back-off retry delay between requests
axiosRetry(axios, { retryDelay: axiosRetry.exponentialDelay });
// Liner retry delay between requests
axiosRetry(axios, { retryDelay: axiosRetry.linearDelay() });
// Custom retry delay
axiosRetry(axios, { retryDelay: (retryCount) => {
return retryCount * 1000;
}});
// Works with custom axios instances
const client = axios.create({ baseURL: 'http://example.com' });
axiosRetry(client, { retries: 3 });
client.get('/test') // The first request fails and the second returns 'ok'
.then(result => {
result.data; // 'ok'
});
// Allows request-specific configuration
client
.get('/test', {
'axios-retry': {
retries: 0
}
})
.catch(error => { // The first request fails
error !== undefined
});
Note: Unless shouldResetTimeout is set, the plugin interprets the request timeout as a global value, so it is not used for each retry but for the whole request lifecycle.
Options
Name
Type
Default
Description
retries
Number
3
The number of times to retry before failing. 1 = One retry after first failure
retryCondition
Function
isNetworkOrIdempotentRequestError
A callback to further control if a request should be retried. By default, it retries if it is a network error or a 5xx error on an idempotent request (GET, HEAD, OPTIONS, PUT or DELETE).
shouldResetTimeout
Boolean
false
Defines if the timeout should be reset between retries
retryDelay
Function
function noDelay() { return 0; }
A callback to further control the delay in milliseconds between retried requests. By default there is no delay between retries. Another option is exponentialDelay (Exponential Backoff) or linearDelay. The function is passed retryCount and error.
onRetry
Function
function onRetry(retryCount, error, requestConfig) { return; }
A callback to notify when a retry is about to occur. Useful for tracing and you can any async process for example refresh a token on 401. By default nothing will occur. The function is passed retryCount, error, and requestConfig.
onMaxRetryTimesExceeded
Function
function onMaxRetryTimesExceeded(error, retryCount) { return; }
After all the retries are failed, this callback will be called with the last error before throwing the error.
validateResponse
Function | null
null
A callback to define whether a response should be resolved or rejected. If null is passed, it will fallback to the axios default (only 2xx status codes are resolved).