# What changed in apollo-upload-client

> 44 changes in apollo-upload-client 9 to 20 from its official release notes, upgrade guides and advisories: 25 breaking, 5 new APIs and options. Each one cited. Sources checked 2026-10-26. HTML: https://unstale.sh/npm/apollo-upload-client/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## apollo-upload-client 20

### Breaking changes

- Supported Node.js versions are now ^22.13.0 || ^24.0.0 || >=26.0.0. (20.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v20.0.0)

### Fixes and other changes

- Updated the extract-files dependency to v14. (20.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v20.0.0)
- The peer dependency requirement now accepts graphql ^16.0.0 or ^17.0.0. (20.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v20.0.0)

## apollo-upload-client 19

### Breaking changes

- The peer dependency requirement is now ^4.0.0. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)
- The createUploadLink function was removed; use the exported UploadHttpLink class instead. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)
- Modules use the TypeScript v5.5+ JSDoc tag @import to import types; upgrading TypeScript to v5.5+ is required to migrate. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)
- Supported Node.js versions are now ^20.9.0 || >=22.0.0. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)
- A new peer dependency at ^7.3.0 is required by Apollo Client v4. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)
- The upload terminating Apollo Link is now the exported UploadHttpLink class, which extends ApolloLink. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)

### New APIs and options

- Added the includeUnusedVariables option, defaulting to false, to toggle including unused GraphQL variables in the request. (19.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v19.0.0)

## apollo-upload-client 18

### Breaking changes

- The package main index module was removed; import public modules through deep import paths instead. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)
- Public module deep import paths are shortened by removing /public/, and the module is available at the package root. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)
- It no longer matches ReactNativeFile instances; React Native projects can use a custom function with createUploadLink’s isExtractableFile option. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)
- Supported Node.js versions are now ^18.15.0 || >=20.4.0. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)
- React Native is no longer supported out of the box; projects unable to use standard globals can provide a custom class and matching function. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)
- The class is no longer exported or matched by isExtractableFile. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)

### New APIs and options

- The new print option customizes how the GraphQL query or mutation AST prints to a string for transport, like the HttpLink option. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)

### Tooling

- Types are now implemented via JSDoc comments in the ECMAScript modules; published @types/apollo-upload-client types should no longer be used. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)

### Fixes and other changes

- Objects in GraphQL operations that are not Object instances, such as Object.create(null), are now deep cloned when searching for extractable files. (18.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v18.0.0)

## apollo-upload-client 17

### Breaking changes

- Supported Node.js versions are now ^12.22.0 || ^14.17.0 || >= 16.0.0. (17.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v17.0.0)
- The ./package export was removed; use the full package.json filename in a require path. (17.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v17.0.0)

### Behavior and default changes

- The graphql peer dependency range is now 14 - 16. (17.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v17.0.0)

## apollo-upload-client 16

### Fixes and other changes

- Reverted the more specific package main field path, changing the package entry point path. (16.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v16.0.0)

## apollo-upload-client 15

### Breaking changes

- Changed from a dependency to a peer dependency. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)
- Deep require paths within this public subpath must now include the `.js` file extension. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)
- Internet Explorer is no longer supported. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)
- Supported Node.js versions are now ^12.20 || >= 14.13. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)

### Performance

- The abort event listener is added with `once: true` to avoid a possible memory leak. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)

### Tooling

- Added a package script that checks whether the readme API docs are up to date with the source JSDoc. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)

### Fixes and other changes

- If the given abort controller signal is already aborted, the fetch is now immediately aborted. (15.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v15.0.0)

## apollo-upload-client 14

### Breaking changes

- A package exports field with conditional exports supports native ESM in Node.js and keeps internal code private; previously undocumented deep imports must be rewritten using the newly documented paths. (14.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v14.0.0)
- Supported Node.js versions are now ^10.17.0 || ^12.0.0 || >= 13.7.0. (14.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v14.0.0)

### Tooling

- Added graphql as a peer dependency to support a wider range of package managers. (14.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v14.0.0)

### Fixes and other changes

- Support was added for @apollo/client v3. (14.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v14.0.0)

## apollo-upload-client 13

### Breaking changes

- The minimum supported Node.js version changed from v8.10+ to v10+. (13.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v13.0.0)

### New APIs and options

- Added as a createUploadLink option. (13.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v13.0.0)
- File uploads are now supported from a server environment. (13.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v13.0.0)

## apollo-upload-client 12

### Breaking changes

- The supported Node.js version increased from v8.5+ to v8.10+. (12.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v12.0.0)

## apollo-upload-client 11

### Breaking changes

- Supported Node.js versions changed from v6+ to v8.5+. (11.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v11.0.0)

### New APIs and options

- Added support for Apollo Engine client awareness. (11.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v11.0.0)

## apollo-upload-client 10

### Behavior and default changes

- A file used in multiple locations of an operation is uploaded only once. (10.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v10.0.0)

## apollo-upload-client 9

### Breaking changes

- The package module entry and ESM build were removed; the package does not support native ESM for Node.js. (9.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v9.0.0)

### Performance

- The package is marked side-effect free for bundlers, enabling tree-shaking. (9.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v9.0.0)

### Behavior and default changes

- apollo-link is now a dependency instead of a peer dependency, changing how it is installed alongside the package. (9.0.0) — [release notes](https://github.com/jaydenseric/apollo-upload-client/releases/tag/v9.0.0)
