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

  1. Create empty project
  2. Set explicitly appcompat version to 1.4.0-alpha01 or make it “+” in app/build.gradle implementation "androidx.appcompat:appcompat:1.4.0-alpha01"
  3. Add empty TextInput to any page

Expected Results

No crash happen

Snack, code example, screenshot, or link to a repository:

Screenshot_1621715066

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 15
  • Comments: 23 (8 by maintainers)

Commits related to this issue

Most upvoted comments

Use this for now:

implementation ("androidx.appcompat:appcompat:1.3.1") {
        version {
            strictly '1.3.1'
        }
    }

Use this for now:

implementation ("androidx.appcompat:appcompat:1.3.1") {
        version {
            strictly '1.3.1'
        }
    }

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