react-native: Android crashes when tried to render TextInput on RN 0.64.x and using appcompat library of 1.4.0
Description
Latest 0.64 react-native is not compatible with latest appcompat androidx library. When app tries to render TextInput, NullPointerException thrown. This happens in file ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java (line 972):
private void updateCachedSpannable(boolean resetStyles) { // Noops in non-Fabric if (!mFabricViewStateManager.hasStateWrapper()) { return; }
This happens because super constructor AppCompatEditText calls updateCachedSpannable as part of construction, so mFabricViewStateManager not initialized yet and is null. So need to check mFabricViewStateManager for null value first.
React Native version:
System: OS: macOS 10.15.7 CPU: (8) x64 Intel® Core™ i7-2600K CPU @ 3.40GHz Memory: 790.90 MB / 24.00 GB Shell: 3.2.57 - /bin/bash Binaries: Node: 15.4.0 - /usr/local/bin/node Yarn: 1.22.10 - /usr/local/bin/yarn npm: 7.0.15 - /usr/local/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman Managers: CocoaPods: 1.10.1 - /Users/st1ng/.rvm/gems/ruby-2.7.0/bin/pod SDKs: iOS SDK: Platforms: iOS 14.4, DriverKit 20.2, macOS 11.1, tvOS 14.3, watchOS 7.2 Android SDK: API Levels: 23, 25, 26, 27, 28, 29, 30 Build Tools: 25.0.0, 26.0.0, 27.0.3, 28.0.3, 29.0.2, 29.0.3, 30.0.0, 30.0.2 System Images: android-21 | Google APIs Intel x86 Atom_64, android-24 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom, android-30 | Google Play Intel x86 Atom Android NDK: Not Found IDEs: Android Studio: 4.2 AI-202.7660.26.42.7322048 Xcode: 12.4/12D4e - /usr/bin/xcodebuild Languages: Java: 1.8.0_221 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: 17.0.1 => 17.0.1 react-native: 0.64.1 => 0.64.1
Steps To Reproduce
- Create empty project
- Set explicitly appcompat version to 1.4.0-alpha01 or make it “+” in app/build.gradle
implementation "androidx.appcompat:appcompat:1.4.0-alpha01"
- Add empty TextInput to any page
Expected Results
No crash happen
Snack, code example, screenshot, or link to a repository:
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 15
- Comments: 23 (8 by maintainers)
Commits related to this issue
- Fix crash on ReactEditText with AppCompat 1.4.0 Summary: This Diff fixes a crash happening as the user uses AppCompat 1.4.0 as a dependency in their App and uses a `TextInput` component. The crash h... — committed to NawbExplorer/react-native by cortinico 3 years ago
- fix(android): app crashes when trying to render `TextInput` The app crashes when trying to render `TextInput` with AppCompat Library at v1.4.0. For more details, see the GitHub issue: https://github.... — committed to microsoft/react-native-test-app by tido64 3 years ago
- fix(android): app crashes when trying to render `TextInput` (#643) The app crashes when trying to render `TextInput` with AppCompat Library at v1.4.0. For more details, see the GitHub issue: https:... — committed to microsoft/react-native-test-app by tido64 3 years ago
- Fix crash on ReactEditText with AppCompat 1.4.0 Summary: This Diff fixes a crash happening as the user uses AppCompat 1.4.0 as a dependency in their App and uses a `TextInput` component. The crash h... — committed to Skyscanner/react-native by cortinico 3 years ago
- Fix crash on ReactEditText with AppCompat 1.4.0 Summary: This Diff fixes a crash happening as the user uses AppCompat 1.4.0 as a dependency in their App and uses a `TextInput` component. The crash h... — committed to traveloka-archive/react-native by cortinico 3 years ago
- Fix crash on ReactEditText with AppCompat 1.4.0 Summary: This Diff fixes a crash happening as the user uses AppCompat 1.4.0 as a dependency in their App and uses a `TextInput` component. The crash h... — committed to traveloka-archive/react-native by cortinico 3 years ago
Use this for now:
Save my day!
Here I am chasing a crash bug down from stackoverflow and github and such and I find it closed just hours ago - thanks a bunch @cortinico ! I’m fine pinning the version in gradle as long as I know there’s a fix coming, I’ll just mark the pin for removal with react-native 0.68. Cheers
@brentvatne @bang88 @mikehardy @RobTS @kangear Hey guys Are we have any solution for this issue?
“react”: “16.13.1”, “react-native”: “0.64.3”,
@patriziomadferitmilione - download the latest version of expo go
Had this issue after upgrading to JDK 11, and upgrading targetSdkVersion and compleSdKVersion to 31 from 30 (React Native 0.64.3)
Thank you so much @cristianoccazinsp for the workaround that worked. Many many hours have been spent on this.
@cortinico my bad, I had just seen the reversal to 1.3.1 commit, not the other one!
Hi,
androidx.appcompat:appcompat:1.4.0
is now stable and as such RN is now becoming a blocker to update further. Since many other androidx dependencies are transitively dependent on appcompat, the issue will soon start bubbling through many apps using RN.Please does anyone have any idea how to solve this actually? The locking appcompat on version 1.3.1 is a temporary fix, but what should be the long term one?
I’ve addressed this in e21f8ec It will be available in the upcoming stable of RN
Same problem with any version of appcompat