Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mobile-app/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()
react {
entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim())
reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc"
hermesCommand = new File(["node", "--print", "require.resolve('hermes-compiler/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/hermesc/%OS-BIN%/hermesc"
codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()

enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,25 @@ import android.content.res.Configuration
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.ReactHost
import com.facebook.react.common.ReleaseLevel
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
import com.facebook.react.defaults.DefaultReactNativeHost

import expo.modules.ApplicationLifecycleDispatcher
import expo.modules.ReactNativeHostWrapper
import expo.modules.ExpoReactHostFactory

class MainApplication : Application(), ReactApplication {

override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(
this,
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
add(GoServerBridgePackage())
}

override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry"

override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG

override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
}
)

override val reactHost: ReactHost
get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost)
override val reactHost: ReactHost by lazy {
ExpoReactHostFactory.getDefaultReactHost(
context = applicationContext,
packageList =
PackageList(this).packages.apply {
add(GoServerBridgePackage())
}
)
}

override fun onCreate() {
super.onCreate()
Expand Down
33 changes: 20 additions & 13 deletions mobile-app/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties
ENV['RCT_NEW_ARCH_ENABLED'] ||= '0' if podfile_properties['newArchEnabled'] == 'false'
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] ||= podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
ENV['RCT_USE_RN_DEP'] ||= '1' if podfile_properties['ios.buildReactNativeFromSource'] != 'true' && podfile_properties['newArchEnabled'] != 'false'
# Force building React-Core from source to include DevSupport for expo-dev-client since expo 55 is not out yet
ENV['RCT_USE_PREBUILT_RNCORE'] = '0'
platform :ios, podfile_properties['ios.deploymentTarget'] || '16.0'
platform :ios, podfile_properties['ios.deploymentTarget'] || '16.4'

prepare_react_native_project!

Expand Down Expand Up @@ -53,20 +51,29 @@ target 'mobileapp' do
:ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true',
)

# Ensure all pods use iOS 16.0 deployment target
# Ensure all pods use iOS 16.4 deployment target
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.4'
end
end

