transloadit/uppy · error · Error

The `autoRetry` option was deprecated and has been removed.

Error message

The `autoRetry` option was deprecated and has been removed.

What it means

The Tus plugin no longer supports autoRetry; retry behavior was moved into Uppy core. The constructor throws when autoRetry is present in options to prevent silent behavior changes after upgrade.

Source

Thrown at packages/@uppy/tus/src/index.ts:145

  requests: RateLimitedQueue

  uploaders: Record<string, tus.Upload | null>

  uploaderEvents: Record<string, EventManager<M, B> | null>

  constructor(uppy: Uppy<M, B>, opts: TusOpts<M, B>) {
    super(uppy, { ...defaultOptions, ...opts })
    this.type = 'uploader'
    this.id = this.opts.id || 'Tus'

    if (opts?.allowedMetaFields === undefined && 'metaFields' in this.opts) {
      throw new Error(
        'The `metaFields` option has been renamed to `allowedMetaFields`.',
      )
    }

    if ('autoRetry' in opts) {
      throw new Error(
        'The `autoRetry` option was deprecated and has been removed.',
      )
    }

    /**
     * Simultaneous upload limiting is shared across all uploads with this plugin.
     *
     * @type {RateLimitedQueue}
     */
    this.requests =
      this.opts.rateLimitedQueue ?? new RateLimitedQueue(this.opts.limit)
    this.#retryDelayIterator = this.opts.retryDelays?.values()

    this.uploaders = Object.create(null)
    this.uploaderEvents = Object.create(null)
  }

  /**

View on GitHub (pinned to 5d4dedd02a)

Solutions

  1. Delete autoRetry from Tus options and rely on core retry: set retryDelays on Uppy core (e.g. new Uppy({ retryDelays: [0, 1000, 3000, 5000] }) or per-upload getResponseData/retry logic)

Example fix

// before
new Tus(uppy, { autoRetry: true })
// after
const uppy = new Uppy({ retryDelays: [0, 1000, 3000, 5000] })
new Tus(uppy)
Defensive patterns

Strategy: validation

Validate before calling

delete opts.autoRetry;
// move retry config to core
const uppy = new Uppy({ retryDelays: [0, 1000, 3000, 5000] })

Type guard

const hasRemovedOption = (o: object): o is { autoRetry: unknown } => 'autoRetry' in o

Prevention

When it happens

Trigger: Instantiating new Tus(uppy, { autoRetry: true }) (or any truthy/falsy value) — mere presence of the key triggers the error.

Common situations: Upgrading Uppy from a version where Tus handled retries itself; legacy config files still carrying autoRetry.

Related errors


AI-assisted analysis of transloadit/uppy@5d4dedd02a (2026-08-28). Data as JSON: /api/errors/6e30b3fa1a7bdc22. Report an issue: GitHub.