{"record":{"id":"6e30b3fa1a7bdc22","repo":"transloadit/uppy","slug":"the-autoretry-option-was-deprecated-and-has-been","errorCode":null,"errorMessage":"The `autoRetry` option was deprecated and has been removed.","messagePattern":"The `autoRetry` option was deprecated and has been removed\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@uppy/tus/src/index.ts","lineNumber":145,"sourceCode":"  requests: RateLimitedQueue\n\n  uploaders: Record<string, tus.Upload | null>\n\n  uploaderEvents: Record<string, EventManager<M, B> | null>\n\n  constructor(uppy: Uppy<M, B>, opts: TusOpts<M, B>) {\n    super(uppy, { ...defaultOptions, ...opts })\n    this.type = 'uploader'\n    this.id = this.opts.id || 'Tus'\n\n    if (opts?.allowedMetaFields === undefined && 'metaFields' in this.opts) {\n      throw new Error(\n        'The `metaFields` option has been renamed to `allowedMetaFields`.',\n      )\n    }\n\n    if ('autoRetry' in opts) {\n      throw new Error(\n        'The `autoRetry` option was deprecated and has been removed.',\n      )\n    }\n\n    /**\n     * Simultaneous upload limiting is shared across all uploads with this plugin.\n     *\n     * @type {RateLimitedQueue}\n     */\n    this.requests =\n      this.opts.rateLimitedQueue ?? new RateLimitedQueue(this.opts.limit)\n    this.#retryDelayIterator = this.opts.retryDelays?.values()\n\n    this.uploaders = Object.create(null)\n    this.uploaderEvents = Object.create(null)\n  }\n\n  /**","sourceCodeStart":127,"sourceCodeEnd":163,"githubUrl":"https://github.com/transloadit/uppy/blob/5d4dedd02a1ac0ae022c75c54aca76558f88e256/packages/@uppy/tus/src/index.ts#L127-L163","documentation":"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.","triggerScenarios":"Instantiating new Tus(uppy, { autoRetry: true }) (or any truthy/falsy value) — mere presence of the key triggers the error.","commonSituations":"Upgrading Uppy from a version where Tus handled retries itself; legacy config files still carrying autoRetry.","solutions":["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)"],"exampleFix":"// before\nnew Tus(uppy, { autoRetry: true })\n// after\nconst uppy = new Uppy({ retryDelays: [0, 1000, 3000, 5000] })\nnew Tus(uppy)","handlingStrategy":"validation","validationCode":"delete opts.autoRetry;\n// move retry config to core\nconst uppy = new Uppy({ retryDelays: [0, 1000, 3000, 5000] })","typeGuard":"const hasRemovedOption = (o: object): o is { autoRetry: unknown } => 'autoRetry' in o","tryCatchPattern":null,"preventionTips":["Read Uppy migration notes before major upgrades","Run a lint/grep for deprecated keys (autoRetry, metaFields) on upgrade"],"tags":["tus","retry","removed-option","breaking-change"],"backgroundTag":"removed-config-option","analyzedSha":"5d4dedd02a1ac0ae022c75c54aca76558f88e256","analyzedAt":"2026-08-28T12:18:41.267Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}