Skip to main content

Frequently Asked Questions

Common questions and solutions for build issues, authentication, transactions, and debugging with the TypeScript SDK.

Build & Environment

Modern bundlers don’t include Node.js polyfills by default.Vite:
Next.js / Create React App:
Add global polyfill to your bundler config:
Ensure tsconfig.json uses modern module resolution:
Import from modular packages instead of the umbrella SDK:
If you see elliptic package errors, add to next.config.js:
Import modular packages instead of the umbrella package:
Using modular packages can significantly reduce your bundle size by importing only what you need.
Clear your cache and reinstall dependencies:
For Vite projects:
For Next.js projects:
For framework-specific bundler configuration, see the Framework Setup tabs in the overview.

Regional Support

The Immutable Game SDK supports only the regions that Immutable Passport supports.Passport is a globally available product. However, our wallet infrastructure is subject to the regulation of the US Department of the Treasury’s Office of Foreign Assets Control (“OFAC”). OFAC administers and enforces comprehensive and targeted economic and trade sanctions programs on multiple countries and regions.Users attempting to access Passport in any of the regions under OFAC sanction will have their access blocked and will be unable to use our product. Additionally, components of Passport’s infrastructure also rely on technology provided by Magic, which maintains further details regarding unsupported regions on their website here.

Authentication

The redirectUri in your code must exactly match what’s configured in Hub.Common mismatches:
  • http vs https
  • Trailing slash (/callback vs /callback/)
  • Port number differences
  • Different paths
The redirect URI must match exactly including trailing slashes and port numbers.
Verify the following:
  1. clientId matches your Hub configuration
  2. You’re using the correct environment (Sandbox vs Production)
  3. publishableKey is set correctly
Ensure loginCallback() is called on your redirect URI page:

Transactions

User cancelled the transaction in the Passport popup. Handle this gracefully:
The user doesn’t have enough IMX for the transaction + gas fees.
Direct users to fund their wallet via the Checkout widgets.
Usually caused by pending transactions. Wait for pending transactions to confirm:

Performance & Debugging

Initialize once and reuse the instance:
Use the singleton pattern to initialize SDK instances once and reuse them throughout your application.
Enable debug logs in the browser console:
Then refresh the page to see SDK debug output.
SDK calls go to:
  • Sandbox: api.sandbox.immutable.com
  • Production: api.immutable.com
Check the browser Network tab for failed requests and error responses.

Integration & Usage

viem has built-in Immutable Chain support:
Use @imtbl/webhook to verify incoming webhooks from Immutable:
For browser-only applications without a build step:
CDN deployment is useful for quick prototypes and static sites. For production applications, use npm packages with proper bundling.
Requires TypeScript 5.0+ with moduleResolution: "bundler" in tsconfig.json.
Breaking Change: V2 SDK uses Ethers.js v6 (upgraded from v5). If your application uses Ethers.js, you must migrate. Key changes:
  • WrappedBrowserProvider for Checkout SDK
  • passport.connectEvm() is now async — must await before passing to Checkout
  • See Ethers.js v6 migration guide for details

Still Need Help?

TypeScript SDK

Complete TypeScript SDK documentation

GitHub Issues

Report TypeScript SDK issues

Player Support

Contact player support

Documentation

Browse all documentation