NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1808 most downloaded on npm
elegant & feature rich browser / node HTTP with a fluent API
Last release 11 days ago
23 Sep 2026
Release timing varies
gaps range from 9 days to 9 months
Nearly every release is documented
notes for 5 of 5 stable releases
176 versions withdrawn
withdrawn after publishing
15 years old
181 releases · first in 2011
Nothing published for this version
Nothing published for this version
One column per quarter.
Add flags for 201 & 422 responses (Nikhil Fadnis)
Buffer via send method (Sergey Akhalkov)Fixed handling of exceptions thrown from callbacks
+json MIME types.Clear authorization header on cross-domain redirect
Added support for "globally" defined headers and event handlers via superagent.agent(). It now remembers default settings for all its requests.
superagent.agent(). It now remembers default settings for all its requests..retry() (Alexander Murphy)Nothing published for this version
Limit maximum response size. Prevents zip bombs (Kornel)
.ok() callback (Jeremy Ruppel)Nothing published for this version
Upgrade MIME type dependency to a newer, secure version
Nothing published for this version
Support disabling TCP_NODELAY option (#1240) (xiamengyu)
TCP_NODELAY option (#1240) (xiamengyu)Nothing published for this version
Nothing published for this version
Nothing published for this version
Allow crossDomain errors to be retried (#1194) (Michael Olson)
Add errno to distinguish between request timeout and body download timeout (#1184) (Kornel)
Treat videos like images (Kornel Lesiński)
Fixed being able to define own parsers when their mime type starts with text/ (Damien Clark)
text/ (Damien Clark)withCredentials(false) (Andy Woods)formData.on instead of .once (Kornel Lesiński)attach("file",null) (Kornel Lesiński)Nothing published for this version
Allow retry() and retry(0) (Alexander Pope)
retry() and retry(0) (Alexander Pope)New .retry(n) method and err.retries (Alexander Pope)
.retry(n) method and err.retries (Alexander Pope)
.retry(n) method and err.retries (Alexander Pope)Nothing published for this version
Fixed "double callback bug" warning on timeouts of gzipped responses
Added .ok(callback) that allows customizing which responses are errors (Kornel Lesiński)
.ok(callback) that allows customizing which responses are errors (Kornel Lesiński).responseType() to Node version (Kornel Lesiński).parse() to browser version (jakepearson)responseType('blob') (Kornel Lesiński)Nothing published for this version
Added `.timeout({response:ms})`, which allows limiting maximum response time independently from total download time (Kornel Lesiński)
.timeout({response:ms}), which allows limiting maximum response time independently from total download time (Kornel Lesiński).end() is called more than once (Kornel Lesiński)response.links to browser version (Lukas Eipert)btoa is no longer required in IE9 (Kornel Lesiński).sortQuery() on URLs without query strings (Kornel Lesiński)ResponseBase (Lukas Eipert)Added support for arrays and bools in .field() (Kornel Lesiński)
.sortQuery() (vicanso).field() (Kornel Lesiński)superagent.Request subclassable without need to patch all static methods (Kornel Lesiński)There are no big breaking changes and the upgrade should be smooth.
There are no big breaking changes and the upgrade should be smooth.
We no longer support Node 0.x. If you're still using Internet Explorer 6 Node 0.x, please please upgrade ASAP, as the old Node isn't even getting security patches any more.
.send() calls mixing Buffer/Blob and JSON data are not possible and will now throw instead of messing up the data..send() data object type check (Fernando Mendes)pfx TLS option with new pfx() method. (Reid Burke)http+unix: schema to support Unix sockets (Yuki KAN)attach options parameter in the Node version (Lapo Luchini).on to .once to prevent possible memory leaks (Matt Blair)xhr.response instead of xhr.responseText to err.rawResponse (Pavel Ayusheev).part()/superagent.Part APIs..body property on internal response object used by unbuffered parsers.
Note: the normal response.body is unaffected..send() calls mixing Buffer/Blob and JSON data are not possible and will now throw instead of messing up the data..send() data object type check (Fernando Mendes)http+unix: schema to support Unix sockets (Yuki KAN)attach options parameter in the Node version (Lapo Luchini)pfx TLS option with new pfx() method. (Reid Burke).on to .once to prevent possible memory leaks (Matt Blair)Nothing published for this version
Nothing published for this version
Nothing published for this version
Enabled .field() to handle objects (Affan Shahid)
.field() to handle objects (Affan Shahid).catch() for more Promise-like interface (Maxim Samoilov, Kornel Lesiński)event.direction in uploads (Kornel Lesiński)on() method (Juan Dopazo)Added timedout property to node Request instance (Alexander Pope)
timedout property to node Request instance (Alexander Pope)null querystring values in node and browser environments. (George Chung)Wait for async parsers to avoid double callback (Kornel Lesiński)
.end() callback don't cause the callback to be called twice (Kornel Lesiński)end callback waits for async parsers to finish (Kornel Lesiński).end() callback don't cause the callback to be called twice (Kornel Lesiński)headers to toJSON() (Tao)Nothing published for this version
Breaking changes are in rarely used functionality, so we hope upgrade will be smooth for most users.
Breaking changes are in rarely used functionality, so we hope upgrade will be smooth for most users.
.parse() method has been renamed to .serialize() to avoid inconsistency with NodeJS version (v1.8.3 supports .serialize() too)'undefined', now their value is '' (empty string) (shura, Kornel Lesiński).redirect event is called after new query string and headers have been set and is allowed to override the request URL (Kornel Lesiński).then() returns a real Promise. Note that use of superagent with promises now requires a global Promise object.
If you target Internet Explorer or Node 0.10, you'll need require('es6-promise').polyfill() or similar.@api private to have _prefixed names (Kornel Lesiński)FormData error events (scriptype)Breaking changes are in rarely used functionality, so we hope upgrade will be smooth for most users.
.parse() method has been renamed to .serialize() for consistency with NodeJS version.'undefined', now their value is '' (empty string) (shura, Kornel Lesiński).redirect event is called after new query string and headers have been set and is allowed to override the request URL (Kornel Lesiński).then() returns a real Promise. Note that use of superagent with promises now requires a global Promise object.
If you target Internet Explorer or Node 0.10, you'll need require('es6-promise').polyfill() or similar.@api private to have _prefixed names (Kornel Lesiński)FormData error events (scriptype)request.head() supports .redirects(5) call (Kornel Lesiński)response event is also emitted when using .pipe()Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed handling of HTTP status 204 with content-encoding: gzip (Andrew Shelton)
vnd+json MIME types (Kornel Lesiński).parse() as .serialize() for forward compatibilityFixed form-data incompatibility with IE9
Extracted common code into request-base class (Peter Lyons)
{type:'auto'} to auth method, which enables browser-native auth types (Jungle, Askar Yusupov)responseType() to set XHR responseType (chris)FormData (Peter Lyons)statusCode to error response when JSON response is malformed (mattdell)Nothing published for this version
Nothing published for this version
Fix case-sensitivity of header fields introduced by a4ddd6a. (Edward J. Jinotti)
Fixed a conflict with express when using npm 3.x (Glenn)
when attaching files, read default filename from the File object (JD Isaacks)
File object (JD Isaacks)direction property to progress events (Joseph Dykstra)stream.pipe(request) (Keith Grennan)this.request() until call this.end() (vicanso)withCredentials to Node API (markdalgleish)delete breaking on ie8 (kenjiokabe)(same as v1.6.0, but needed re-publishing to npm)
(same as v1.6.0, but needed re-publishing to npm)
+json as JSON (Eiryyy)Nothing published for this version
encode array values as key=1&key=2&key=3 etc... (aalpern, Davis Kim)
key=1&key=2&key=3 etc... (aalpern, Davis Kim)del() method as delete() (Aaron Krause)add Request#parse method to client library
fix incorrect content-length of data set to buffer
then functionadd progress events to downlodas
Fix responseType checks without xhr2 and ie9 tests (rase-)
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →