uppy/packages/@uppy/companion-client
Prakash 7ac262374f
@uppy/companion-client: fix stale websocket connection (#6269)
fixes #6181

`uploadRemoteFile()` now treats one remote upload attempt as a single
queue-owned unit. Instead of queueing “request token” and “open
websocket / wait for upload” as two separate jobs, it now:

  - acquires one queue slot
  - reuses serverToken if resuming, otherwise requests a new
    token
  - immediately proceeds to the websocket/upload phase within
    that same admitted attempt

That removes the stale-token race where Companion starts its 60s
socket-wait timer before the client’s websocket phase has actually been
admitted by the queue. Retries still reacquire the queue per attempt,
and existing abort/cancel behavior is
preserved.

refer
https://github.com/transloadit/uppy/issues/6181#issuecomment-4295036192
for more context about the bug
2026-04-30 01:54:15 +05:30
..
src @uppy/companion-client: fix stale websocket connection (#6269) 2026-04-30 01:54:15 +05:30
.npmignore meta: exclude tsconfig files from npm bundles (#4916) 2024-02-13 23:21:08 +01:00
CHANGELOG.md [ci] release (#6011) 2025-10-17 20:24:52 +02:00
LICENSE rename 'server-utils' to 'companion-client' 2018-07-22 18:53:57 +01:00
package.json [ci] release (#6011) 2025-10-17 20:24:52 +02:00
README.md Fix links (#5492) 2024-10-29 13:54:00 +01:00
tsconfig.build.json From Babel to TS (#5792) 2025-06-30 16:12:26 +02:00
tsconfig.json Migrate from Eslint/Prettier/Stylelint to Biome (#5794) 2025-07-01 14:55:41 +02:00
turbo.json Fix turbo race condition (#5839) 2025-07-23 10:49:11 +02:00

@uppy/companion-client

Uppy logo: a smiling puppy above a pink upwards arrow

npm version CI status for Uppy tests CI status for Companion tests CI status for browser tests

Client library for communication with Companion. Intended for use in Uppy plugins.

Uppy is being developed by the folks at Transloadit, a versatile file encoding service.

Example

import Uppy from '@uppy/core'
import { Provider, RequestClient, Socket } from '@uppy/companion-client'

const uppy = new Uppy()

const client = new RequestClient(uppy, {
  companionUrl: 'https://uppy.mywebsite.com/',
})
client.get('/drive/list').then(() => {})

const provider = new Provider(uppy, {
  companionUrl: 'https://uppy.mywebsite.com/',
  provider: providerPluginInstance,
})
provider.checkAuth().then(() => {})

const socket = new Socket({ target: 'wss://uppy.mywebsite.com/' })
socket.on('progress', () => {})

Installation

Unless you are writing a custom provider plugin, you do not need to install this.

$ npm install @uppy/companion-client

Documentation

Documentation for this plugin can be found on the Uppy website.

License

The MIT License.