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.

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.

Appendix: 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)