Skip to content

Events

Subscribe to Coinbase lifecycle signals. Prefer reading state with getters when you only need the current value (for example getCooldown() instead of only listening to ticks).

When to use

Side effects: navigate to success, send the user back to Connect, update a countdown, toast on OAuth failure.

Methods

MethodEvent / payloadWhen
onInitializationStartedcoinbase:initializationStartedModule init begins
onInitializationCompletedcoinbase:initializationCompletedInit finished ({ isConnected })
onConnectedcoinbase:connectedOAuth succeeded
onDisconnectedcoinbase:disconnectedDisconnected
onSessionEnsuredcoinbase:sessionEnsuredensureSession() successfully validated / refreshed the token
onSessionExpiredcoinbase:sessionExpiredToken no longer valid
onWithdrawalCompletedcoinbase:withdrawalCompletedWithdraw finished
onCooldownChangedcoinbase:cooldownChangedCoinbaseCooldownCooldown begin / tick / end
onPopupOpenChangedvia oauth:popupOpenChangedLogin popup open/close
onOAuthErrorvia oauth:errorPopup blocked / closed / auth error

Each returns an unsubscribe function. You can also use client.on('coinbase:…') — see Events (Core).

Example

ts
const offs = [
  client.coinbase.onConnected(() => {
    /* show balances */
  }),
  client.coinbase.onDisconnected(() => {
    /* show connect */
  }),
  client.coinbase.onSessionExpired(() => {
    /* reconnect */
  }),
  client.coinbase.onWithdrawalCompleted(() => {
    /* success screen */
  }),
  client.coinbase.onCooldownChanged(({ isInCooldown, remainingMs }) => {
    /* Start button countdown — or use getCooldown() snapshots */
  }),
  client.coinbase.onOAuthError(({ error }) => {
    /* popup blocked / closed */
  }),
];

// later
offs.forEach(off => off());