getAccount, getBalances, and sendPayment in src/services/stellar.ts call the Horizon SDK with no explicit request timeout and no retry/backoff strategy. On mobile networks, a single slow or dropped request currently means the entire balance load or payment attempt just hangs or fails outright with no resilience — this is materially worse on mobile than it would be on a stable server connection, which is exactly the environment this SDK usage pattern seems to assume.
Definition of done:
- Explicit timeout on every Horizon call
- Retry-with-backoff for idempotent reads (
getAccount/getBalances); explicit non-retry (with clear reasoning) for sendPayment's submission step, since blind retry of a submit risks double-processing perception even though Horizon itself is idempotent per-transaction-hash
- Test simulating a slow/hanging Horizon response and asserting bounded wait time
Before opening a PR for this issue, read CONTRIBUTING.md.
This is not a starter-issue. The Definition of done above is the full
acceptance criteria, not a subset to sample from — a PR that addresses part
of it is an unfinished issue, not a smaller one. Your PR must include, in
the PR description itself:
PRs missing these will be sent back before review, not reviewed and rejected — please do this up front.
getAccount,getBalances, andsendPaymentinsrc/services/stellar.tscall the Horizon SDK with no explicit request timeout and no retry/backoff strategy. On mobile networks, a single slow or dropped request currently means the entire balance load or payment attempt just hangs or fails outright with no resilience — this is materially worse on mobile than it would be on a stable server connection, which is exactly the environment this SDK usage pattern seems to assume.Definition of done:
getAccount/getBalances); explicit non-retry (with clear reasoning) forsendPayment's submission step, since blind retry of a submit risks double-processing perception even though Horizon itself is idempotent per-transaction-hashBefore opening a PR for this issue, read CONTRIBUTING.md.
This is not a starter-issue. The Definition of done above is the full
acceptance criteria, not a subset to sample from — a PR that addresses part
of it is an unfinished issue, not a smaller one. Your PR must include, in
the PR description itself:
PRs missing these will be sent back before review, not reviewed and rejected — please do this up front.