BuidlZone-Labs/zicket-web
Wallet SDK Caches First Transaction Hash Indefinitely
Closed
#175 opened on Jul 29, 2026
Stellar Wavebugfrontendhelp wantedweb3
Repository metrics
- Stars
- (4 stars)
- PR merge metrics
- (PR metrics pending)
Description
Category
Bug
Priority
High
Description
In lib/walletSdk.ts, loadPromise stores the resolved dynamic import promise globally in a module variable. Once loadWalletSDK() resolves, subsequent purchases or wallet connection triggers return the exact same cached mock transaction hash string forever.
Evidence from lib/walletSdk.ts#L30-L57:
let loadPromise: Promise<string> | null = null;
export async function loadWalletSDK(): Promise<string> {
if (!loadPromise) {
loadPromise = new Promise<string>(...);
}
return loadPromise;
}
Proposed Solution
- Separate SDK module loading from transaction execution.
- Cache the SDK instance, but execute transaction signing dynamically per payment request so each transaction receives a unique hash.
Acceptance Criteria
- Wallet SDK package dynamically loads once.
- Every transaction signing request generates a unique transaction hash.
- Failed transactions can be retried without stale hash collisions.
Files
lib/walletSdk.ts