ComposioHQ/composio · error · Error
Failed to initialize Pusher client
Error message
Failed to initialize Pusher client: ${errorMessage} What it means
A catch-all thrown when initializing the pusher-js realtime client fails for any reason (import failure, constructor error, auth handler misconfiguration). The underlying cause is appended to the message. It wraps every synchronous failure inside getPusherClient.
Solutions
- Check the appended underlying message — it names the real cause
- Ensure pusher-js is installed and resolvable in your bundle (check dynamic import support in your bundler/runtime)
- Verify baseURL and apiKey passed to the SDK are valid, non-empty strings
- If in a non-browser environment, ensure a websocket implementation is available or avoid realtime trigger APIs
Defensive patterns
Strategy: try-catch
Validate before calling
if (!baseURL?.startsWith('http') || !apiKey) throw new Error('baseURL/apiKey required'); Try / catch
try {
return await PusherUtils.getPusherClient(baseURL, apiKey);
} catch (e) {
throw new Error(`Realtime init failed: ${e instanceof Error ? e.message : String(e)}`);
} Prevention
- Always pass valid baseURL and apiKey to SDK initialization
- Verify pusher-js resolves in your bundle after bundler config changes
- Surface the appended underlying message in your error reporting
When it happens
Trigger: Calling getPusherClient(baseURL, apiKey) when the dynamic import('pusher-js') fails (package not installed/bundled in edge runtimes), when baseURL/apiKey are malformed so the auth endpoint URL is invalid, or when the PusherClient constructor throws.
Common situations: Bundlers that break the dynamic pusher-js import; missing pusher-js dependency in a custom build; passing an empty or malformed baseURL; SSR/edge environments where pusher-js cannot construct a websocket client.
Related errors
- Pusher client not initialized
- Composio client is not initialized. Please initialize it…
- executeToolFn is not set
- Failed to bind chunked events
- Failed to subscribe to triggers
AI-assisted analysis of ComposioHQ/composio@64b1b85502 (2026-08-28).
Data as JSON: /api/errors/a86c0588e07a5504.
Report an issue: GitHub.
Appendix: source
Thrown at ts/packages/core/src/utils/pusher.ts:108
.catch((error: unknown) => {
logger.error('Pusher auth request failed:', error);
callback(error instanceof Error ? error : new Error(String(error)), null);
});
},
},
});
// Add connection error handling
PusherUtils.pusherClient.connection.bind('error', (err: Error) => {
logger.error('Pusher connection error:', err);
throw new Error(`Pusher connection error: ${err.message}`);
});
}
return PusherUtils.pusherClient;
} catch (error: unknown) {
const errorMessage = error instanceof Error ? error.message : String(error);
logger.error('Failed to initialize Pusher client:', error);
throw new Error(`Failed to initialize Pusher client: ${errorMessage}`);
}
}
/**
* Subscribes to a Pusher channel and binds an event to a callback function.
* @param {string} channelName - The name of the channel to subscribe to.
* @param {string} event - The event to bind to the channel.
* @param {(data: Record<string, unknown>) => void} fn - The callback function to execute when the event is triggered.
* @returns {PusherClient} The Pusher client instance.
*/
static async subscribe(
channelName: string,
event: string,
fn: (data: Record<string, unknown>) => void
): Promise<void> {
try {
await PusherUtils.pusherClient.subscribe(channelName).bind(event, fn);
} catch (error) {View on GitHub (pinned to 64b1b85502)