Repository navigation
foojay-resolver-convention 0.5.0 in gradle-plugin is incompatible with Gradle 9.0.0 #56287
Description
Activity
- addedNeeds: ReproThis issue could be improved with a clear list of steps to reproduce the issue.This issue could be improved with a clear list of steps to reproduce the issue.
on Mar 31, 2026 Warning
Missing reproducer: We could not detect a reproducible example in your issue report. Reproducers are mandatory and we can accept only one of those as a valid reproducer:
- For majority of bugs: send us a Pull Request with the RNTesterPlayground.js edited to reproduce your bug.
- If your bug is UI related: a Snack
- If your bug is build/upgrade related: a project using our Reproducer Template
You can read more about about it on our website: How to report a bug.Reproducer
https://github.com/brunovmartin/react-native-foojay-reproducer
This is a fresh project created with:
npx create-expo-app@latest --template default@sdk-55
No modifications. To reproduce:
git clone https://github.com/brunovmartin/react-native-foojay-reproducer.git cd react-native-foojay-reproducer npm install rm -rf ~/.gradle/caches # ensure no stale cache masks the bug npx expo run:android
The build fails at
settings.gradleline 21 withNoClassDefFoundError: org/gradle/toolchains/foojay/FoojayToolchainsPlugin.Root cause:
@react-native/gradle-plugin@0.83.4shipssettings.gradle.ktswithfoojay-resolver-conventionversion0.5.0, which references a class removed in Gradle 9.0.0. The same@react-native/gradle-pluginshipsgradle-wrapper.propertiespointing to Gradle 9.0.0, creating an internal incompatibility.Fix: Update foojay-resolver-convention from
0.5.0to0.9.0in@react-native/gradle-plugin/settings.gradle.kts.This affects react-native 0.83.0 through 0.84.1.
- addedNeeds: AttentionIssues where the author has responded to feedback.Issues where the author has responded to feedback.and removed
on Mar 31, 2026 This is a build/upgrade related bug. The reproducer is a project using the official Expo SDK 55 template (
npx create-expo-app@latest --template default@sdk-55) with zero modifications:https://github.com/brunovmartin/react-native-foojay-reproducer
This is not reproducible via Snack or RNTesterPlayground since it's a Gradle build-time failure, not a runtime UI bug.
The issue is purely in
@react-native/gradle-plugin'ssettings.gradle.kts— it shipsfoojay-resolver-conventionversion0.5.0alongside agradle-wrapper.propertiespointing to Gradle9.0.0. These two are incompatible: Gradle 9.0.0 removed theFoojayToolchainsPluginclass that foojay 0.5.0 depends on.To reproduce:
git clone https://github.com/brunovmartin/react-native-foojay-reproducer.git cd react-native-foojay-reproducer npm install rm -rf ~/.gradle/caches npx expo run:android
One-line fix in
@react-native/gradle-plugin/settings.gradle.kts:- plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") } + plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.9.0") }
- Yes, this is caused by an incompatibility in @react-native/gradle-plugin. Temporary fix is to update foojay-resolver-convention in settings.gradle.kts from 0.5.0 to 0.9.0. That resolves the Gradle 9 issue. Confirmed affecting RN 0.83–0.84.1.…On Tue, Mar 31, 2026, 3:49 AM brunovmartin ***@***.***> wrote: *brunovmartin* left a comment (react/react-native#56287) <#56287 (comment)> This is a *build/upgrade related* bug. The reproducer is a project using the official Expo SDK 55 template (npx ***@***.*** --template ***@***.***) with zero modifications: https://github.com/brunovmartin/react-native-foojay-reproducer This is not reproducible via Snack or RNTesterPlayground since it's a Gradle build-time failure, not a runtime UI bug. The issue is purely in @react-native/gradle-plugin's settings.gradle.kts — it ships foojay-resolver-convention version 0.5.0 alongside a gradle-wrapper.properties pointing to Gradle 9.0.0. These two are incompatible: Gradle 9.0.0 removed the FoojayToolchainsPlugin class that foojay 0.5.0 depends on. *To reproduce:* git clone https://github.com/brunovmartin/react-native-foojay-reproducer.gitcd react-native-foojay-reproducer npm install rm -rf ~/.gradle/caches npx expo run:android *One-line fix* in @react-native/gradle-plugin/settings.gradle.kts: - plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") }+ plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.9.0") } — Reply to this email directly, view it on GitHub <#56287>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/B7GEOJISEUTZFJRT2VE4TVL4TN2BTAVCNFSM6AAAAACXHJFOKSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DCNRQGYYTSNRQHA> . You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
see #56210, it's been resolved. @TheNerdGuyLulu can you also backport it from version 0.82.x to 0.84.x.
Hey, bro , I'm currently stuck at this step. I found this issue, but I still managed to solve it following the method provided in the issue. I'm not quite sure if it was this plugin that caused the problem.
npx expo run:android npm warn Unknown user config "home". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options. › Opening emulator Pixel_5 › Building app... Starting a Gradle Daemon (subsequent builds will be faster) Configuration on demand is an incubating feature. <-------------> 0% INITIALIZING [15m 54s] > Evaluating settings > Downloading toolchain from URI https://api.foojay.io/disco/v3.0/ids/69a793dd932268c7d1ae9d8b855
Description
The
@react-native/gradle-pluginbundlessettings.gradle.ktswith:plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") }React Native 0.83.x uses Gradle 9.0.0 (set in
gradle/wrapper/gradle-wrapper.properties), but foojay-resolver-convention 0.5.0 depends onFoojayToolchainsPlugin, a class that was removed in Gradle 9.0.0.This causes a build failure on any fresh project or after clearing Gradle caches.
Steps to reproduce
Error
Full stacktrace:
Root cause
react-native@react-native/gradle-pluginfoojay-resolver-conventionGradle 9.0.0 removed the
FoojayToolchainsPluginclass that foojay 0.5.0 depends on. Versions 0.8.0+ of foojay-resolver-convention are compatible with Gradle 9.0.0.Verified fix
Updating
settings.gradle.ktsin@react-native/gradle-pluginfrom:plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") }to:
plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.9.0") }resolves the issue. The build also requires
--no-configure-on-demandto avoid a relatedmetadata.bingeneration failure.Affected versions
Environment