Skip to content

feat: Robust transaction error-recovery UX #628

@joelpeace48-cell

Description

@joelpeace48-cell

Background & current state

Failed or re-prompt-needed transactions can leave users stuck. errorMapping.js + TransactionStatus.jsx exist, but there's no consistent, actionable recovery UX per error class (rejected, expired, insufficient fee, RPC down, contract revert).

Goal

Provide robust transaction error-recovery UX: each mapped error class offers a clear recovery action (retry, switch wallet, add funds, explorer link).

Technical design

  • Extend errorMapping.js to classify errors into actionable categories with recommended recovery actions + copy. TransactionStatus.jsx renders the action(s) (retry, switch wallet, view on explorer, top-up).
  • Tie into sponsored tx (NEW-020) for fee issues and circuit-breaker (NEW-037) degraded messaging.

Edge cases

  • Unknown error → generic recovery + report option.
  • Expired auth entry → re-sign path.
  • RPC degraded → "try again shortly" + status.
  • User-rejected → friendly re-prompt.

Task breakdown

  • Error classification + recovery action map.
  • Render actions in TransactionStatus.
  • Hooks for retry/switch-wallet/top-up/explorer.
  • Tests across error classes.

Acceptance criteria

  • Each mapped error class offers a relevant recovery action.

Testing & verification

  • Tests simulating each error class → correct action shown.

Out of scope

  • Backend error taxonomy (separate).

Dependencies / related

  • Builds on errorMapping.js; pairs with NEW-020/037/106.

Difficulty: medium · Effort: M · stellar

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions