[bug]: MaxListenersExceededWarning: Possible EventEmitter memory leak detected
edenmeshulam opened this issue · 2 comments
Description
useEffect(() => {
if (
copyDialog ||
approvalModal ||
signTypedDataModal ||
signModal ||
sendTransactionModal
) {
web3wallet.on('session_proposal', onSessionProposal);
web3wallet.on('session_request', onSessionRequest);
}
}, [
WCURI,
approvalModal,
copyDialog,
signModal,
signTypedDataModal,
sendTransactionModal,
requestEventData,
requestSession,
onSessionProposal,
onSessionRequest,
successPair,
]);
This code example is causing a multiple event listeners error, why do we need to call this event every state change?
when I call that event once time after initializing it works well without the error, but after some messages are received the connect stops receiving messages and I need to restart the app.
Issue Environment
- dapps/v2Explorer
- wallets/rn_cli_wallet
- wallets/rn_cli_wallet_068_5
- wallets/expo_wallet
- wallets/web3wallet_tutorial
- In my own code
Output of npx react-native info
System:
OS: macOS 13.4.1
CPU: (10) arm64 Apple M1 Pro
Memory: 108.92 MB / 32.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 16.20.0 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/local/bin/yarn
npm: 8.19.4 - /usr/local/bin/npm
Watchman: 2023.09.04.00 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4
Android SDK: Not Found
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9514443
Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild
Languages:
Java: 17.0.6 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.2 => 17.0.2
react-native: ^0.68.0 => 0.68.7
Steps to reproduce
Call the session_proposal and session_request events once only after the initialization.
then call some message a couple of times and after some time it stops working,
Snack, code example, screenshot, or link to a repository
const onInitialize = useCallback(async () => {
try {
await createWeb3Wallet();
if (web3wallet) {
web3wallet.on('session_proposal', onSessionProposal);
web3wallet.on('session_request', onSessionRequest);
web3wallet.on('session_delete', onSessionDelete);
setInitialized(true);
}
} catch (err: unknown) {
console.log('Error for initializing', err);
}
}, []);
Any news ?
@edenmeshulam i think it's related to this: https://github.com/orgs/WalletConnect/discussions/3368#discussioncomment-6710452
Also, please check wallets/rn_cli_wallet
implementation as it contains some refactors.
If its still happening, feel free to reach again with an MRE and we'll reopen this.