# Fix ExpoModulesCore missing React-callinvoker dependency for RN 0.82
if target.name == 'ExpoModulesCore'
target.build_configurations.each do |config|
# Add React-callinvoker header search path
config.build_settings['HEADER_SEARCH_PATHS'] ||= ['$(inherited)']
config.build_settings['HEADER_SEARCH_PATHS'] << '"${PODS_ROOT}/Headers/Public/React-callinvoker"'
config.build_settings['HEADER_SEARCH_PATHS'] << '"${PODS_ROOT}/Headers/Private/React-callinvoker"'
end
# fmt 11.0.2's consteval path fails to compile under Xcode 26's clang;
# patch base.h so FMT_USE_CONSTEVAL stays at 0 regardless of detection.
fmt_base_h = File.join(installer.sandbox.root, 'fmt/include/fmt/base.h')
if File.exist?(fmt_base_h)
File.chmod(0644, fmt_base_h)
contents = File.read(fmt_base_h)
unless contents.include?('// react-native-go: force FMT_USE_CONSTEVAL=0')
patched = contents.sub(
'// Detect consteval, C++20 constexpr extensions and std::is_constant_evaluated.',
"// react-native-go: force FMT_USE_CONSTEVAL=0 to avoid Xcode 26 consteval evaluation bugs\n#define FMT_USE_CONSTEVAL 0\n#if 0\n// Detect consteval, C++20 constexpr extensions and std::is_constant_evaluated."
)
patched = patched.sub(
/\#if FMT_USE_CONSTEVAL\n\# define FMT_CONSTEVAL consteval/,
"#endif\n#if FMT_USE_CONSTEVAL\n# define FMT_CONSTEVAL consteval"
)
File.write(fmt_base_h, patched)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion mobile-app/ios/Podfile.properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"expo.jsEngine": "hermes",
"EX_DEV_CLIENT_NETWORK_INSPECTOR": "true",
"newArchEnabled": "true",
"ios.deploymentTarget": "16.0"
"ios.deploymentTarget": "16.4"
}
28 changes: 24 additions & 4 deletions mobile-app/ios/mobileapp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -235,11 +235,15 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-mobileapp/Pods-mobileapp-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/ExpoModulesJSI/ExpoModulesJSI.framework/ExpoModulesJSI",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/React-Core-prebuilt/React.framework/React",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/ReactNativeDependencies/ReactNativeDependencies.framework/ReactNativeDependencies",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermesvm.framework/hermesvm",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ExpoModulesJSI.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/React.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactNativeDependencies.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermesvm.framework",
);
Expand Down Expand Up @@ -357,7 +361,7 @@
"FB_SONARKIT_ENABLED=1",
);
INFOPLIST_FILE = mobileapp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -388,7 +392,7 @@
CODE_SIGN_ENTITLEMENTS = mobileapp/mobileapp.entitlements;
CURRENT_PROJECT_VERSION = 1;
INFOPLIST_FILE = mobileapp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -456,14 +460,22 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
);
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = (
"$(inherited)",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
OTHER_CPLUSPLUSFLAGS = (
"$(inherited)",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
Expand Down Expand Up @@ -512,13 +524,21 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.4;
LD_RUNPATH_SEARCH_PATHS = (
/usr/lib/swift,
"$(inherited)",
);
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = (
"$(inherited)",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
OTHER_CPLUSPLUSFLAGS = (
"$(inherited)",
"-DRCT_REMOVE_LEGACY_ARCH=1",
);
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
SWIFT_ENABLE_EXPLICIT_MODULES = NO;
Expand Down
7 changes: 3 additions & 4 deletions mobile-app/ios/mobileapp/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import Expo
internal import Expo
import React
import ReactAppDependencyProvider

@UIApplicationMain
public class AppDelegate: ExpoAppDelegate {
@main
class AppDelegate: ExpoAppDelegate {
var window: UIWindow?

var reactNativeDelegate: ExpoReactNativeFactoryDelegate?
Expand All @@ -19,7 +19,6 @@ public class AppDelegate: ExpoAppDelegate {

reactNativeDelegate = delegate
reactNativeFactory = factory
bindReactNativeFactory(factory)

#if os(iOS) || os(tvOS)
window = UIWindow(frame: UIScreen.main.bounds)
Expand Down
24 changes: 10 additions & 14 deletions mobile-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@
"dependencies": {
"@babel/core": "^7.28.4",
"@react-native-community/blur": "^4.4.1",
"expo": "54.0.10",
"expo-dev-client": "6.0.12",
"expo-status-bar": "3.0.8",
"react": "19.1.1",
"react-native": "0.82.1",
"react-native-gesture-handler": "^2.28.0",
"expo": "~56.0.5",
"expo-dev-client": "~56.0.16",
"expo-status-bar": "~56.0.4",
"react": "19.2.3",
"react-native": "0.85.3",
"react-native-gesture-handler": "~2.31.1",
"react-native-linear-gradient": "^2.8.3",
"react-native-reanimated": "4.1.3",
"react-native-svg": "^15.14.0",
"react-native-worklets": "0.6.1"
"react-native-reanimated": "4.3.1",
"react-native-svg": "15.15.4",
"react-native-worklets": "0.8.3"
},
"devDependencies": {
"@types/babel__core": "^7",
Expand All @@ -36,9 +36,5 @@
"javaPackageName": "io.rngolang.app"
}
},
"private": true,
"resolutions": {
"expo-modules-core": "patch:expo-modules-core@npm%3A3.0.18#./patches/expo-modules-core-npm-3.0.18-8381554df1.patch",
"expo-dev-launcher": "patch:expo-dev-launcher@npm%3A6.0.14#./patches/expo-dev-launcher-npm-6.0.14-4b3774e49b.patch"
}
"private": true
}
28 changes: 0 additions & 28 deletions mobile-app/patches/expo-dev-launcher-npm-6.0.14-4b3774e49b.patch

This file was deleted.

13 changes: 0 additions & 13 deletions mobile-app/patches/expo-modules-core-npm-3.0.18-8381554df1.patch

This file was deleted.

Loading
Loading