# GraphQL multipart request (file upload)

Middleware and a scalar Upload to add support for GraphQL multipart requests (file uploads via queries and mutations) to various Node.js GraphQL servers.

Repository: https://github.com/jaydenseric/graphql-upload
Canonical: https://ross.abutalabs.com/products/graphql-multipart-request-file-upload
Homepage: https://npm.im/graphql-upload
Language: JavaScript
License: MIT
License Family: permissive
Topics: apollo, graphql, express, koa, node, mjs, npm, esm, maintained
Last push: 2026-08-03T06:47:17+00:00

## Health v2 (maintenance only)
Score: 85/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 95, release rhythm 64, longevity 100
- inputs: {"age_days": 3478, "days_push": 30, "days_rel": 30, "gap_med": 331.5, "n_releases_24m": 3}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1442, forks 138 (observed 2026-08-28T04:04:44.686804+00:00)

## What it is
A terminating Apollo Link for Apollo Client that sends GraphQL multipart requests when variables contain files (FileList, File, or Blob), falling back to regular GraphQL POST or GET requests otherwise. It works alongside the graphql-multipart-request-spec ecosystem, including the graphql-upload server middleware.

## Use cases
- upload files via graphql mutations from react
- send filelist to graphql server with apollo client
- replace httplink with upload-capable apollo link
- implement graphql multipart request spec on the client
- upload blobs and files in react native apps
- handle file uploads in apollo client mutations

## When to choose
- you use Apollo Client and need file uploads in GraphQL variables
- your GraphQL server implements the GraphQL multipart request spec
- you want a drop-in terminating link supporting both uploads and regular queries

## When to avoid
- you don't use Apollo Client
- your server doesn't support the GraphQL multipart request spec
- you need uploads over a non-HTTP transport

## Facets
- artifact type: library
- maturity: active
- function: graphql, file-upload, http-client, middleware
- domain: web-development, frontend, apis, developer-tools
- platform: browser
- tags: apollo-client, apollo-link, graphql-multipart-request, file-upload, esm, nodejs, react, react-native, javascript

## Member repositories
- jaydenseric/graphql-upload (main) score 85
- jaydenseric/apollo-upload-client (sdk) score 85
- jaydenseric/graphql-multipart-request-spec (docs) score 27

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:44.686804+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T04:30:46.344589+00:00, confidence not recorded.
  - readme: https://github.com/jaydenseric/graphql-upload (fetched 2026-08-28T04:04:44.686804+00:00, sha fe52c7740ecd)
  - registry_npm: https://registry.npmjs.org/apollo-upload-client (fetched 2026-08-29T11:32:44.358339+00:00, sha cc07e171c839)
  - registry_npm: https://registry.npmjs.org/graphql-upload (fetched 2026-08-29T11:32:44.360348+00:00, sha ae8ca8d2cc1d)
- Data as of 2026-08-30T08:39:29.467469+00:00.
