diff --git a/.changeset/nice-baths-design.md b/.changeset/nice-baths-design.md
new file mode 100644
index 0000000..385876f
--- /dev/null
+++ b/.changeset/nice-baths-design.md
@@ -0,0 +1,7 @@
+---
+"@everipedia/iq-login": patch
+---
+
+Add `useEnsureCorrectChain` hook to standardize wallet network enforcement in dApps.
+
+This hook introduces a unified status state machine (`idle` → `wrong-network` → `switching` → `correct`) for managing connected wallet chain state. It includes utilities for programmatic network switching, dismissal handling, and an optional `onStatusChange` callback for reacting to status transitions. Documentation has been added to the README with usage examples and API reference.
diff --git a/README.md b/README.md
index 9a53b0b..323b3df 100644
--- a/README.md
+++ b/README.md
@@ -144,6 +144,82 @@ if (token && address) {
}
```
+## 🔗 Chain Enforcement Hook
+
+Use `useEnsureCorrectChain` to ensure the connected wallet is on the correct network. It exposes a single `status` flow instead of multiple booleans:
+
+```
+idle → wrong-network → switching → correct
+```
+
+| Status | Meaning |
+|---|---|
+| `"idle"` | Wallet not connected or state dismissed |
+| `"wrong-network"` | Connected to an unsupported chain |
+| `"switching"` | Chain switch in progress |
+| `"correct"` | On the required chain |
+
+### Basic Usage
+
+```tsx
+import { useEnsureCorrectChain } from '@everipedia/iq-login/client';
+
+function MyComponent() {
+ const { status, switchToCorrectChain, targetChain, dismiss } = useEnsureCorrectChain({
+ requiredChainId: 252, // e.g. Fraxtal
+ });
+
+ if (status === "wrong-network") {
+ return (
+