fix(ios): Reset plugin listeners when WebView process is terminated #7905
+10
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #7810
This fixes an issue where, after the native
WebView
process is terminated, some messages from Native -> JS fail to be delivered to the JS side. In our production app, the important messages wereappUrlOpen
from the@capacitor/app
plugin, andpushNotificationReceived
from@capacitor/push-notifications
.The issue seems to have been present because the Capacitor plugins held onto stale listener registrations - with no counterpart in JS after a
WebView
kill - which made them send messages immediately (despiteretainUntilConsumed
being set totrue
) instead of waiting for a first listener.Testing
Test runs from above test suite
Before:
After: