<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">Le jeu. 20 nov. 2025 à 15:58, <<a href="mailto:toni.beier@hrz.tu-chemnitz.de">toni.beier@hrz.tu-chemnitz.de</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear Jérémy,<br>
Our app now uses React Native version 0.81.5 and Expo version 54.0.25.<br>
<br>
When installing the dependencies with yarn, two error messages are <br>
displayed:<br>
<br>
error @react-native/dev-middleware@0.81.5: The engine ‘node’ is <br>
incompatible with this module. Expected version ‘>= 20.19.4’. Got ‘20.19.2’<br>
and<br>
error metro@0.83.2: The engine ‘node’ is incompatible with this module. <br>
Expected version ‘>=20.19.4’. Got ‘20.19.2’<br>
<br>
npm install also displaying warnings:<br>
<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'react-native@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-babel-transformer@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-cache@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-cache-key@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-config@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-core@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-file-map@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-resolver@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-runtime@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-source-map@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-transform-plugins@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-transform-worker@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/babel-preset@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/babel-plugin-codegen@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/codegen@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-symbolicate@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'ob1@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: 'metro-minify-terser@0.83.2',<br>
npm WARN EBADENGINE required: { node: '>=20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/assets-registry@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/community-cli-plugin@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/gradle-plugin@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/js-polyfills@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/virtualized-lists@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/dev-middleware@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
npm WARN EBADENGINE Unsupported engine {<br>
npm WARN EBADENGINE package: '@react-native/debugger-frontend@0.81.5',<br>
npm WARN EBADENGINE required: { node: '>= 20.19.4' },<br>
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }<br>
npm WARN EBADENGINE }<br>
<br>
I was able to trace this back to the following commits:<br>
* <br>
<a href="https://github.com/facebook/react-native/commit/e247be793c70a374955d798d8cbbc6eba58080ec" rel="noreferrer" target="_blank">https://github.com/facebook/react-native/commit/e247be793c70a374955d798d8cbbc6eba58080ec</a><br>
* <br>
<a href="https://github.com/facebook/metro/commit/7052e5407e6ed62251767f2a5eafbe9837323bb9" rel="noreferrer" target="_blank">https://github.com/facebook/metro/commit/7052e5407e6ed62251767f2a5eafbe9837323bb9</a><br>
<br>
As far as I understand, the React Native team has decided to support <br>
Nodejs 20 again and arbitrarily set version 20.19.4 as the minimum version.</blockquote><div><br></div><div>There are not many differences between 20.19.2 and 20.19.4.</div><div>I'd be surprised react-native relies on them.</div><div>They just choose tip of the 20.x branch for official support.</div><div>Use</div><div>yarn --ignore-engines</div><div><br></div></div></div>