{"record":{"id":"fe309385f5d27578","repo":"FuelLabs/fuels-ts","slug":"transaction-squeezed-out","errorCode":"TRANSACTION_SQUEEZED_OUT","errorMessage":"Transaction Squeezed Out with reason: ${statusChange.reason}","messagePattern":"Transaction Squeezed Out with reason: (.+?)","errorType":"exception","errorClass":"FuelError","httpStatus":null,"severity":"warning","filePath":"packages/account/src/providers/transaction-response/transaction-response.ts","lineNumber":471,"sourceCode":"    }\n\n    this.waitingForStreamData = true;\n\n    const subscription =\n      this.submitTxSubscription ??\n      (await this.provider.operations.statusChange({\n        transactionId: this.id,\n        includePreConfirmation: true,\n      }));\n\n    for await (const sub of subscription) {\n      // Handle both types of subscriptions\n      const statusChange = 'statusChange' in sub ? sub.statusChange : sub.submitAndAwaitStatus;\n      this.status = statusChange;\n\n      // Transaction Squeezed Out\n      if (statusChange.type === 'SqueezedOutStatus') {\n        throw new FuelError(\n          ErrorCode.TRANSACTION_SQUEEZED_OUT,\n          `Transaction Squeezed Out with reason: ${statusChange.reason}`\n        );\n      }\n\n      if (\n        statusChange.type === 'PreconfirmationSuccessStatus' ||\n        statusChange.type === 'PreconfirmationFailureStatus'\n      ) {\n        this.preConfirmationStatus = statusChange;\n        this.resolveStatus('preConfirmation');\n        // We should end the subscription here if we are not waiting for the confirmation status\n        const pendingConfirmationResolvers = this.statusResolvers.get('confirmation');\n        if (!pendingConfirmationResolvers) {\n          this.waitingForStreamData = false;\n          break;\n        }\n      }","sourceCodeStart":453,"sourceCodeEnd":489,"githubUrl":"https://github.com/FuelLabs/fuels-ts/blob/b3f37c91aca4aa9d5e4c0d3967f66237190826ea/packages/account/src/providers/transaction-response/transaction-response.ts#L453-L489","documentation":"Thrown inside `TransactionResponse.waitForPreConfirmation()`/status subscription loop when the node reports a `SqueezedOutStatus` for the transaction. 'Squeezed out' means the node dropped the transaction from its pool before inclusion (e.g. due to a competing tx, low gas price, or expiry). The error carries the node-supplied `reason` string and aborts the await.","triggerScenarios":"Awaiting a transaction response (`await txResponse.waitForPreConfirmation()` or `submitAndAwaitStatus`) and the fuel node emits `SqueezedOutStatus` on the status-change subscription stream before a Success/Failure.","commonSituations":"Gas price too low relative to competing transactions; transaction TTL expired in the mempool; same nonce reused by a faster transaction; node restart or congestion dropped pending txs; submitting many txs from one account without nonce management.","solutions":["Retry submission with a higher gas price / max fee.","Ensure the nonce is not already consumed by another in-flight transaction.","Catch TRANSACTION_SQUEEZED_OUT specifically and resubmit a fresh transaction request.","Check node mempool status and congestion before bulk submission."],"exampleFix":"// before\nawait txResponse.waitForPreConfirmation(); // throws on squeeze\n// after\ntry {\n  await txResponse.waitForPreConfirmation();\n} catch (e) {\n  if (e.code === ErrorCode.TRANSACTION_SQUEEZED_OUT) {\n    txResponse = await sender.sendTransaction(txRequest, { estimateTxDependencies: false });\n    await txResponse.waitForPreConfirmation();\n  } else { throw e; }\n}","handlingStrategy":"retry","validationCode":"null","typeGuard":"null","tryCatchPattern":"import { ErrorCode } from '@fuel-ts/errors';\ntry {\n  await response.waitForPreConfirmation();\n} catch (e) {\n  if (e.code === ErrorCode.TRANSACTION_SQUEEZED_OUT) {\n    response = await account.sendTransaction(request, { estimateTxDependencies: false });\n    await response.waitForPreConfirmation();\n  } else throw e;\n}","preventionTips":["Use competitive gas prices and correct nonces to avoid squeezes.","Wrap status waits in try/catch for TRANSACTION_SQUEEZED_OUT and resubmit.","Avoid submitting many txs from one account without nonce coordination."],"tags":["network","transaction","mempool","retry","runtime"],"backgroundTag":null,"analyzedSha":"b3f37c91aca4aa9d5e4c0d3967f66237190826ea","analyzedAt":"2026-08-12T20:30:56.448Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}