Skip to content

Added compatibility fix for Expo SDK 53 + Gradle 8.13 (Bare Workflow & EAS Build) #95

@Cesar02dd

Description

@Cesar02dd

Hey! I have good news (Hope so)

What I'm using

(I'm using WSL on Windows)

  • Gradle: 8.13
  • Expo: ^53.0.19

I have been using your project in Expo 52, in Bare Workflow (npx expo run:android), and everything worked fine (I did not test EAS Build in that version)

When I upgraded to Expo 53, every time I tried to run the app in Bare Workflow or build it locally with EAS Build:

eas build --platform android --profile release --local

I always got the following error:

FAILURE: Build failed with an exception. 
[RUN_GRADLEW] * What went wrong: 
[RUN_GRADLEW] A problem was found with the configuration of task ':nodejs-mobile-react-native:GenerateNodeNativeAssetsListsarm64-v8a' (type 'DefaultTask'). 
[RUN_GRADLEW] - Property '$1' specifies directory '/tmp/cesar/eas-build-local-nodejs/d423966d-aedd-4885-b6db-27ab4892da92/build/android/build/nodejs-native-assets/nodejs-native-assets-arm64-v8a' which doesn't exist.

In this issue, based on my reading and understanding, Expo 53 uses Gradle 8.13, which validates task input properties more strictly

In previous versions, Gradle properties like inputs.dir, inputs.file, etc., were registered but not immediately validated
Now Gradle expects these prebuilt assets to already exist (but they are only created at runtime), resulting in the missing directory error

Solution

I updated the android/build.gradle file and modified the task GenerateNodeNativeAssetsLists${abi_name} by adding this:

inputs.files fileTree(
    dir: "${rootProject.buildDir}/nodejs-native-assets/nodejs-native-assets-${abi_name}/",
    includes: ['**/*']
).builtBy("CopyBuiltNpmAssets${abi_name}")

After this modification, it worked perfectly in Bare Workflow

EAS Build error

However, when building the app with EAS Build, it still failed because the node_modules directory was not being created for each ABI
This happens because eas build --local omits the node_modules folder to simulate the cloud build environment

To address this, I added a task to install the necessary dependencies to resolve the issue and ensure compatibility. You can find these changes in this commit: e153e3d

After doing this:

  • Everything works correctly with EAS Build and npx expo run:android (Bare Workflow)

Note

I published a temporary NPM package for testing

References

If you’re interested, I can open a Pull Request to add these changes after your validation (Android only)

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions