DevSupport classes included in release build with proguard enabled. Resolves unnecessary usage of BridgeDevSupportManager in DevLoadingModule. #44698
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.
Summary:
Resolves #44682
Intended for React Native 0.72
BridgeDevSupportManager class and its dependencies should be stripped by Proguard in release builds. However, due to the usage of BridgeDevSupportManager in DevLoadingModule this wasn't happening.
Refactored the code to use only the DevSupportManager interface to mitigate the above problem. This is in line with the design pattern here
react-native/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java
Lines 21 to 26 in d724007
DevSupportManagerBase always creates an instance of DevLoadingViewManager, which is why it need not be initialized again in DevLoadingModule.
This change brings down devsupport package size from ~52KB to ~12KB in release builds with proguard enabled
Also added a missing null check in mDevLoadingViewManager.showMessage() which could cause app crashes in certain cases.
Most of this PR is inspired by #40999 which is already in 0.73-stable
Changelog:
[INTERNAL] [FIXED] - Remove unnecessary usage of BridgeDevSupportManager in DevLoadingModule.
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
Test Plan:
Most of these changes are already live in 0.73. Checked template app release variant dex files in APK analyzer for before and after size comparison. Tested fast refresh capability in debug variant