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 (fires on every live client)
onDisconnectedcoinbase:disconnectedDisconnected (fires on every live client)
onSessionEnsuredcoinbase:sessionEnsuredensureSession() successfully validated / refreshed the token (fires on every live client)
onSessionExpiredcoinbase:sessionExpiredToken no longer valid (fires on every live client)
onWithdrawalCompletedcoinbase:withdrawalCompletedWithdraw finished
onCooldownChangedcoinbase:cooldownChanged → CoinbaseCooldownCooldown 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())