@@ -2,12 +2,16 @@ import { getReactNativeVersion, versionCompare } from '@rock-js/tools';
22
33import { getExpoSdkMajor , isExpoProject } from './project.js' ;
44
5- export const MIN_REACT_NATIVE_VERSION_FOR_USE_PREBUILT_RN_CORE = '0.81.0' ;
6- export const MIN_EXPO_SDK_MAJOR_FOR_USE_PREBUILT_RN_CORE = 55 ;
5+ /** Minimum RN version that can opt in to prebuilts via `--use-prebuilt-rn-core`. */
6+ export const MIN_REACT_NATIVE_VERSION_FOR_OPT_IN_PREBUILT_RN_CORE = '0.81.0' ;
7+ /** Minimum RN version where Brownfield enables prebuilts by default (vanilla projects). */
8+ export const MIN_REACT_NATIVE_VERSION_FOR_PREBUILT_RN_CORE_BY_DEFAULT =
9+ '0.84.0' ;
10+ export const MIN_EXPO_SDK_MAJOR_FOR_PREBUILT_RN_CORE_BY_DEFAULT = 55 ;
711
812export type PrebuiltRNCoreSupportResult =
9- | { supported : true ; reason ?: never }
10- | { supported : false ; reason : string } ;
13+ | { supported : true ; enabledByDefault : boolean ; reason ?: never }
14+ | { supported : false ; enabledByDefault ?: never ; reason : string } ;
1115
1216export function supportsPrebuiltRNCore ( {
1317 projectRoot,
@@ -27,12 +31,12 @@ export function supportsPrebuiltRNCore({
2731 if (
2832 versionCompare (
2933 reactNativeVersion ,
30- MIN_REACT_NATIVE_VERSION_FOR_USE_PREBUILT_RN_CORE
34+ MIN_REACT_NATIVE_VERSION_FOR_OPT_IN_PREBUILT_RN_CORE
3135 ) < 0
3236 ) {
3337 return {
3438 supported : false ,
35- reason : `--use-prebuilt-rn-core requires React Native ${ MIN_REACT_NATIVE_VERSION_FOR_USE_PREBUILT_RN_CORE } or newer (found ${ reactNativeVersion } ).` ,
39+ reason : `--use-prebuilt-rn-core requires React Native ${ MIN_REACT_NATIVE_VERSION_FOR_OPT_IN_PREBUILT_RN_CORE } or newer (found ${ reactNativeVersion } ).` ,
3640 } ;
3741 }
3842
@@ -41,15 +45,23 @@ export function supportsPrebuiltRNCore({
4145
4246 if (
4347 expoSdkMajor === null ||
44- expoSdkMajor < MIN_EXPO_SDK_MAJOR_FOR_USE_PREBUILT_RN_CORE
48+ expoSdkMajor < MIN_EXPO_SDK_MAJOR_FOR_PREBUILT_RN_CORE_BY_DEFAULT
4549 ) {
4650 const sdkLabel = expoSdkMajor === null ? 'unknown' : String ( expoSdkMajor ) ;
4751 return {
4852 supported : false ,
49- reason : `--use-prebuilt-rn-core requires Expo SDK ${ MIN_EXPO_SDK_MAJOR_FOR_USE_PREBUILT_RN_CORE } or newer (found SDK ${ sdkLabel } ) .` ,
53+ reason : `--use-prebuilt-rn-core is unsupported in Expo SDK ${ sdkLabel } : packaging brownfield with prebuilts requires Expo SDK ${ MIN_EXPO_SDK_MAJOR_FOR_PREBUILT_RN_CORE_BY_DEFAULT } or newer .` ,
5054 } ;
5155 }
56+
57+ return { supported : true , enabledByDefault : true } ;
5258 }
5359
54- return { supported : true } ;
60+ const enabledByDefault =
61+ versionCompare (
62+ reactNativeVersion ,
63+ MIN_REACT_NATIVE_VERSION_FOR_PREBUILT_RN_CORE_BY_DEFAULT
64+ ) >= 0 ;
65+
66+ return { supported : true , enabledByDefault } ;
5567}
0 commit comments