Skip to content

Harden cross-chain guild exploration against per-chain RPC failures #245

Description

@Lakes41

Difficulty: Advanced
Type: performance

Background
"Cross-Chain Support: Explore guild configurations and role requirements across supported EVM networks" is a checked-in Key Feature, implying the app already queries multiple EVM networks for guild/role data via @guildpass/sdk.

Problem
It's not evident the app handles a single chain's RPC being slow or unavailable gracefully — if guild data is aggregated across chains and one chain's lookup hangs or errors, it likely blocks or breaks the entire guild-exploration view rather than degrading gracefully for just that chain's data.

Expected outcome
When exploring guild configurations across chains, a failure or timeout on any single chain's data source degrades gracefully: that chain's section shows a clear "unavailable" state with a retry option, while data from other chains still renders normally, and the overall screen never blocks indefinitely on one failing chain.

Suggested implementation

  • Identify the cross-chain data-fetching logic (likely a set of parallel @guildpass/sdk / TanStack Query calls keyed by chain) and ensure each chain's query is independent (Promise.allSettled-style handling, or separate TanStack Query hooks per chain) rather than one combined promise that fails entirely if any chain errors.
  • Add a per-chain timeout so a hanging RPC doesn't block the whole screen indefinitely.
  • Add a per-chain "unavailable, tap to retry" UI state distinct from a global loading/error state.
  • Add tests simulating one chain succeeding and another failing/timing out, asserting the UI renders partial results correctly.

Acceptance criteria

  • A single failing/slow chain never blocks data from other chains from rendering
  • Each chain has an independent, retryable failure state
  • Timeout behavior is configurable and tested
  • Verified with at least a two-chain failure simulation in tests

Likely affected files/directories

  • src/ (guild/cross-chain data hooks)
  • app/ (guild exploration screens)

Metadata

Metadata

Assignees

Labels

GrantFox OSSGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesOfficial Campaign | FWC26Official FWC26 campaign issue — eligible for campaign scoring and rewardsadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortperformancePerformance optimization or latency/throughput improvement work

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions