Troubleshooting
No network events captured
- Ensure the provider config
metadata.urlRegexmatches the actual request and thatinterceptConfigallows XHR/fetch/HTML (SDK defaults do). - Some providers require a UI action first; use
userInput(provider config) or callinitiate()withinitialAction.
Session appears expired
- Use
isSessionActive(platform, action)before showing UI. If false, callauthenticate()to refresh cookies. - Call
clearSession({ iosAlsoClearWebKitStore: true })to reset.
Proof generation hangs or times out
- Increase
rpcTimeoutonZkp2pProvider. - Call
resetState()to cancel native tasks and remount the RPC bridge. - On very low‑memory devices, concurrency is reduced automatically; try again after closing background apps.
Auth WebView gets stuck
- Use
closeAuthWebView()and thenauthenticate()again. - Verify
mobile.loginselectors still match the provider’s DOM; update your provider JSON if the site changed.
Android circuits not found
- The SDK’s Gradle task copies circuits into library assets automatically. If customizing, ensure your app packages
gnark-circuits/pk.*andgnark-circuits/r1cs.*in its assets.
iOS pod errors
- Run
pod installinsideios/. If building with new architecture, ensure CocoaPods + Xcode are up to date.
Wrong chain or unsupported chainId
- The client validates
chainId; use Base mainnet8453(and Base Sepolia for testing). Others must be added in the SDK.
Missing API key or wallet client
- Full Mode methods throw if
apiKey/walletClientare absent. Use Proof‑Only mode or provide both.
Custom user agent or cookies
- Providers may specify
mobile.userAgentandmobile.includeAdditionalCookieDomains; verify your chosen provider template.
Debug logging
import { setLogLevel } from '@zkp2p/zkp2p-react-native-sdk';
setLogLevel('debug');