If you’re facing issues integrating with Polkadot — broken APIs, asset mismatches, or unexpected behavior — this may be due to the ongoing Polkadot Asset Hub migration.

This page is your central information hub for understanding what’s happening, why it matters, and how to fix your integration.

⚡ TL;DR: What You Need to Know

Polkadot is migrating key user functionality (staking, governance, balances) off the Relay Chain and onto a dedicated chain: Asset Hub. This change affects how assets and pallets are handled and may break integrations using outdated endpoints or assumptions.

📍Current Status: Asset Hub Migration on Westend

We are currently in the Westend testing phase of the Asset Hub Migration. This stage involves testing asset transfers, governance functionality, and partner integrations in preparation for deployment on Kusama and Polkadot.

👉 View the full migration timeline

❗ Why Is My Integration Failing?

If you’re seeing broken functionality in your Polkadot integration — such as missing balances, failed staking transactions, or unresponsive governance calls — the root cause is likely the ongoing Polkadot Asset Hub Migration.

As of late 2024, Polkadot began migrating critical user-facing pallets — specifically Staking, Governance (incl. Treasury), and Balancesfrom the Relay Chain to Asset Hub, a dedicated system parachain designed to simplify and improve the developer experience.

Here’s why that breaks your current integration 🔁

Your app is still pointing to the Relay Chain

Many applications — especially wallets, dashboards, and exchange integrations — are hardcoded to interact with the Relay Chain. After the migration, those endpoints no longer support staking, balances, or governance operations.

💸 Asset states have moved

After migration, user account states, balances, and locks are no longer stored on the Relay Chain. If your integration reads from outdated storage paths, it will return null data or outdated balances.

⚠️ Outdated SDKs and APIs

If you’re using older versions of the Substrate SDK, XCM libraries, or custom RPCs, you may be calling logic that has been call-filtered or deprecated. In particular: