diff --git a/boilerplate/App.js b/boilerplate/App.js
deleted file mode 100644
index 4e3371460..000000000
--- a/boilerplate/App.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// This is the entry point if you run `yarn expo:start`
-// If you run `yarn ios` or `yarn android`, it'll use ./index.js instead.
-import App from "./app/app.tsx"
-import React from "react"
-import { registerRootComponent } from "expo"
-import { Platform } from "react-native"
-import * as SplashScreen from "expo-splash-screen"
-
-SplashScreen.preventAutoHideAsync()
-
-function IgniteApp() {
- return
-}
-
-if (Platform.OS !== "web") {
- registerRootComponent(IgniteApp)
-}
-
-export default IgniteApp
diff --git a/boilerplate/App.tsx b/boilerplate/App.tsx
new file mode 100644
index 000000000..1fd79cc56
--- /dev/null
+++ b/boilerplate/App.tsx
@@ -0,0 +1,11 @@
+import App from "./app/app"
+import React from "react"
+import * as SplashScreen from "expo-splash-screen"
+
+SplashScreen.preventAutoHideAsync()
+
+function IgniteApp() {
+ return
+}
+
+export default IgniteApp
diff --git a/boilerplate/android/app/BUCK b/boilerplate/android/app/BUCK
deleted file mode 100644
index 0e7790483..000000000
--- a/boilerplate/android/app/BUCK
+++ /dev/null
@@ -1,55 +0,0 @@
-# To learn about Buck see [Docs](https://buckbuild.com/).
-# To run your application with Buck:
-# - install Buck
-# - `npm start` - to start the packager
-# - `cd android`
-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
-# - `buck install -r android/app` - compile, install and run application
-#
-
-load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
-
-lib_deps = []
-
-create_aar_targets(glob(["libs/*.aar"]))
-
-create_jar_targets(glob(["libs/*.jar"]))
-
-android_library(
- name = "all-libs",
- exported_deps = lib_deps,
-)
-
-android_library(
- name = "app-code",
- srcs = glob([
- "src/main/java/**/*.java",
- ]),
- deps = [
- ":all-libs",
- ":build_config",
- ":res",
- ],
-)
-
-android_build_config(
- name = "build_config",
- package = "com.helloworld",
-)
-
-android_resource(
- name = "res",
- package = "com.helloworld",
- res = "src/main/res",
-)
-
-android_binary(
- name = "app",
- keystore = "//android/keystores:debug",
- manifest = "src/main/AndroidManifest.xml",
- package_type = "debug",
- deps = [
- ":app-code",
- ],
-)
diff --git a/boilerplate/android/app/build.gradle b/boilerplate/android/app/build.gradle
index ba6f03761..92abb3968 100644
--- a/boilerplate/android/app/build.gradle
+++ b/boilerplate/android/app/build.gradle
@@ -1,24 +1,7 @@
-/*
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
apply plugin: "com.android.application"
apply plugin: "com.facebook.react"
-import com.android.build.OutputFile
-
def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()
-def expoDebuggableVariants = ['debug']
-// Override `debuggableVariants` for expo-updates debugging
-if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == "1") {
- react {
- expoDebuggableVariants = []
- }
-}
-
/**
* This is the configuration block to customize your React Native Android app.
@@ -28,7 +11,12 @@ 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"
- debuggableVariants = expoDebuggableVariants
+ codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()
+
+ // Use Expo CLI to bundle the app, this ensures the Metro config
+ // works correctly with Expo projects.
+ cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim())
+ bundleCommand = "export:embed"
/* Folders */
// The root of your project, i.e. where "package.json" lives. Default is '..'
@@ -37,8 +25,6 @@ react {
// reactNativeDir = file("../node_modules/react-native")
// The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
// codegenDir = file("../node_modules/@react-native/codegen")
- // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
- // cliFile = file("../node_modules/react-native/cli.js")
/* Variants */
// The list of variants to that are debuggable. For those we're going to
@@ -49,9 +35,7 @@ react {
/* Bundling */
// A list containing the node command and its flags. Default is just 'node'.
// nodeExecutableAndArgs = ["node"]
- //
- // The command to run when bundling. By default is 'bundle'
- // bundleCommand = "ram-bundle"
+
//
// The path to the CLI configuration file. Default is empty.
// bundleConfig = file(../rn-cli.config.js)
@@ -74,11 +58,6 @@ react {
// hermesFlags = ["-O", "-output-source-map"]
}
-// Override `hermesEnabled` by `expo.jsEngine`
-ext {
- hermesEnabled = (findProperty('expo.jsEngine') ?: "hermes") == "hermes"
-}
-
/**
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
*/
@@ -102,15 +81,16 @@ android {
compileSdkVersion rootProject.ext.compileSdkVersion
- namespace "com.helloworld"
+ namespace 'com.helloworld'
defaultConfig {
- applicationId "com.helloworld"
+ applicationId 'com.helloworld'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
- versionName "1.0"
- }
+ versionName "1.0.0"
+ buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString())
+ }
signingConfigs {
debug {
storeFile file('debug.keystore')
@@ -127,25 +107,68 @@ android {
// Caution! In production, you need to generate your own keystore file.
// see https://reactnative.dev/docs/signed-apk-android.
signingConfig signingConfigs.debug
+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
}
+// Apply static values from `gradle.properties` to the `android.packagingOptions`
+// Accepts values in comma delimited lists, example:
+// android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini
+["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop ->
+ // Split option: 'foo,bar' -> ['foo', 'bar']
+ def options = (findProperty("android.packagingOptions.$prop") ?: "").split(",");
+ // Trim all elements in place.
+ for (i in 0.. 0) {
+ println "android.packagingOptions.$prop += $options ($options.length)"
+ // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**'
+ options.each {
+ android.packagingOptions[prop] += it
+ }
+ }
+}
+
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
-
- // RN BootSplash
- implementation("androidx.core:core-splashscreen:1.0.0")
+
+ def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
+ def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true";
+ def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true";
+ def frescoVersion = rootProject.ext.frescoVersion
+
+ // If your app supports Android versions before Ice Cream Sandwich (API level 14)
+ if (isGifEnabled || isWebpEnabled) {
+ implementation("com.facebook.fresco:fresco:${frescoVersion}")
+ implementation("com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}")
+ }
+
+ if (isGifEnabled) {
+ // For animated gif support
+ implementation("com.facebook.fresco:animated-gif:${frescoVersion}")
+ }
+
+ if (isWebpEnabled) {
+ // For webp support
+ implementation("com.facebook.fresco:webpsupport:${frescoVersion}")
+ if (isWebpAnimatedEnabled) {
+ // Animated webp support
+ implementation("com.facebook.fresco:animated-webp:${frescoVersion}")
+ }
+ }
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
exclude group:'com.squareup.okhttp3', module:'okhttp'
}
-
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
+
if (hermesEnabled.toBoolean()) {
implementation("com.facebook.react:hermes-android")
} else {
@@ -153,4 +176,5 @@ dependencies {
}
}
-apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
\ No newline at end of file
+apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
+applyNativeModulesAppBuildGradle(project)
diff --git a/boilerplate/android/app/proguard-rules.pro b/boilerplate/android/app/proguard-rules.pro
index 11b025724..551eb41da 100644
--- a/boilerplate/android/app/proguard-rules.pro
+++ b/boilerplate/android/app/proguard-rules.pro
@@ -7,4 +7,8 @@
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
+# react-native-reanimated
+-keep class com.swmansion.reanimated.** { *; }
+-keep class com.facebook.react.turbomodule.** { *; }
+
# Add any project specific keep options here:
diff --git a/boilerplate/android/app/src/debug/AndroidManifest.xml b/boilerplate/android/app/src/debug/AndroidManifest.xml
index 4b185bc15..99e38fc5f 100644
--- a/boilerplate/android/app/src/debug/AndroidManifest.xml
+++ b/boilerplate/android/app/src/debug/AndroidManifest.xml
@@ -1,13 +1,7 @@
-
-
-
-
+
diff --git a/boilerplate/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/boilerplate/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java
index 283027d2d..595dd5831 100644
--- a/boilerplate/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java
+++ b/boilerplate/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java
@@ -17,7 +17,6 @@
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
import com.facebook.react.ReactInstanceEventListener;
import com.facebook.react.ReactInstanceManager;
@@ -35,7 +34,6 @@ public static void initializeFlipper(Context context, ReactInstanceManager react
final FlipperClient client = AndroidFlipperClient.getInstance(context);
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
- client.addPlugin(new ReactFlipperPlugin());
client.addPlugin(new DatabasesFlipperPlugin(context));
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
client.addPlugin(CrashReporterPlugin.getInstance());
diff --git a/boilerplate/android/app/src/main/AndroidManifest.xml b/boilerplate/android/app/src/main/AndroidManifest.xml
index 1976c1dee..46cca7111 100644
--- a/boilerplate/android/app/src/main/AndroidManifest.xml
+++ b/boilerplate/android/app/src/main/AndroidManifest.xml
@@ -1,32 +1,34 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/boilerplate/android/app/src/main/java/com/helloworld/MainActivity.java b/boilerplate/android/app/src/main/java/com/helloworld/MainActivity.java
index 5e1b98aac..176fbf6a2 100644
--- a/boilerplate/android/app/src/main/java/com/helloworld/MainActivity.java
+++ b/boilerplate/android/app/src/main/java/com/helloworld/MainActivity.java
@@ -7,25 +7,32 @@
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
import com.facebook.react.defaults.DefaultReactActivityDelegate;
-import com.zoontek.rnbootsplash.RNBootSplash;
import expo.modules.ReactActivityDelegateWrapper;
public class MainActivity extends ReactActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ // Set the theme to AppTheme BEFORE onCreate to support
+ // coloring the background, status bar, and navigation bar.
+ // This is required for expo-splash-screen.
+ setTheme(R.style.AppTheme);
+ super.onCreate(null);
+ }
/**
- * Returns the name of the main component registered from JavaScript. This is used to schedule
- * rendering of the component.
+ * Returns the name of the main component registered from JavaScript.
+ * This is used to schedule rendering of the component.
*/
@Override
protected String getMainComponentName() {
- return "HelloWorld";
+ return "main";
}
/**
- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and
- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer
- * (Paper).
+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
+ * (aka React 18) with two boolean flags.
*/
@Override
protected ReactActivityDelegate createReactActivityDelegate() {
@@ -33,14 +40,7 @@ protected ReactActivityDelegate createReactActivityDelegate() {
this,
getMainComponentName(),
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
- DefaultNewArchitectureEntryPoint.getFabricEnabled())
- );
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- RNBootSplash.init(this); // <- initialize the splash screen
- super.onCreate(null); // or super.onCreate(savedInstanceState) when not using react-native-screens
+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));
}
/**
diff --git a/boilerplate/android/app/src/main/java/com/helloworld/MainApplication.java b/boilerplate/android/app/src/main/java/com/helloworld/MainApplication.java
index 02f4c5c9b..8502c4402 100644
--- a/boilerplate/android/app/src/main/java/com/helloworld/MainApplication.java
+++ b/boilerplate/android/app/src/main/java/com/helloworld/MainApplication.java
@@ -8,15 +8,16 @@
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
+import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
import com.facebook.react.defaults.DefaultReactNativeHost;
import com.facebook.soloader.SoLoader;
-import java.util.List;
-
import expo.modules.ApplicationLifecycleDispatcher;
import expo.modules.ReactNativeHostWrapper;
+import java.util.List;
+
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost =
@@ -37,7 +38,7 @@ protected List getPackages() {
@Override
protected String getJSMainModuleName() {
- return "index";
+ return ".expo/.virtual-metro-entry";
}
@Override
@@ -60,6 +61,9 @@ public ReactNativeHost getReactNativeHost() {
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {
+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;
+ }
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
DefaultNewArchitectureEntryPoint.load();
@@ -73,5 +77,4 @@ public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);
}
-
-}
\ No newline at end of file
+}
diff --git a/boilerplate/android/app/src/main/res/drawable-hdpi/splashscreen_image.png b/boilerplate/android/app/src/main/res/drawable-hdpi/splashscreen_image.png
new file mode 100644
index 000000000..783923308
Binary files /dev/null and b/boilerplate/android/app/src/main/res/drawable-hdpi/splashscreen_image.png differ
diff --git a/boilerplate/android/app/src/main/res/drawable-mdpi/splashscreen_image.png b/boilerplate/android/app/src/main/res/drawable-mdpi/splashscreen_image.png
new file mode 100644
index 000000000..783923308
Binary files /dev/null and b/boilerplate/android/app/src/main/res/drawable-mdpi/splashscreen_image.png differ
diff --git a/boilerplate/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png b/boilerplate/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png
new file mode 100644
index 000000000..783923308
Binary files /dev/null and b/boilerplate/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png differ
diff --git a/boilerplate/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png b/boilerplate/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png
new file mode 100644
index 000000000..783923308
Binary files /dev/null and b/boilerplate/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png differ
diff --git a/boilerplate/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png b/boilerplate/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png
new file mode 100644
index 000000000..783923308
Binary files /dev/null and b/boilerplate/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png differ
diff --git a/boilerplate/android/app/src/main/res/drawable/rn_edit_text_material.xml b/boilerplate/android/app/src/main/res/drawable/rn_edit_text_material.xml
index f35d99620..73b37e4d9 100644
--- a/boilerplate/android/app/src/main/res/drawable/rn_edit_text_material.xml
+++ b/boilerplate/android/app/src/main/res/drawable/rn_edit_text_material.xml
@@ -20,7 +20,7 @@
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/boilerplate/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/boilerplate/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java
index 053f2a140..b51036440 100644
--- a/boilerplate/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java
+++ b/boilerplate/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java
@@ -17,4 +17,4 @@ public class ReactNativeFlipper {
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
// Do nothing as we don't want to initialize Flipper on Release.
}
-}
\ No newline at end of file
+}
diff --git a/boilerplate/android/build.gradle b/boilerplate/android/build.gradle
index 6aeae4d36..bf861dbf3 100644
--- a/boilerplate/android/build.gradle
+++ b/boilerplate/android/build.gradle
@@ -1,5 +1,3 @@
-import org.apache.tools.ant.taskdefs.condition.Os
-
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
@@ -8,9 +6,7 @@ buildscript {
minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')
compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')
targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')
- if (findProperty('android.kotlinVersion')) {
- kotlinVersion = findProperty('android.kotlinVersion')
- }
+ kotlinVersion = findProperty('android.kotlinVersion') ?: '1.8.10'
frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'
// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
@@ -21,24 +17,24 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath('com.android.tools.build:gradle:7.3.1')
+ classpath('com.android.tools.build:gradle:7.4.2')
classpath('com.facebook.react:react-native-gradle-plugin')
}
}
-// allprojects {
-// repositories {
-// maven {
-// // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
-// url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android'))
-// }
-// maven {
-// // Android JSC is installed from npm
-// url(new File(['node', '--print', "require.resolve('jsc-android/package.json')"].execute(null, rootDir).text.trim(), '../dist'))
-// }
+allprojects {
+ repositories {
+ maven {
+ // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
+ url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android'))
+ }
+ maven {
+ // Android JSC is installed from npm
+ url(new File(['node', '--print', "require.resolve('jsc-android/package.json')"].execute(null, rootDir).text.trim(), '../dist'))
+ }
-// google()
-// mavenCentral()
-// maven { url 'https://www.jitpack.io' }
-// }
-// }
+ google()
+ mavenCentral()
+ maven { url 'https://www.jitpack.io' }
+ }
+}
diff --git a/boilerplate/android/gradle.properties b/boilerplate/android/gradle.properties
index 93ee474b7..240ca06cb 100644
--- a/boilerplate/android/gradle.properties
+++ b/boilerplate/android/gradle.properties
@@ -21,23 +21,13 @@ org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
+
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.182.0
-# Enable GIF support in React Native images (~200 B increase)
-expo.gif.enabled=true
-# Enable webp support in React Native images (~85 KB increase)
-expo.webp.enabled=true
-# Enable animated webp support (~3.4 MB increase)
-# Disabled by default because iOS doesn't support animated webp
-expo.webp.animated=false
-# Use hermes as JS engine. To disable remove this line
-expo.jsEngine=hermes
-
-
# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
# ./gradlew -PreactNativeArchitectures=x86_64
@@ -49,3 +39,18 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=false
+
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true
+
+# Enable GIF support in React Native images (~200 B increase)
+expo.gif.enabled=true
+# Enable webp support in React Native images (~85 KB increase)
+expo.webp.enabled=true
+# Enable animated webp support (~3.4 MB increase)
+# Disabled by default because iOS doesn't support animated webp
+expo.webp.animated=false
+
+# Enable network inspector
+EX_DEV_CLIENT_NETWORK_INSPECTOR=true
diff --git a/boilerplate/android/gradle/wrapper/gradle-wrapper.jar b/boilerplate/android/gradle/wrapper/gradle-wrapper.jar
index 7454180f2..249e5832f 100644
Binary files a/boilerplate/android/gradle/wrapper/gradle-wrapper.jar and b/boilerplate/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/boilerplate/android/gradle/wrapper/gradle-wrapper.properties b/boilerplate/android/gradle/wrapper/gradle-wrapper.properties
index 6d938f7f1..6ec1567a0 100644
--- a/boilerplate/android/gradle/wrapper/gradle-wrapper.properties
+++ b/boilerplate/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/boilerplate/android/gradlew b/boilerplate/android/gradlew
index 65dcd68d6..a69d9cb6c 100755
--- a/boilerplate/android/gradlew
+++ b/boilerplate/android/gradlew
@@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,11 +80,11 @@ do
esac
done
-# This is normally unused
-# shellcheck disable=SC2034
-APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+APP_NAME="Gradle"
+APP_BASE_NAME=${0##*/}
+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
@@ -143,16 +143,12 @@ fi
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
- # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
- # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
diff --git a/boilerplate/android/gradlew.bat b/boilerplate/android/gradlew.bat
index 877199efb..53a6b238d 100644
--- a/boilerplate/android/gradlew.bat
+++ b/boilerplate/android/gradlew.bat
@@ -26,7 +26,6 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
-@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -76,12 +75,11 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
-
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
diff --git a/boilerplate/app.json b/boilerplate/app.json
index 1f690cd89..cf539cf02 100644
--- a/boilerplate/app.json
+++ b/boilerplate/app.json
@@ -54,7 +54,18 @@
"bundler": "metro"
},
"plugins": [
- "expo-localization"
+ "expo-localization",
+ [
+ "expo-build-properties",
+ {
+ "ios": {
+ "newArchEnabled": false
+ },
+ "android": {
+ "newArchEnabled": false
+ }
+ }
+ ]
]
}
}
diff --git a/boilerplate/app/app.tsx b/boilerplate/app/app.tsx
index 30d81ceb5..c968524de 100644
--- a/boilerplate/app/app.tsx
+++ b/boilerplate/app/app.tsx
@@ -55,7 +55,7 @@ const config = {
}
interface AppProps {
- hideSplashScreen: () => Promise
+ hideSplashScreen: () => Promise
}
/**
diff --git a/boilerplate/app/devtools/ReactotronConfig.ts b/boilerplate/app/devtools/ReactotronConfig.ts
index 1e1df9742..74bbf9146 100644
--- a/boilerplate/app/devtools/ReactotronConfig.ts
+++ b/boilerplate/app/devtools/ReactotronConfig.ts
@@ -72,6 +72,7 @@ Reactotron.onCustomCommand({
const { route } = args
if (route) {
Reactotron.log(`Navigating to: ${route}`)
+ // @ts-expect-error
navigate(route)
} else {
Reactotron.log("Could not navigate. No route provided.")
diff --git a/boilerplate/app/screens/WelcomeScreen.tsx b/boilerplate/app/screens/WelcomeScreen.tsx
index c1826a867..7799d784f 100644
--- a/boilerplate/app/screens/WelcomeScreen.tsx
+++ b/boilerplate/app/screens/WelcomeScreen.tsx
@@ -7,7 +7,7 @@ import {
} from "../components"
import { isRTL } from "../i18n"
import { useStores } from "../models" // @demo remove-current-line
-import { AppStackScreenProps } from "../navigators" // @demo remove-current-line
+import { AppStackScreenProps } from "../navigators"
import { colors, spacing } from "../theme"
import { useHeader } from "../utils/useHeader" // @demo remove-current-line
import { useSafeAreaInsetsStyle } from "../utils/useSafeAreaInsetsStyle"
diff --git a/boilerplate/babel.config.js b/boilerplate/babel.config.js
index fe59befab..177cbe777 100644
--- a/boilerplate/babel.config.js
+++ b/boilerplate/babel.config.js
@@ -23,10 +23,13 @@ const plugins = [
]
/** @type {import('@babel/core').TransformOptions} */
-module.exports = {
- presets: ["babel-preset-expo"],
- env: {
- production: {},
- },
- plugins,
-}
+module.exports = function(api) {
+ api.cache(true);
+ return {
+ presets: ["babel-preset-expo"],
+ env: {
+ production: {},
+ },
+ plugins,
+ };
+};
\ No newline at end of file
diff --git a/boilerplate/bin/postInstall b/boilerplate/bin/postInstall
index db77e754a..4f04be99b 100755
--- a/boilerplate/bin/postInstall
+++ b/boilerplate/bin/postInstall
@@ -14,14 +14,6 @@ if (["darwin", "linux"].includes(process.platform)) {
run('pkill -f "cli.js start" || set exit 0')
}
-/**
- * On darwin machine:
- * 1. Check if CocoaPods CLI is installed (and if not, install it)
- * 2. Find an Xcode project dir
- * 3. Run `pod install`, if fails run `pod repo update` and try again
- */
-run('npx pod-install')
-
// Run baby run
function run(command) {
console.log(`./bin/postInstall script running: ${command}`)
diff --git a/boilerplate/index.js b/boilerplate/index.js
deleted file mode 100644
index 5dd2335a5..000000000
--- a/boilerplate/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// This is the first file that ReactNative will run when it starts up.
-// If you use Expo (`yarn expo:start`), the entry point is ./App.js instead.
-// Both do essentially the same thing.
-
-import App from "./app/app.tsx"
-import React from "react"
-import { AppRegistry } from "react-native"
-import RNBootSplash from "react-native-bootsplash"
-
-function IgniteApp() {
- return
-}
-
-AppRegistry.registerComponent("HelloWorld", () => IgniteApp)
-export default App
diff --git a/boilerplate/ios/.gitignore b/boilerplate/ios/.gitignore
new file mode 100644
index 000000000..8beb34430
--- /dev/null
+++ b/boilerplate/ios/.gitignore
@@ -0,0 +1,30 @@
+# OSX
+#
+.DS_Store
+
+# Xcode
+#
+build/
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+*.xccheckout
+*.moved-aside
+DerivedData
+*.hmap
+*.ipa
+*.xcuserstate
+project.xcworkspace
+.xcode.env.local
+
+# Bundle artifacts
+*.jsbundle
+
+# CocoaPods
+/Pods/
diff --git a/boilerplate/ios/.xcode.env b/boilerplate/ios/.xcode.env
index 9d643e97a..3d5782c71 100644
--- a/boilerplate/ios/.xcode.env
+++ b/boilerplate/ios/.xcode.env
@@ -2,9 +2,10 @@
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.
+
# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
-export NODE_BINARY=$(command -v node)
\ No newline at end of file
+export NODE_BINARY=$(command -v node)
diff --git a/boilerplate/ios/HelloWorld.xcodeproj/project.pbxproj b/boilerplate/ios/HelloWorld.xcodeproj/project.pbxproj
index 424e6be57..bcab337e4 100644
--- a/boilerplate/ios/HelloWorld.xcodeproj/project.pbxproj
+++ b/boilerplate/ios/HelloWorld.xcodeproj/project.pbxproj
@@ -3,99 +3,62 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 54;
+ objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
- 00E356F31AD99517003FC87E /* HelloWorldTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* HelloWorldTests.m */; };
- 0C80B921A6F3F58F76C31292 /* libPods-HelloWorld.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-HelloWorld.a */; };
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
- 2215ACBC1E62C44583DB69A9 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AFED2E09CC2E86D1338C0F /* ExpoModulesProvider.swift */; };
- 400EB2C1E1807E6CBC68B7AB /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 951E59D51E504BC9C5F46169 /* ExpoModulesProvider.swift */; };
- 7699B88040F8A987B510C191 /* libPods-HelloWorld-HelloWorldTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-HelloWorld-HelloWorldTests.a */; };
- BE406F562862D73000A81E39 /* BootSplash.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BE406F552862D73000A81E39 /* BootSplash.storyboard */; };
+ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
+ 96905EF65AED1B983A6B3ABC /* libPods-HelloWorld.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-HelloWorld.a */; };
+ B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; };
+ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
+ FBB8240DE3B54DA7A908FDE3 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B4CED417AFB41E4AD6B7776 /* noop-file.swift */; };
/* End PBXBuildFile section */
-/* Begin PBXContainerItemProxy section */
- 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
- remoteInfo = HelloWorld;
- };
-/* End PBXContainerItemProxy section */
-
/* Begin PBXFileReference section */
- 00E356EE1AD99517003FC87E /* HelloWorldTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HelloWorldTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 00E356F21AD99517003FC87E /* HelloWorldTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HelloWorldTests.m; sourceTree = ""; };
13B07F961A680F5B00A75B9A /* HelloWorld.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = HelloWorld/AppDelegate.h; sourceTree = ""; };
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = HelloWorld/AppDelegate.mm; sourceTree = ""; };
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = ""; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = HelloWorld/Info.plist; sourceTree = ""; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = HelloWorld/main.m; sourceTree = ""; };
- 19F6CBCC0A4E27FBF8BF4A61 /* libPods-HelloWorld-HelloWorldTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HelloWorld-HelloWorldTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 3B4392A12AC88292D35C810B /* Pods-HelloWorld.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld.debug.xcconfig"; path = "Target Support Files/Pods-HelloWorld/Pods-HelloWorld.debug.xcconfig"; sourceTree = ""; };
- 5709B34CF0A7D63546082F79 /* Pods-HelloWorld.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld.release.xcconfig"; path = "Target Support Files/Pods-HelloWorld/Pods-HelloWorld.release.xcconfig"; sourceTree = ""; };
- 5B7EB9410499542E8C5724F5 /* Pods-HelloWorld-HelloWorldTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld-HelloWorldTests.debug.xcconfig"; path = "Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests.debug.xcconfig"; sourceTree = ""; };
- 5DCACB8F33CDC322A6C60F78 /* libPods-HelloWorld.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HelloWorld.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 89C6BE57DB24E9ADA2F236DE /* Pods-HelloWorld-HelloWorldTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld-HelloWorldTests.release.xcconfig"; path = "Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests.release.xcconfig"; sourceTree = ""; };
- 951E59D51E504BC9C5F46169 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-HelloWorld/ExpoModulesProvider.swift"; sourceTree = ""; };
- BE406F552862D73000A81E39 /* BootSplash.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = BootSplash.storyboard; path = HelloWorld/BootSplash.storyboard; sourceTree = ""; };
- D5AFED2E09CC2E86D1338C0F /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-HelloWorld-HelloWorldTests/ExpoModulesProvider.swift"; sourceTree = ""; };
+ 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-HelloWorld.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-HelloWorld.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6C2E3173556A471DD304B334 /* Pods-HelloWorld.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld.debug.xcconfig"; path = "Target Support Files/Pods-HelloWorld/Pods-HelloWorld.debug.xcconfig"; sourceTree = ""; };
+ 7A4D352CD337FB3A3BF06240 /* Pods-HelloWorld.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloWorld.release.xcconfig"; path = "Target Support Files/Pods-HelloWorld/Pods-HelloWorld.release.xcconfig"; sourceTree = ""; };
+ 7B4CED417AFB41E4AD6B7776 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "HelloWorld/noop-file.swift"; sourceTree = ""; };
+ A6B2159584A643268307CED8 /* HelloWorld-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "HelloWorld-Bridging-Header.h"; path = "HelloWorld/HelloWorld-Bridging-Header.h"; sourceTree = ""; };
+ AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = HelloWorld/SplashScreen.storyboard; sourceTree = ""; };
+ BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-HelloWorld/ExpoModulesProvider.swift"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
- 00E356EB1AD99517003FC87E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 7699B88040F8A987B510C191 /* libPods-HelloWorld-HelloWorldTests.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 0C80B921A6F3F58F76C31292 /* libPods-HelloWorld.a in Frameworks */,
+ 96905EF65AED1B983A6B3ABC /* libPods-HelloWorld.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 00E356EF1AD99517003FC87E /* HelloWorldTests */ = {
- isa = PBXGroup;
- children = (
- 00E356F21AD99517003FC87E /* HelloWorldTests.m */,
- 00E356F01AD99517003FC87E /* Supporting Files */,
- );
- path = HelloWorldTests;
- sourceTree = "";
- };
- 00E356F01AD99517003FC87E /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- 00E356F11AD99517003FC87E /* Info.plist */,
- );
- name = "Supporting Files";
- sourceTree = "";
- };
13B07FAE1A68108700A75B9A /* HelloWorld */ = {
isa = PBXGroup;
children = (
+ BB2F792B24A3F905000567C9 /* Supporting */,
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
13B07FB61A68108700A75B9A /* Info.plist */,
- BE406F552862D73000A81E39 /* BootSplash.storyboard */,
13B07FB71A68108700A75B9A /* main.m */,
+ AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */,
+ 7B4CED417AFB41E4AD6B7776 /* noop-file.swift */,
+ A6B2159584A643268307CED8 /* HelloWorld-Bridging-Header.h */,
);
name = HelloWorld;
sourceTree = "";
@@ -104,29 +67,11 @@
isa = PBXGroup;
children = (
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
- 5DCACB8F33CDC322A6C60F78 /* libPods-HelloWorld.a */,
- 19F6CBCC0A4E27FBF8BF4A61 /* libPods-HelloWorld-HelloWorldTests.a */,
+ 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-HelloWorld.a */,
);
name = Frameworks;
sourceTree = "";
};
- 547A8E9E9663ECB3355FB756 /* ExpoModulesProviders */ = {
- isa = PBXGroup;
- children = (
- 6289853FD5D818F15D17248E /* HelloWorld */,
- E4DC8A9EFE6F9C5F90DD96E4 /* HelloWorldTests */,
- );
- name = ExpoModulesProviders;
- sourceTree = "";
- };
- 6289853FD5D818F15D17248E /* HelloWorld */ = {
- isa = PBXGroup;
- children = (
- 951E59D51E504BC9C5F46169 /* ExpoModulesProvider.swift */,
- );
- name = HelloWorld;
- sourceTree = "";
- };
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
@@ -139,11 +84,10 @@
children = (
13B07FAE1A68108700A75B9A /* HelloWorld */,
832341AE1AAA6A7D00B99B32 /* Libraries */,
- 00E356EF1AD99517003FC87E /* HelloWorldTests */,
83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
- BBD78D7AC51CEA395F1C20DB /* Pods */,
- 547A8E9E9663ECB3355FB756 /* ExpoModulesProviders */,
+ D65327D7A22EEC0BE12398D9 /* Pods */,
+ D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */,
);
indentWidth = 2;
sourceTree = "";
@@ -154,68 +98,60 @@
isa = PBXGroup;
children = (
13B07F961A680F5B00A75B9A /* HelloWorld.app */,
- 00E356EE1AD99517003FC87E /* HelloWorldTests.xctest */,
);
name = Products;
sourceTree = "";
};
- BBD78D7AC51CEA395F1C20DB /* Pods */ = {
+ 92DBD88DE9BF7D494EA9DA96 /* HelloWorld */ = {
isa = PBXGroup;
children = (
- 3B4392A12AC88292D35C810B /* Pods-HelloWorld.debug.xcconfig */,
- 5709B34CF0A7D63546082F79 /* Pods-HelloWorld.release.xcconfig */,
- 5B7EB9410499542E8C5724F5 /* Pods-HelloWorld-HelloWorldTests.debug.xcconfig */,
- 89C6BE57DB24E9ADA2F236DE /* Pods-HelloWorld-HelloWorldTests.release.xcconfig */,
+ FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */,
+ );
+ name = HelloWorld;
+ sourceTree = "";
+ };
+ BB2F792B24A3F905000567C9 /* Supporting */ = {
+ isa = PBXGroup;
+ children = (
+ BB2F792C24A3F905000567C9 /* Expo.plist */,
+ );
+ name = Supporting;
+ path = HelloWorld/Supporting;
+ sourceTree = "";
+ };
+ D65327D7A22EEC0BE12398D9 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 6C2E3173556A471DD304B334 /* Pods-HelloWorld.debug.xcconfig */,
+ 7A4D352CD337FB3A3BF06240 /* Pods-HelloWorld.release.xcconfig */,
);
path = Pods;
sourceTree = "";
};
- E4DC8A9EFE6F9C5F90DD96E4 /* HelloWorldTests */ = {
+ D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = {
isa = PBXGroup;
children = (
- D5AFED2E09CC2E86D1338C0F /* ExpoModulesProvider.swift */,
+ 92DBD88DE9BF7D494EA9DA96 /* HelloWorld */,
);
- name = HelloWorldTests;
+ name = ExpoModulesProviders;
sourceTree = "";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
- 00E356ED1AD99517003FC87E /* HelloWorldTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "HelloWorldTests" */;
- buildPhases = (
- A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
- D132AD5E4383288EDCDF417A /* [Expo] Configure project */,
- 00E356EA1AD99517003FC87E /* Sources */,
- 00E356EB1AD99517003FC87E /* Frameworks */,
- 00E356EC1AD99517003FC87E /* Resources */,
- C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
- F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 00E356F51AD99517003FC87E /* PBXTargetDependency */,
- );
- name = HelloWorldTests;
- productName = HelloWorldTests;
- productReference = 00E356EE1AD99517003FC87E /* HelloWorldTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
13B07F861A680F5B00A75B9A /* HelloWorld */ = {
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "HelloWorld" */;
buildPhases = (
- C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
+ 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */,
FD10A7F022414F080027D42C /* Start Packager */,
- 99A971CD1133B5D286761AA1 /* [Expo] Configure project */,
+ DF553021445C9DD787E8BC0F /* [Expo] Configure project */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
- 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
- E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
+ 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
+ 01C5DD6A5E465E3E1E466CBC /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -232,19 +168,15 @@
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1340;
+ LastUpgradeCheck = 1130;
TargetAttributes = {
- 00E356ED1AD99517003FC87E = {
- CreatedOnToolsVersion = 6.2;
- TestTargetID = 13B07F861A680F5B00A75B9A;
- };
13B07F861A680F5B00A75B9A = {
- LastSwiftMigration = 1120;
+ LastSwiftMigration = 1250;
};
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "HelloWorld" */;
- compatibilityVersion = "Xcode 12.0";
+ compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -257,25 +189,18 @@
projectRoot = "";
targets = (
13B07F861A680F5B00A75B9A /* HelloWorld */,
- 00E356ED1AD99517003FC87E /* HelloWorldTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
- 00E356EC1AD99517003FC87E /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
13B07F8E1A680F5B00A75B9A /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- BE406F562862D73000A81E39 /* BootSplash.storyboard in Resources */,
+ BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -288,53 +213,33 @@
files = (
);
inputPaths = (
- "$(SRCROOT)/.xcode.env.local",
- "$(SRCROOT)/.xcode.env",
);
name = "Bundle React Native code and images";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
+ shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios relative | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli')\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n";
};
- 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
+ 01C5DD6A5E465E3E1E466CBC /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-frameworks.sh",
+ "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
- 99A971CD1133B5D286761AA1 /* [Expo] Configure project */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- name = "[Expo] Configure project";
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-HelloWorld/expo-configure-project.sh\"\n";
- };
- A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
+ 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -349,53 +254,34 @@
outputFileListPaths = (
);
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-HelloWorld-HelloWorldTests-checkManifestLockResult.txt",
+ "$(DERIVED_FILE_DIR)/Pods-HelloWorld-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
+ 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
- inputFileListPaths = (
- );
inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-resources.sh",
+ "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
);
+ name = "[CP] Copy Pods Resources";
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-HelloWorld-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests-frameworks.sh\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-resources.sh\"\n";
showEnvVarsInLog = 0;
};
- D132AD5E4383288EDCDF417A /* [Expo] Configure project */ = {
+ DF553021445C9DD787E8BC0F /* [Expo] Configure project */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
@@ -412,41 +298,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-HelloWorld-HelloWorldTests/expo-configure-project.sh\"\n";
- };
- E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-resources-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Copy Pods Resources";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-resources-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HelloWorld/Pods-HelloWorld-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
- F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests-resources-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Copy Pods Resources";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests-resources-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HelloWorld-HelloWorldTests/Pods-HelloWorld-HelloWorldTests-resources.sh\"\n";
- showEnvVarsInLog = 0;
+ shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-HelloWorld/expo-configure-project.sh\"\n";
};
FD10A7F022414F080027D42C /* Start Packager */ = {
isa = PBXShellScriptBuildPhase;
@@ -464,112 +316,43 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
+ shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `$NODE_BINARY --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `$NODE_BINARY --print \"require('path').dirname(require.resolve('expo/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
- 00E356EA1AD99517003FC87E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 00E356F31AD99517003FC87E /* HelloWorldTests.m in Sources */,
- 2215ACBC1E62C44583DB69A9 /* ExpoModulesProvider.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
13B07F871A680F5B00A75B9A /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
13B07FC11A68108700A75B9A /* main.m in Sources */,
- 400EB2C1E1807E6CBC68B7AB /* ExpoModulesProvider.swift in Sources */,
+ B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */,
+ FBB8240DE3B54DA7A908FDE3 /* noop-file.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
-/* Begin PBXTargetDependency section */
- 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 13B07F861A680F5B00A75B9A /* HelloWorld */;
- targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
/* Begin XCBuildConfiguration section */
- 00E356F61AD99517003FC87E /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-HelloWorld-HelloWorldTests.debug.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
- BUNDLE_LOADER = "$(TEST_HOST)";
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- INFOPLIST_FILE = HelloWorldTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "-lc++",
- "$(inherited)",
- );
- OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
- PRODUCT_BUNDLE_IDENTIFIER = com.helloworld;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloWorld.app/HelloWorld";
- };
- name = Debug;
- };
- 00E356F71AD99517003FC87E /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-HelloWorld-HelloWorldTests.release.xcconfig */;
- buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
- BUNDLE_LOADER = "$(TEST_HOST)";
- COPY_PHASE_STRIP = NO;
- INFOPLIST_FILE = HelloWorldTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "-lc++",
- "$(inherited)",
- );
- OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
- PRODUCT_BUNDLE_IDENTIFIER = com.helloworld;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloWorld.app/HelloWorld";
- };
- name = Release;
- };
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-HelloWorld.debug.xcconfig */;
+ baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-HelloWorld.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = HelloWorld/HelloWorld.entitlements;
CURRENT_PROJECT_VERSION = 1;
ENABLE_BITCODE = NO;
- INFOPLIST_FILE = HelloWorld/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
+ GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
- "@executable_path/Frameworks",
+ "FB_SONARKIT_ENABLED=1",
);
+ INFOPLIST_FILE = HelloWorld/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MARKETING_VERSION = 1.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -578,24 +361,26 @@
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = com.helloworld;
PRODUCT_NAME = HelloWorld;
+ SWIFT_OBJC_BRIDGING_HEADER = "HelloWorld/HelloWorld-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-HelloWorld.release.xcconfig */;
+ baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-HelloWorld.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = HelloWorld/HelloWorld.entitlements;
CURRENT_PROJECT_VERSION = 1;
INFOPLIST_FILE = HelloWorld/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MARKETING_VERSION = 1.0;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -604,7 +389,9 @@
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = com.helloworld;
PRODUCT_NAME = HelloWorld;
+ SWIFT_OBJC_BRIDGING_HEADER = "HelloWorld/HelloWorld-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
@@ -632,7 +419,6 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -659,24 +445,12 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = (
- /usr/lib/swift,
- "$(inherited)",
- );
- LIBRARY_SEARCH_PATHS = (
- "\"$(SDKROOT)/usr/lib/swift\"",
- "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
- "\"$(inherited)\"",
- );
+ 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)";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "-DFOLLY_NO_CONFIG",
- "-DFOLLY_MOBILE=1",
- "-DFOLLY_USE_LIBCPP=1",
- );
+ OTHER_CPLUSPLUSFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
};
@@ -705,7 +479,6 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -725,26 +498,13 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
- LD_RUNPATH_SEARCH_PATHS = (
- /usr/lib/swift,
- "$(inherited)",
- );
- LIBRARY_SEARCH_PATHS = (
- "\"$(SDKROOT)/usr/lib/swift\"",
- "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
- "\"$(inherited)\"",
- );
+ LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
+ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "$(inherited)";
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "-DFOLLY_NO_CONFIG",
- "-DFOLLY_MOBILE=1",
- "-DFOLLY_USE_LIBCPP=1",
- );
+ OTHER_CPLUSPLUSFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
- SWIFT_COMPILATION_MODE = wholemodule;
VALIDATE_PRODUCT = YES;
};
name = Release;
@@ -752,15 +512,6 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
- 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "HelloWorldTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 00E356F61AD99517003FC87E /* Debug */,
- 00E356F71AD99517003FC87E /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "HelloWorld" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme b/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme
index c7c584ca8..39743fdfd 100644
--- a/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme
+++ b/boilerplate/ios/HelloWorld.xcodeproj/xcshareddata/xcschemes/HelloWorld.xcscheme
@@ -1,6 +1,6 @@
#import
@@ -8,25 +7,19 @@ @implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
- self.moduleName = @"HelloWorld";
+ self.moduleName = @"main";
// You can add your custom initial props in the dictionary below.
// They will be passed down to the ViewController used by React Native.
self.initialProps = @{};
- [super application:application didFinishLaunchingWithOptions:launchOptions];
-
- // RN BootSplash
- UIView *rootView = self.window.rootViewController.view; // react-native >= 0.71 specific
- [RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView];
-
- return YES;
+ return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
diff --git a/boilerplate/ios/HelloWorld/BootSplash.storyboard b/boilerplate/ios/HelloWorld/BootSplash.storyboard
deleted file mode 100644
index 68d8237b2..000000000
--- a/boilerplate/ios/HelloWorld/BootSplash.storyboard
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/boilerplate/ios/HelloWorld-Bridging-Header.h b/boilerplate/ios/HelloWorld/HelloWorld-Bridging-Header.h
similarity index 99%
rename from boilerplate/ios/HelloWorld-Bridging-Header.h
rename to boilerplate/ios/HelloWorld/HelloWorld-Bridging-Header.h
index 1b2cb5d6d..e11d920b1 100644
--- a/boilerplate/ios/HelloWorld-Bridging-Header.h
+++ b/boilerplate/ios/HelloWorld/HelloWorld-Bridging-Header.h
@@ -1,4 +1,3 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
-
diff --git a/boilerplate/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/boilerplate/ios/HelloWorld/HelloWorld.entitlements
similarity index 64%
rename from boilerplate/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to boilerplate/ios/HelloWorld/HelloWorld.entitlements
index 18d981003..018a6e20c 100644
--- a/boilerplate/ios/HelloWorld.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ b/boilerplate/ios/HelloWorld/HelloWorld.entitlements
@@ -1,8 +1,8 @@
-
- IDEDidComputeMac32BitWarning
-
-
-
+
+ aps-environment
+ development
+
+
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png
new file mode 100644
index 000000000..2f61b9273
Binary files /dev/null and b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Contents.json b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Contents.json
index bc6b57a1e..90d8d4c2a 100644
--- a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Contents.json
+++ b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -1,116 +1,14 @@
{
"images": [
{
- "filename": "Icon-20-iphone@2x.png",
- "idiom": "iphone",
- "scale": "2x",
- "size": "20x20"
- },
- {
- "filename": "Icon-20-iphone@3x.png",
- "idiom": "iphone",
- "scale": "3x",
- "size": "20x20"
- },
- {
- "filename": "Icon-29-iphone@2x.png",
- "idiom": "iphone",
- "scale": "2x",
- "size": "29x29"
- },
- {
- "filename": "Icon-29-iphone@3x.png",
- "idiom": "iphone",
- "scale": "3x",
- "size": "29x29"
- },
- {
- "filename": "Icon-40-iphone@2x.png",
- "idiom": "iphone",
- "scale": "2x",
- "size": "40x40"
- },
- {
- "filename": "Icon-40-iphone@3x.png",
- "idiom": "iphone",
- "scale": "3x",
- "size": "40x40"
- },
- {
- "filename": "Icon-60-iphone@2x.png",
- "idiom": "iphone",
- "scale": "2x",
- "size": "60x60"
- },
- {
- "filename": "Icon-60-iphone@3x.png",
- "idiom": "iphone",
- "scale": "3x",
- "size": "60x60"
- },
- {
- "filename": "Icon-20-ipad.png",
- "idiom": "ipad",
- "scale": "1x",
- "size": "20x20"
- },
- {
- "filename": "Icon-20-ipad@2x.png",
- "idiom": "ipad",
- "scale": "2x",
- "size": "20x20"
- },
- {
- "filename": "Icon-29-ipad.png",
- "idiom": "ipad",
- "scale": "1x",
- "size": "29x29"
- },
- {
- "filename": "Icon-29-ipad@2x.png",
- "idiom": "ipad",
- "scale": "2x",
- "size": "29x29"
- },
- {
- "filename": "Icon-40-ipad.png",
- "idiom": "ipad",
- "scale": "1x",
- "size": "40x40"
- },
- {
- "filename": "Icon-40-ipad@2x.png",
- "idiom": "ipad",
- "scale": "2x",
- "size": "40x40"
- },
- {
- "filename": "Icon-76-ipad.png",
- "idiom": "ipad",
- "scale": "1x",
- "size": "76x76"
- },
- {
- "filename": "Icon-76-ipad@2x.png",
- "idiom": "ipad",
- "scale": "2x",
- "size": "76x76"
- },
- {
- "filename": "Icon-83.5-ipad@2x.png",
- "idiom": "ipad",
- "scale": "2x",
- "size": "83.5x83.5"
- },
- {
- "filename": "Icon-1024-ios-marketing.png",
- "idiom": "ios-marketing",
- "scale": "1x",
+ "filename": "App-Icon-1024x1024@1x.png",
+ "idiom": "universal",
+ "platform": "ios",
"size": "1024x1024"
}
],
"info": {
- "author": "xcode",
- "version": 1
+ "version": 1,
+ "author": "expo"
}
-}
+}
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-1024-ios-marketing.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-1024-ios-marketing.png
deleted file mode 100644
index 652bef698..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-1024-ios-marketing.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-ipad.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-ipad.png
deleted file mode 100644
index 26a53b6db..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-ipad.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-ipad@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-ipad@2x.png
deleted file mode 100644
index e8d2f8b9c..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-ipad@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-iphone@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-iphone@2x.png
deleted file mode 100644
index e8d2f8b9c..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-iphone@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-iphone@3x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-iphone@3x.png
deleted file mode 100644
index 658052b76..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-20-iphone@3x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-ipad.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-ipad.png
deleted file mode 100644
index d57f5ef07..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-ipad.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-ipad@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-ipad@2x.png
deleted file mode 100644
index 33ad2ffa6..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-ipad@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-iphone@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-iphone@2x.png
deleted file mode 100644
index 33ad2ffa6..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-iphone@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-iphone@3x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-iphone@3x.png
deleted file mode 100644
index 32ee24bf0..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-29-iphone@3x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-ipad.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-ipad.png
deleted file mode 100644
index e8d2f8b9c..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-ipad.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-ipad@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-ipad@2x.png
deleted file mode 100644
index 46467da55..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-ipad@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-iphone@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-iphone@2x.png
deleted file mode 100644
index 46467da55..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-iphone@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-iphone@3x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-iphone@3x.png
deleted file mode 100644
index d15ec4ec1..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-40-iphone@3x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-60-iphone@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-60-iphone@2x.png
deleted file mode 100644
index d15ec4ec1..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-60-iphone@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-60-iphone@3x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-60-iphone@3x.png
deleted file mode 100644
index a1eed3f4b..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-60-iphone@3x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-76-ipad.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-76-ipad.png
deleted file mode 100644
index 63dc271e4..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-76-ipad.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-76-ipad@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-76-ipad@2x.png
deleted file mode 100644
index e5cdb61b6..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-76-ipad@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-83.5-ipad@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-83.5-ipad@2x.png
deleted file mode 100644
index 30fadf77a..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/AppIcon.appiconset/Icon-83.5-ipad@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png b/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png
deleted file mode 100644
index fa7cd52c0..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png b/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png
deleted file mode 100644
index 50c70f6a1..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png b/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png
deleted file mode 100644
index bdc1181d9..000000000
Binary files a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png and /dev/null differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/Contents.json b/boilerplate/ios/HelloWorld/Images.xcassets/Contents.json
index 97a8662eb..ed285c2e5 100644
--- a/boilerplate/ios/HelloWorld/Images.xcassets/Contents.json
+++ b/boilerplate/ios/HelloWorld/Images.xcassets/Contents.json
@@ -1,6 +1,6 @@
{
- "info": {
- "version": 1,
- "author": "xcode"
+ "info" : {
+ "version" : 1,
+ "author" : "expo"
}
}
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/Contents.json b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/Contents.json
new file mode 100644
index 000000000..24e14594e
--- /dev/null
+++ b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/Contents.json
@@ -0,0 +1,30 @@
+{
+ "images": [
+ {
+ "idiom": "universal",
+ "filename": "image.png",
+ "scale": "1x"
+ },
+ {
+ "idiom": "universal",
+ "scale": "2x"
+ },
+ {
+ "idiom": "universal",
+ "scale": "3x"
+ },
+ {
+ "idiom": "ipad",
+ "filename": "tablet_image.png",
+ "scale": "1x"
+ },
+ {
+ "idiom": "ipad",
+ "scale": "2x"
+ }
+ ],
+ "info": {
+ "version": 1,
+ "author": "expo"
+ }
+}
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/image.png b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/image.png
new file mode 100644
index 000000000..a6b6390ab
Binary files /dev/null and b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/image.png differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/tablet_image.png b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/tablet_image.png
new file mode 100644
index 000000000..49bba1be3
Binary files /dev/null and b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreen.imageset/tablet_image.png differ
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/Contents.json b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/Contents.json
similarity index 60%
rename from boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/Contents.json
rename to boilerplate/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/Contents.json
index 570652dfd..3cf848977 100644
--- a/boilerplate/ios/HelloWorld/Images.xcassets/BootSplashLogo.imageset/Contents.json
+++ b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/Contents.json
@@ -2,22 +2,20 @@
"images": [
{
"idiom": "universal",
- "filename": "bootsplash_logo.png",
+ "filename": "image.png",
"scale": "1x"
},
{
"idiom": "universal",
- "filename": "bootsplash_logo@2x.png",
"scale": "2x"
},
{
"idiom": "universal",
- "filename": "bootsplash_logo@3x.png",
"scale": "3x"
}
],
"info": {
"version": 1,
- "author": "xcode"
+ "author": "expo"
}
-}
+}
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/image.png b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/image.png
new file mode 100644
index 000000000..31a209f6a
Binary files /dev/null and b/boilerplate/ios/HelloWorld/Images.xcassets/SplashScreenBackground.imageset/image.png differ
diff --git a/boilerplate/ios/HelloWorld/Info.plist b/boilerplate/ios/HelloWorld/Info.plist
index 6e2265e92..100abd778 100644
--- a/boilerplate/ios/HelloWorld/Info.plist
+++ b/boilerplate/ios/HelloWorld/Info.plist
@@ -1,55 +1,79 @@
-
- CFBundleDevelopmentRegion
- en
- CFBundleDisplayName
- HelloWorld
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- NSAppTransportSecurity
-
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
-
-
-
- NSLocationWhenInUseUsageDescription
-
- UILaunchStoryboardName
- BootSplash
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIViewControllerBasedStatusBarAppearance
-
-
-
+
+ CADisableMinimumFrameDurationOnPhone
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ HelloWorld
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleURLTypes
+
+
+ CFBundleURLSchemes
+
+ helloworld
+ com.helloworld
+
+
+
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSExceptionDomains
+
+ localhost
+
+ NSExceptionAllowsInsecureHTTPLoads
+
+
+
+
+ UILaunchStoryboardName
+ SplashScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UIRequiresFullScreen
+
+ UIStatusBarStyle
+ UIStatusBarStyleDefault
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIUserInterfaceStyle
+ Light
+ UIViewControllerBasedStatusBarAppearance
+
+
+
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/SplashScreen.storyboard b/boilerplate/ios/HelloWorld/SplashScreen.storyboard
new file mode 100644
index 000000000..ed03a5299
--- /dev/null
+++ b/boilerplate/ios/HelloWorld/SplashScreen.storyboard
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/Supporting/Expo.plist b/boilerplate/ios/HelloWorld/Supporting/Expo.plist
new file mode 100644
index 000000000..64eaffaac
--- /dev/null
+++ b/boilerplate/ios/HelloWorld/Supporting/Expo.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ EXUpdatesCheckOnLaunch
+ ALWAYS
+ EXUpdatesEnabled
+
+ EXUpdatesLaunchWaitMs
+ 0
+ EXUpdatesSDKVersion
+ 49.0.0
+
+
\ No newline at end of file
diff --git a/boilerplate/ios/HelloWorld/main.m b/boilerplate/ios/HelloWorld/main.m
index d645c7246..25181b6cc 100644
--- a/boilerplate/ios/HelloWorld/main.m
+++ b/boilerplate/ios/HelloWorld/main.m
@@ -2,9 +2,9 @@
#import "AppDelegate.h"
-int main(int argc, char *argv[])
-{
+int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
+
diff --git a/boilerplate/ios/HelloWorld/ignite-noop.swift b/boilerplate/ios/HelloWorld/noop-file.swift
similarity index 100%
rename from boilerplate/ios/HelloWorld/ignite-noop.swift
rename to boilerplate/ios/HelloWorld/noop-file.swift
diff --git a/boilerplate/ios/HelloWorldTests/HelloWorldTests.m b/boilerplate/ios/HelloWorldTests/HelloWorldTests.m
deleted file mode 100644
index 884d405d6..000000000
--- a/boilerplate/ios/HelloWorldTests/HelloWorldTests.m
+++ /dev/null
@@ -1,66 +0,0 @@
-#import
-#import
-
-#import
-#import
-
-#define TIMEOUT_SECONDS 600
-#define TEXT_TO_LOOK_FOR @"Welcome to React"
-
-@interface HelloWorldTests : XCTestCase
-
-@end
-
-@implementation HelloWorldTests
-
-- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
-{
- if (test(view)) {
- return YES;
- }
- for (UIView *subview in [view subviews]) {
- if ([self findSubviewInView:subview matching:test]) {
- return YES;
- }
- }
- return NO;
-}
-
-- (void)testRendersWelcomeScreen
-{
- UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
- NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
- BOOL foundElement = NO;
-
- __block NSString *redboxError = nil;
-#ifdef DEBUG
- RCTSetLogFunction(
- ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
- if (level >= RCTLogLevelError) {
- redboxError = message;
- }
- });
-#endif
-
- while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
- [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
- [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
-
- foundElement = [self findSubviewInView:vc.view
- matching:^BOOL(UIView *view) {
- if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
- return YES;
- }
- return NO;
- }];
- }
-
-#ifdef DEBUG
- RCTSetLogFunction(RCTDefaultLogFunction);
-#endif
-
- XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
- XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
-}
-
-@end
diff --git a/boilerplate/ios/HelloWorldTests/Info.plist b/boilerplate/ios/HelloWorldTests/Info.plist
deleted file mode 100644
index ba72822e8..000000000
--- a/boilerplate/ios/HelloWorldTests/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- BNDL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
-
-
diff --git a/boilerplate/ios/Podfile b/boilerplate/ios/Podfile
index 871589286..2402cc34b 100644
--- a/boilerplate/ios/Podfile
+++ b/boilerplate/ios/Podfile
@@ -1,16 +1,11 @@
-pod_folder = Pathname.new(__FILE__).dirname.realpath
-
-require File.join(File.dirname(`cd #{pod_folder} && node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
-# TODO come back to this for the react_native_pods.rb to allow for hoisting
-require File.join(File.dirname(`cd #{pod_folder} && node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
-require File.join(File.dirname(`cd #{pod_folder} && node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")
+require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
+require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}
-production = ENV["PRODUCTION"] == "1"
ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
-ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'
+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'
install! 'cocoapods',
@@ -30,7 +25,7 @@ prepare_react_native_project!
# }
# ```
flipper_config = FlipperConfiguration.disabled
-if ENV['NO_FLIPPER'] == "1" || ENV['CI'] then
+if ENV['NO_FLIPPER'] == '1' then
# Explicitly disabled through environment variables
flipper_config = FlipperConfiguration.disabled
elsif podfile_properties.key?('ios.flipper') then
@@ -54,33 +49,22 @@ target 'HelloWorld' do
use_react_native!(
:path => config[:reactNativePath],
- :production => production,
- # Hermes is now enabled by default. Disable by setting this in Podfile.properties.json.
- # Upcoming versions of React Native may rely on get_default_flags(), but
- # we make it explicit here to aid in the React Native upgrade process.
:hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
:fabric_enabled => flags[:fabric_enabled],
- # Note that if you have use_frameworks! enabled, Flipper will not work if enabled
- :flipper_configuration => flipper_config,
# An absolute path to your application root.
- :app_path => "#{Pod::Config.instance.installation_root}/.."
+ :app_path => "#{Pod::Config.instance.installation_root}/..",
+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled
+ :flipper_configuration => flipper_config
)
- target 'HelloWorldTests' do
- inherit! :complete
- # Pods for testing
- end
-
post_install do |installer|
- # https://github.com/facebook/react-native/blob/main/scripts/react_native_pods.rb#L197-L202
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false
)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
- File.delete("./.xcode.env.local") if File.exist?("./.xcode.env.local")
-
+
# This is necessary for Xcode 14, because it signs resource bundles by default
# when building for devices.
installer.target_installation_results.pod_target_installation_results
diff --git a/boilerplate/ios/Podfile.lock b/boilerplate/ios/Podfile.lock
index 134016c4e..02cfe1d14 100644
--- a/boilerplate/ios/Podfile.lock
+++ b/boilerplate/ios/Podfile.lock
@@ -1,6 +1,5 @@
PODS:
- boost (1.76.0)
- - CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- EXApplication (5.3.0):
- ExpoModulesCore
@@ -10,7 +9,7 @@ PODS:
- ExpoModulesCore
- EXFont (11.4.0):
- ExpoModulesCore
- - Expo (49.0.0-beta.0):
+ - Expo (49.0.3):
- ExpoModulesCore
- ExpoDevice (5.4.0):
- ExpoModulesCore
@@ -18,89 +17,30 @@ PODS:
- ExpoModulesCore
- ExpoLocalization (14.3.0):
- ExpoModulesCore
- - ExpoModulesCore (1.5.3):
+ - ExpoModulesCore (1.5.7):
- RCT-Folly (= 2021.07.22.00)
- React-Core
- React-NativeModulesApple
- React-RCTAppDelegate
- ReactCommon/turbomodule/core
- - EXSplashScreen (0.20.2):
+ - EXSplashScreen (0.20.4):
- ExpoModulesCore
- RCT-Folly (= 2021.07.22.00)
- React-Core
- - FBLazyVector (0.72.0)
- - FBReactNativeSpec (0.72.0):
- - RCT-Folly (= 2021.07.22.00)
- - RCTRequired (= 0.72.0)
- - RCTTypeSafety (= 0.72.0)
- - React-Core (= 0.72.0)
- - React-jsi (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - Flipper (0.182.0):
- - Flipper-Folly (~> 2.6)
- - Flipper-Boost-iOSX (1.76.0.1.11)
- - Flipper-DoubleConversion (3.2.0.1)
- - Flipper-Fmt (7.1.7)
- - Flipper-Folly (2.6.10):
- - Flipper-Boost-iOSX
- - Flipper-DoubleConversion
- - Flipper-Fmt (= 7.1.7)
- - Flipper-Glog
- - libevent (~> 2.1.12)
- - OpenSSL-Universal (= 1.1.1100)
- - Flipper-Glog (0.5.0.5)
- - Flipper-PeerTalk (0.0.4)
- - FlipperKit (0.182.0):
- - FlipperKit/Core (= 0.182.0)
- - FlipperKit/Core (0.182.0):
- - Flipper (~> 0.182.0)
- - FlipperKit/CppBridge
- - FlipperKit/FBCxxFollyDynamicConvert
- - FlipperKit/FBDefines
- - FlipperKit/FKPortForwarding
- - SocketRocket (~> 0.6.0)
- - FlipperKit/CppBridge (0.182.0):
- - Flipper (~> 0.182.0)
- - FlipperKit/FBCxxFollyDynamicConvert (0.182.0):
- - Flipper-Folly (~> 2.6)
- - FlipperKit/FBDefines (0.182.0)
- - FlipperKit/FKPortForwarding (0.182.0):
- - CocoaAsyncSocket (~> 7.6)
- - Flipper-PeerTalk (~> 0.0.4)
- - FlipperKit/FlipperKitHighlightOverlay (0.182.0)
- - FlipperKit/FlipperKitLayoutHelpers (0.182.0):
- - FlipperKit/Core
- - FlipperKit/FlipperKitHighlightOverlay
- - FlipperKit/FlipperKitLayoutTextSearchable
- - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0):
- - FlipperKit/Core
- - FlipperKit/FlipperKitHighlightOverlay
- - FlipperKit/FlipperKitLayoutHelpers
- - YogaKit (~> 1.18)
- - FlipperKit/FlipperKitLayoutPlugin (0.182.0):
- - FlipperKit/Core
- - FlipperKit/FlipperKitHighlightOverlay
- - FlipperKit/FlipperKitLayoutHelpers
- - FlipperKit/FlipperKitLayoutIOSDescriptors
- - FlipperKit/FlipperKitLayoutTextSearchable
- - YogaKit (~> 1.18)
- - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0)
- - FlipperKit/FlipperKitNetworkPlugin (0.182.0):
- - FlipperKit/Core
- - FlipperKit/FlipperKitReactPlugin (0.182.0):
- - FlipperKit/Core
- - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0):
- - FlipperKit/Core
- - FlipperKit/SKIOSNetworkPlugin (0.182.0):
- - FlipperKit/Core
- - FlipperKit/FlipperKitNetworkPlugin
+ - FBLazyVector (0.72.3)
+ - FBReactNativeSpec (0.72.3):
+ - RCT-Folly (= 2021.07.22.00)
+ - RCTRequired (= 0.72.3)
+ - RCTTypeSafety (= 0.72.3)
+ - React-Core (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
- fmt (6.2.1)
- glog (0.3.5)
- - hermes-engine (0.72.0):
- - hermes-engine/Pre-built (= 0.72.0)
- - hermes-engine/Pre-built (0.72.0)
+ - hermes-engine (0.72.3):
+ - hermes-engine/Pre-built (= 0.72.3)
+ - hermes-engine/Pre-built (0.72.3)
- libevent (2.1.12)
- - OpenSSL-Universal (1.1.1100)
- RCT-Folly (2021.07.22.00):
- boost
- DoubleConversion
@@ -118,26 +58,26 @@ PODS:
- fmt (~> 6.2.1)
- glog
- libevent
- - RCTRequired (0.72.0)
- - RCTTypeSafety (0.72.0):
- - FBLazyVector (= 0.72.0)
- - RCTRequired (= 0.72.0)
- - React-Core (= 0.72.0)
- - React (0.72.0):
- - React-Core (= 0.72.0)
- - React-Core/DevSupport (= 0.72.0)
- - React-Core/RCTWebSocket (= 0.72.0)
- - React-RCTActionSheet (= 0.72.0)
- - React-RCTAnimation (= 0.72.0)
- - React-RCTBlob (= 0.72.0)
- - React-RCTImage (= 0.72.0)
- - React-RCTLinking (= 0.72.0)
- - React-RCTNetwork (= 0.72.0)
- - React-RCTSettings (= 0.72.0)
- - React-RCTText (= 0.72.0)
- - React-RCTVibration (= 0.72.0)
- - React-callinvoker (0.72.0)
- - React-Codegen (0.72.0):
+ - RCTRequired (0.72.3)
+ - RCTTypeSafety (0.72.3):
+ - FBLazyVector (= 0.72.3)
+ - RCTRequired (= 0.72.3)
+ - React-Core (= 0.72.3)
+ - React (0.72.3):
+ - React-Core (= 0.72.3)
+ - React-Core/DevSupport (= 0.72.3)
+ - React-Core/RCTWebSocket (= 0.72.3)
+ - React-RCTActionSheet (= 0.72.3)
+ - React-RCTAnimation (= 0.72.3)
+ - React-RCTBlob (= 0.72.3)
+ - React-RCTImage (= 0.72.3)
+ - React-RCTLinking (= 0.72.3)
+ - React-RCTNetwork (= 0.72.3)
+ - React-RCTSettings (= 0.72.3)
+ - React-RCTText (= 0.72.3)
+ - React-RCTVibration (= 0.72.3)
+ - React-callinvoker (0.72.3)
+ - React-Codegen (0.72.3):
- DoubleConversion
- FBReactNativeSpec
- glog
@@ -152,11 +92,11 @@ PODS:
- React-rncore
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-Core (0.72.0):
+ - React-Core (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.0)
+ - React-Core/Default (= 0.72.3)
- React-cxxreact
- React-hermes
- React-jsi
@@ -164,9 +104,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/CoreModulesHeaders (0.72.0):
+ - React-Core/CoreModulesHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -178,9 +118,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/Default (0.72.0):
+ - React-Core/Default (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -191,25 +131,25 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/DevSupport (0.72.0):
+ - React-Core/DevSupport (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.0)
- - React-Core/RCTWebSocket (= 0.72.0)
+ - React-Core/Default (= 0.72.3)
+ - React-Core/RCTWebSocket (= 0.72.3)
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- - React-jsinspector (= 0.72.0)
+ - React-jsinspector (= 0.72.3)
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTActionSheetHeaders (0.72.0):
+ - React-Core/RCTActionSheetHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -221,9 +161,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTAnimationHeaders (0.72.0):
+ - React-Core/RCTAnimationHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -235,9 +175,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTBlobHeaders (0.72.0):
+ - React-Core/RCTBlobHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -249,9 +189,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTImageHeaders (0.72.0):
+ - React-Core/RCTImageHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -263,9 +203,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTLinkingHeaders (0.72.0):
+ - React-Core/RCTLinkingHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -277,9 +217,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTNetworkHeaders (0.72.0):
+ - React-Core/RCTNetworkHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -291,9 +231,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTSettingsHeaders (0.72.0):
+ - React-Core/RCTSettingsHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -305,9 +245,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTTextHeaders (0.72.0):
+ - React-Core/RCTTextHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -319,9 +259,9 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTVibrationHeaders (0.72.0):
+ - React-Core/RCTVibrationHeaders (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -333,13 +273,13 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTWebSocket (0.72.0):
+ - React-Core/RCTWebSocket (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.0)
+ - React-Core/Default (= 0.72.3)
- React-cxxreact
- React-hermes
- React-jsi
@@ -347,58 +287,59 @@ PODS:
- React-perflogger
- React-runtimeexecutor
- React-utils
- - SocketRocket (= 0.6.0)
+ - SocketRocket (= 0.6.1)
- Yoga
- - React-CoreModules (0.72.0):
+ - React-CoreModules (0.72.3):
- RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.0)
- - React-Codegen (= 0.72.0)
- - React-Core/CoreModulesHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
+ - RCTTypeSafety (= 0.72.3)
+ - React-Codegen (= 0.72.3)
+ - React-Core/CoreModulesHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
- React-RCTBlob
- - React-RCTImage (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - SocketRocket (= 0.6.0)
- - React-cxxreact (0.72.0):
+ - React-RCTImage (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - SocketRocket (= 0.6.1)
+ - React-cxxreact (0.72.3):
- boost (= 1.76.0)
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.0)
- - React-jsi (= 0.72.0)
- - React-jsinspector (= 0.72.0)
- - React-logger (= 0.72.0)
- - React-perflogger (= 0.72.0)
- - React-runtimeexecutor (= 0.72.0)
- - React-debug (0.72.0)
- - React-hermes (0.72.0):
+ - React-callinvoker (= 0.72.3)
+ - React-debug (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - React-jsinspector (= 0.72.3)
+ - React-logger (= 0.72.3)
+ - React-perflogger (= 0.72.3)
+ - React-runtimeexecutor (= 0.72.3)
+ - React-debug (0.72.3)
+ - React-hermes (0.72.3):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- RCT-Folly/Futures (= 2021.07.22.00)
- - React-cxxreact (= 0.72.0)
+ - React-cxxreact (= 0.72.3)
- React-jsi
- - React-jsiexecutor (= 0.72.0)
- - React-jsinspector (= 0.72.0)
- - React-perflogger (= 0.72.0)
- - React-jsi (0.72.0):
+ - React-jsiexecutor (= 0.72.3)
+ - React-jsinspector (= 0.72.3)
+ - React-perflogger (= 0.72.3)
+ - React-jsi (0.72.3):
- boost (= 1.76.0)
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-jsiexecutor (0.72.0):
+ - React-jsiexecutor (0.72.3):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-cxxreact (= 0.72.0)
- - React-jsi (= 0.72.0)
- - React-perflogger (= 0.72.0)
- - React-jsinspector (0.72.0)
- - React-logger (0.72.0):
+ - React-cxxreact (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - React-perflogger (= 0.72.3)
+ - React-jsinspector (0.72.3)
+ - React-logger (0.72.3):
- glog
- react-native-safe-area-context (4.6.3):
- RCT-Folly
@@ -406,7 +347,7 @@ PODS:
- RCTTypeSafety
- React-Core
- ReactCommon/turbomodule/core
- - React-NativeModulesApple (0.72.0):
+ - React-NativeModulesApple (0.72.3):
- hermes-engine
- React-callinvoker
- React-Core
@@ -415,17 +356,17 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-perflogger (0.72.0)
- - React-RCTActionSheet (0.72.0):
- - React-Core/RCTActionSheetHeaders (= 0.72.0)
- - React-RCTAnimation (0.72.0):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.0)
- - React-Codegen (= 0.72.0)
- - React-Core/RCTAnimationHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-RCTAppDelegate (0.72.0):
+ - React-perflogger (0.72.3)
+ - React-RCTActionSheet (0.72.3):
+ - React-Core/RCTActionSheetHeaders (= 0.72.3)
+ - React-RCTAnimation (0.72.3):
+ - RCT-Folly (= 2021.07.22.00)
+ - RCTTypeSafety (= 0.72.3)
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTAnimationHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-RCTAppDelegate (0.72.3):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
@@ -437,54 +378,54 @@ PODS:
- React-RCTNetwork
- React-runtimescheduler
- ReactCommon/turbomodule/core
- - React-RCTBlob (0.72.0):
+ - React-RCTBlob (0.72.3):
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.72.0)
- - React-Core/RCTBlobHeaders (= 0.72.0)
- - React-Core/RCTWebSocket (= 0.72.0)
- - React-jsi (= 0.72.0)
- - React-RCTNetwork (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-RCTImage (0.72.0):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.0)
- - React-Codegen (= 0.72.0)
- - React-Core/RCTImageHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
- - React-RCTNetwork (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-RCTLinking (0.72.0):
- - React-Codegen (= 0.72.0)
- - React-Core/RCTLinkingHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-RCTNetwork (0.72.0):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.0)
- - React-Codegen (= 0.72.0)
- - React-Core/RCTNetworkHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-RCTSettings (0.72.0):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.0)
- - React-Codegen (= 0.72.0)
- - React-Core/RCTSettingsHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-RCTText (0.72.0):
- - React-Core/RCTTextHeaders (= 0.72.0)
- - React-RCTVibration (0.72.0):
- - RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.72.0)
- - React-Core/RCTVibrationHeaders (= 0.72.0)
- - React-jsi (= 0.72.0)
- - ReactCommon/turbomodule/core (= 0.72.0)
- - React-rncore (0.72.0)
- - React-runtimeexecutor (0.72.0):
- - React-jsi (= 0.72.0)
- - React-runtimescheduler (0.72.0):
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTBlobHeaders (= 0.72.3)
+ - React-Core/RCTWebSocket (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - React-RCTNetwork (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-RCTImage (0.72.3):
+ - RCT-Folly (= 2021.07.22.00)
+ - RCTTypeSafety (= 0.72.3)
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTImageHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - React-RCTNetwork (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-RCTLinking (0.72.3):
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTLinkingHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-RCTNetwork (0.72.3):
+ - RCT-Folly (= 2021.07.22.00)
+ - RCTTypeSafety (= 0.72.3)
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTNetworkHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-RCTSettings (0.72.3):
+ - RCT-Folly (= 2021.07.22.00)
+ - RCTTypeSafety (= 0.72.3)
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTSettingsHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-RCTText (0.72.3):
+ - React-Core/RCTTextHeaders (= 0.72.3)
+ - React-RCTVibration (0.72.3):
+ - RCT-Folly (= 2021.07.22.00)
+ - React-Codegen (= 0.72.3)
+ - React-Core/RCTVibrationHeaders (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - ReactCommon/turbomodule/core (= 0.72.3)
+ - React-rncore (0.72.3)
+ - React-runtimeexecutor (0.72.3):
+ - React-jsi (= 0.72.3)
+ - React-runtimescheduler (0.72.3):
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
@@ -492,32 +433,30 @@ PODS:
- React-debug
- React-jsi
- React-runtimeexecutor
- - React-utils (0.72.0):
+ - React-utils (0.72.3):
- glog
- RCT-Folly (= 2021.07.22.00)
- React-debug
- - ReactCommon/turbomodule/bridging (0.72.0):
+ - ReactCommon/turbomodule/bridging (0.72.3):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.0)
- - React-cxxreact (= 0.72.0)
- - React-jsi (= 0.72.0)
- - React-logger (= 0.72.0)
- - React-perflogger (= 0.72.0)
- - ReactCommon/turbomodule/core (0.72.0):
+ - React-callinvoker (= 0.72.3)
+ - React-cxxreact (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - React-logger (= 0.72.3)
+ - React-perflogger (= 0.72.3)
+ - ReactCommon/turbomodule/core (0.72.3):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.0)
- - React-cxxreact (= 0.72.0)
- - React-jsi (= 0.72.0)
- - React-logger (= 0.72.0)
- - React-perflogger (= 0.72.0)
- - RNBootSplash (4.5.0):
- - React-Core
+ - React-callinvoker (= 0.72.3)
+ - React-cxxreact (= 0.72.3)
+ - React-jsi (= 0.72.3)
+ - React-logger (= 0.72.3)
+ - React-perflogger (= 0.72.3)
- RNCAsyncStorage (1.18.2):
- React-Core
- RNGestureHandler (2.12.0):
@@ -554,10 +493,8 @@ PODS:
- RNScreens (3.22.0):
- React-Core
- React-RCTImage
- - SocketRocket (0.6.0)
+ - SocketRocket (0.6.1)
- Yoga (1.14.0)
- - YogaKit (1.18.1):
- - Yoga (~> 1.14)
DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
@@ -574,30 +511,9 @@ DEPENDENCIES:
- EXSplashScreen (from `../node_modules/expo-splash-screen/ios`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- - Flipper (= 0.182.0)
- - Flipper-Boost-iOSX (= 1.76.0.1.11)
- - Flipper-DoubleConversion (= 3.2.0.1)
- - Flipper-Fmt (= 7.1.7)
- - Flipper-Folly (= 2.6.10)
- - Flipper-Glog (= 0.5.0.5)
- - Flipper-PeerTalk (= 0.0.4)
- - FlipperKit (= 0.182.0)
- - FlipperKit/Core (= 0.182.0)
- - FlipperKit/CppBridge (= 0.182.0)
- - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0)
- - FlipperKit/FBDefines (= 0.182.0)
- - FlipperKit/FKPortForwarding (= 0.182.0)
- - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0)
- - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0)
- - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0)
- - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0)
- - FlipperKit/FlipperKitReactPlugin (= 0.182.0)
- - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0)
- - FlipperKit/SKIOSNetworkPlugin (= 0.182.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- libevent (~> 2.1.12)
- - OpenSSL-Universal (= 1.1.1100)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
@@ -605,7 +521,6 @@ DEPENDENCIES:
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Codegen (from `build/generated/ios`)
- React-Core (from `../node_modules/react-native/`)
- - React-Core/DevSupport (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
@@ -633,7 +548,6 @@ DEPENDENCIES:
- React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
- React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- - RNBootSplash (from `../node_modules/react-native-bootsplash`)
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNReanimated (from `../node_modules/react-native-reanimated`)
@@ -642,20 +556,9 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- - CocoaAsyncSocket
- - Flipper
- - Flipper-Boost-iOSX
- - Flipper-DoubleConversion
- - Flipper-Fmt
- - Flipper-Folly
- - Flipper-Glog
- - Flipper-PeerTalk
- - FlipperKit
- fmt
- libevent
- - OpenSSL-Universal
- SocketRocket
- - YogaKit
EXTERNAL SOURCES:
boost:
@@ -757,8 +660,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/react/utils"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
- RNBootSplash:
- :path: "../node_modules/react-native-bootsplash"
RNCAsyncStorage:
:path: "../node_modules/@react-native-async-storage/async-storage"
RNGestureHandler:
@@ -772,75 +673,63 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
boost: 57d2868c099736d80fcd648bf211b4431e51a558
- CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
EXApplication: 02655a251434d564bb0e73291f5a490c74b5b76f
EXConstants: ce5bbea779da8031ac818c36bea41b10e14d04e1
EXFileSystem: d7f59869885cfeab3ac771e2a8d0f5ed98cd3fdb
EXFont: 738c44c390953ebcbab075a4848bfbef025fd9ee
- Expo: 9e72fb8ba10f6ee5e95745f69a845b16bceeef00
+ Expo: d5956de70d4076190861f6730b93e75478b6faf8
ExpoDevice: 1c1b0c9cad96c292c1de73948649cfd654b2b3c0
ExpoKeepAwake: be4cbd52d9b177cde0fd66daa1913afa3161fc1d
ExpoLocalization: be37fdd0b5930c6a49cd307b4542f4b426d6134c
- ExpoModulesCore: c7fc9558697e1dc7efef2b4841096cd6ab2b760f
- EXSplashScreen: 04ae8fa26b4954c6a49780c5653860a3613db4a4
- FBLazyVector: bb17efca94c43508cbe54fb0a35e36df30da5213
- FBReactNativeSpec: 6e7e74b1ed7f0a1a469a82a67521b33285f5fef3
- Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818
- Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
- Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
- Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
- Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
- Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
- Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
- FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6
+ ExpoModulesCore: f8f3cac222bb0f574c77664d7e05817eaa97434b
+ EXSplashScreen: 89586b0961acd173b04713b7457949b063a659da
+ FBLazyVector: 4cce221dd782d3ff7c4172167bba09d58af67ccb
+ FBReactNativeSpec: c6bd9e179757b3c0ecf815864fae8032377903ef
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
- hermes-engine: c85f703623cb12d7e1d9db91afe53b3ea8aa7219
+ hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
- OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
- RCTRequired: 656ef0536dd60a9740961ade6a64ba0cb0572d2b
- RCTTypeSafety: 82bd23b63f043d1a6b8e80e72fd15c08e04528a4
- React: 4f2c0b59d1a1c0ae02771deb69e5ee78999fee79
- React-callinvoker: d5aa9fa6cd6b67d6033de2cb5af6de7ae3dac6ca
- React-Codegen: 57ded8852b5614bcedee54cb8644b30b41bc6f12
- React-Core: 668dad9409152ff684f52bcb125133b8fec4c941
- React-CoreModules: b02ca7a4fb869bcbe4c0ed2c939d433f13a120c5
- React-cxxreact: 2882426515cd264fac5b8a5501d2b1e8ba127544
- React-debug: 77ab539975d81d27153e2998bc1214a2473cde01
- React-hermes: 118fc1a6278dd1a4fddd627185dd21ef150c6423
- React-jsi: deef1a7418729b2e7e1b99c87e1c6d9df23c2e18
- React-jsiexecutor: 990287d74aedc4fdd08ebd80736b1a5c71b54da2
- React-jsinspector: 8d754fc957255a29d93e52fc67a895045cdc8703
- React-logger: 454ffb01980778a43b0153ee98721d0275b56616
+ RCTRequired: a2faf4bad4e438ca37b2040cb8f7799baa065c18
+ RCTTypeSafety: cb09f3e4747b6d18331a15eb05271de7441ca0b3
+ React: 13109005b5353095c052f26af37413340ccf7a5d
+ React-callinvoker: c8c87bce983aa499c13cb06d4447c025a35274d6
+ React-Codegen: 712d523524d89d71f1cf7cc624854941be983c4d
+ React-Core: 688f88b7f3a3d30b4848036223f8b07102c687e5
+ React-CoreModules: 63c063a3ade8fb3b1bec5fd9a50f17b0421558c6
+ React-cxxreact: 37765b4975541105b2a3322a4b473417c158c869
+ React-debug: 51f11ef8db14b47f24e71c42a4916d4192972156
+ React-hermes: 935ae71fb3d7654e947beba8498835cd5e479707
+ React-jsi: ec628dc7a15ffea969f237b0ea6d2fde212b19dd
+ React-jsiexecutor: 59d1eb03af7d30b7d66589c410f13151271e8006
+ React-jsinspector: b511447170f561157547bc0bef3f169663860be7
+ React-logger: c5b527272d5f22eaa09bb3c3a690fee8f237ae95
react-native-safe-area-context: 36cc67648134e89465663b8172336a19eeda493d
- React-NativeModulesApple: 038cd625999ff352fc13d11fd335ea7509794599
- React-perflogger: 684a11499a0589cc42135d6d5cc04d0e4e0e261a
- React-RCTActionSheet: 00b0a4c382a13b834124fa3f541a7d8d1d56efb9
- React-RCTAnimation: 10c24c66fb504f2faa53f4ec0666c4568255cff9
- React-RCTAppDelegate: ba51460896227d9fb530298746eb543d38face7a
- React-RCTBlob: 10814291c4e8ef09fd2ceca81825eae29ee5a4ec
- React-RCTImage: 2f609dd1c80c4aec8edf2ca235cba476fdd442ec
- React-RCTLinking: d7f20b7d51246bf34790ce1362d124cc1b42671b
- React-RCTNetwork: 6b0133de954b5eff5e6a6294eef5fca45df7e5e8
- React-RCTSettings: 9a1f3f5f3e104c0617d953acc54e60e4bfaf11bd
- React-RCTText: f5b4c03708c0283699c0dc23c7fb9f97ce7ac6bd
- React-RCTVibration: fb4135690f091ac9bcfbeb8dc4388208ca0e18b1
- React-rncore: 91a21f0b3c16a5e011bc54d1e204bd6c5bfdf8e2
- React-runtimeexecutor: 56b9f7665138fe8cda0d6c210cf95ee3f625c237
- React-runtimescheduler: 24614bcd31643eacb06c78c0b9101b453d6aac47
- React-utils: c12d2e75c8bbc727939ddc4319ed95493395ed5a
- ReactCommon: 517b45ed311ba9146aa8b55a8ef6617425f7448e
- RNBootSplash: 364ec0f6a61d96bce40e8630d80d949c214a5749
+ React-NativeModulesApple: c57f3efe0df288a6532b726ad2d0322a9bf38472
+ React-perflogger: 6bd153e776e6beed54c56b0847e1220a3ff92ba5
+ React-RCTActionSheet: c0b62af44e610e69d9a2049a682f5dba4e9dff17
+ React-RCTAnimation: f9bf9719258926aea9ecb8a2aa2595d3ff9a6022
+ React-RCTAppDelegate: e5ac35d4dbd1fae7df3a62b47db04b6a8d151592
+ React-RCTBlob: c4f1e69a6ef739aa42586b876d637dab4e3b5bed
+ React-RCTImage: e5798f01aba248416c02a506cf5e6dfcba827638
+ React-RCTLinking: f5b6227c879e33206f34e68924c458f57bbb96d9
+ React-RCTNetwork: d5554fbfac1c618da3c8fa29933108ea22837788
+ React-RCTSettings: 189c71e3e6146ba59f4f7e2cbeb494cf2ad42afa
+ React-RCTText: 19425aea9d8b6ccae55a27916355b17ab577e56e
+ React-RCTVibration: 388ac0e1455420895d1ca2548401eed964b038a6
+ React-rncore: 755a331dd67b74662108f2d66a384454bf8dc1a1
+ React-runtimeexecutor: 369ae9bb3f83b65201c0c8f7d50b72280b5a1dbc
+ React-runtimescheduler: 837c1bebd2f84572db17698cd702ceaf585b0d9a
+ React-utils: bcb57da67eec2711f8b353f6e3d33bd8e4b2efa3
+ ReactCommon: 3ccb8fb14e6b3277e38c73b0ff5e4a1b8db017a9
RNCAsyncStorage: ddc4ee162bfd41b0d2c68bf2d95acd81dd7f1f93
RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5
RNReanimated: 9f7068e43b9358a46a688d94a5a3adb258139457
RNScreens: 68fd1060f57dd1023880bf4c05d74784b5392789
- SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
- Yoga: 1d6727ed193122f6adaf435c3de1a768326ff83b
- YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
+ SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
+ Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce
-PODFILE CHECKSUM: f38d71b4d5072d25d951c106c13e979ea5f1db62
+PODFILE CHECKSUM: 5faa1531e1f4f6e0f2b15de33eedc4f75e89b7b7
COCOAPODS: 1.12.1
diff --git a/boilerplate/ios/Podfile.properties.json b/boilerplate/ios/Podfile.properties.json
index a6c86e376..de9f7b752 100644
--- a/boilerplate/ios/Podfile.properties.json
+++ b/boilerplate/ios/Podfile.properties.json
@@ -1,5 +1,4 @@
{
- "expo.jsEngine": "hermes",
- "ios.flipper": "true",
- "newArchEnabled": "false"
-}
\ No newline at end of file
+ "expo.jsEngine": "hermes",
+ "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true"
+}
diff --git a/boilerplate/metro.config.js b/boilerplate/metro.config.js
deleted file mode 100644
index b2649b0ab..000000000
--- a/boilerplate/metro.config.js
+++ /dev/null
@@ -1,56 +0,0 @@
-const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
-const { getDefaultConfig: getDefaultExpoConfig } = require("@expo/metro-config")
-
-const config = {}
-let metroConfig
-let isExpo = false
-try {
- const Constants = require("expo-constants")
- // True if the app is running in an `expo build` app or if it's running in Expo Go.
- isExpo =
- Constants.executionEnvironment === "standalone" ||
- Constants.executionEnvironment === "storeClient"
-} catch {}
-
-if (isExpo) {
- /**
- * Expo metro config
- * Learn more https://docs.expo.io/guides/customizing-metro
-
- * For one idea on how to support symlinks in Expo, see:
- * https://github.com/infinitered/ignite/issues/1904#issuecomment-1054535068
- */
- metroConfig = getDefaultExpoConfig(__dirname)
-} else {
- metroConfig = mergeConfig(getDefaultConfig(__dirname), config);
- /**
- * Vanilla metro config - we're using a custom metro config because we want to support symlinks
- * out of the box. This allows you to use pnpm and/or play better in a monorepo.
- *
- * You can safely delete this file and remove @rnx-kit/metro-* if you're not
- * using PNPM or monorepo or symlinks at all.
- *
- * However, it doesn't hurt to have it either.
- */
- // const { makeMetroConfig } = require("@rnx-kit/metro-config")
- // const MetroSymlinksResolver = require("@rnx-kit/metro-resolver-symlinks")
-
- // metroConfig = (async () => {
- // const defaultConfig = await getDefaultConfig()
- // return makeMetroConfig({
- // projectRoot: __dirname,
- // // watchFolders: [`${__dirname}/../..`], // for monorepos
- // resolver: {
- // /**
- // * This custom resolver is for if you're using symlinks.
- // *
- // * You can disable it if you're not using pnpm or a monorepo or symlinks.
- // */
- // resolveRequest: MetroSymlinksResolver(),
- // assetExts: [...defaultConfig.resolver.assetExts, "bin"],
- // },
- // })
- // })()
-}
-
-module.exports = metroConfig
diff --git a/boilerplate/package.json b/boilerplate/package.json
index 37d33e7f6..e8d9909a6 100644
--- a/boilerplate/package.json
+++ b/boilerplate/package.json
@@ -4,12 +4,9 @@
"private": true,
"main": "node_modules/expo/AppEntry.js",
"scripts": {
- "start": "react-native start",
- "ios": "react-native run-ios",
- "android": "react-native run-android --active-arch-only",
"compile": "tsc --noEmit -p . --pretty",
"format": "prettier --write \"app/**/*.{js,jsx,json,md,ts,tsx}\"",
- "lint": "eslint index.js App.js app test --fix --ext .js,.ts,.tsx && npm run format",
+ "lint": "eslint App.tsx app test --fix --ext .js,.ts,.tsx && npm run format",
"patch": "patch-package",
"test": "jest",
"test:watch": "jest --watch",
@@ -22,10 +19,10 @@
"release:android": "cd android && rm -rf app/src/main/res/drawable-* && ./gradlew assembleRelease && cd - && echo 'APK generated in ./android/app/build/outputs/apk/release/app-release.apk'",
"clean": "npx react-native-clean-project",
"clean-all": "npx react-native clean-project-auto",
- "expo:start": "npx expo start",
- "expo:android": "npx expo start --android",
- "expo:ios": "npx expo start --ios",
- "expo:web": "npx expo start --web",
+ "start": "npx expo start",
+ "android": "npx expo run:android",
+ "ios": "npx expo run:ios",
+ "web": "npx expo start --web",
"bundle:web": "npx expo export --platform web",
"serve:web": "npx server dist"
},
@@ -34,56 +31,54 @@
},
"dependencies": {
"@expo-google-fonts/space-grotesk": "^0.2.2",
- "@expo/metro-config": "^0.7.1",
"@react-native-async-storage/async-storage": "1.18.2",
"@react-navigation/bottom-tabs": "^6.3.2",
"@react-navigation/native": "^6.0.2",
"@react-navigation/native-stack": "^6.0.2",
"apisauce": "2.1.5",
"date-fns": "^2.29.2",
- "expo": "49.0.0-beta.0",
+ "expo": "^49.0.3",
"expo-application": "~5.3.0",
+ "expo-build-properties": "~0.8.3",
"expo-constants": "~14.4.2",
"expo-device": "~5.4.0",
"expo-file-system": "~15.4.2",
"expo-font": "~11.4.0",
"expo-linking": "~5.0.2",
"expo-localization": "~14.3.0",
- "expo-modules-core": "~1.5.3",
- "expo-splash-screen": "~0.20.2",
+ "expo-modules-core": "~1.5.7",
+ "expo-splash-screen": "~0.20.4",
"expo-status-bar": "~1.6.0",
"i18n-js": "3.9.2",
"mobx": "6.6.0",
"mobx-react-lite": "3.4.0",
"mobx-state-tree": "5.1.5",
"react": "18.2.0",
- "react-native": "0.72.0",
- "react-native-bootsplash": "4.5.0",
+ "react-dom": "18.2.0",
+ "react-native": "0.72.3",
"react-native-gesture-handler": "~2.12.0",
"react-native-reanimated": "~3.3.0",
"react-native-safe-area-context": "4.6.3",
"react-native-screens": "~3.22.0",
- "reactotron-mst": "3.1.4",
- "reactotron-react-js": "^3.3.7",
- "reactotron-react-native": "5.0.3"
+ "react-native-web": "~0.19.6"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-template-literals": "^7.0.0",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
- "@react-native-community/cli-platform-ios": "^8.0.2",
- "@react-native/metro-config": "^0.72.6",
- "@rnx-kit/metro-config": "^1.3.5",
- "@rnx-kit/metro-resolver-symlinks": "^0.1.26",
"@types/i18n-js": "3.8.2",
"@types/jest": "^29.2.1",
- "@types/react": "~18.0.27",
+ "@types/react": "~18.2.14",
"@types/react-test-renderer": "^18.0.0",
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
"babel-jest": "^29.2.1",
- "babel-loader": "8.2.5",
"babel-plugin-root-import": "^6.6.0",
"eslint": "8.17.0",
"eslint-config-prettier": "8.5.0",
@@ -95,26 +90,26 @@
"eslint-plugin-react": "7.30.0",
"eslint-plugin-react-native": "4.0.0",
"expo-modules-autolinking": "~1.5.0",
- "fbjs-scripts": "3.0.1",
"jest": "^29.2.1",
- "jest-circus": "29",
- "jest-environment-node": "29",
"jest-expo": "49.0.0",
- "metro-react-native-babel-preset": "0.76.5",
- "metro-source-map": "0.75.1",
- "mocha": "6",
"patch-package": "6.4.7",
"postinstall-prepare": "1.0.1",
"prettier": "2.8.8",
- "query-string": "^7.0.1",
- "react-devtools-core": "4.24.7",
- "react-dom": "18.2.0",
- "react-native-web": "~0.18.7",
"react-test-renderer": "18.2.0",
- "reactotron-core-client": "^2.8.10",
+ "reactotron-core-client": "2.8.11-beta.4",
+ "reactotron-mst": "3.1.5-beta.4",
+ "reactotron-react-js": "3.3.9-beta.4",
+ "reactotron-react-native": "5.0.4-beta.4",
"regenerator-runtime": "^0.13.4",
"ts-jest": "^29.1.1",
- "typescript": "^5.0.4"
+ "typescript": "^5.1.3"
+ },
+ "expo": {
+ "install": {
+ "exclude": [
+ "typescript"
+ ]
+ }
},
"resolutions": {
"@types/react": "^18",
diff --git a/boilerplate/tsconfig.json b/boilerplate/tsconfig.json
index 78e6ad786..2da578fe1 100644
--- a/boilerplate/tsconfig.json
+++ b/boilerplate/tsconfig.json
@@ -18,6 +18,6 @@
"baseUrl": "./"
},
"exclude": ["node_modules"],
- "include": ["index.js", "App.js", "app", "test", "*.js"],
+ "include": ["index.js", "App.tsx", "app", "test", "*.js"],
"extends": "expo/tsconfig.base"
}
diff --git a/docs/Folder-Structure.md b/docs/Folder-Structure.md
index 27d4de93f..f3e312052 100644
--- a/docs/Folder-Structure.md
+++ b/docs/Folder-Structure.md
@@ -4,8 +4,9 @@ A new Ignite boilerplate project's structure looks similar to this:
```
ignite-project
-├── android (if not Expo)
-├── ios (if not Expo)
+├── .maestro
+├── android
+├── ios
├── app
│ ├── components
│ ├── i18n
@@ -22,11 +23,9 @@ ignite-project
│ ├── mock-i18n.ts
│ ├── mock-reactotron.ts
│ ├── setup.ts
-├── e2e
-│ └── config.json
├── ignite
│ └── templates
-├── index.js
+├── App.tsx
├── package.json
└── README.md
```
diff --git a/docs/Generators.md b/docs/Generators.md
index 607fc8917..6c8d2bdeb 100644
--- a/docs/Generators.md
+++ b/docs/Generators.md
@@ -93,8 +93,6 @@ By default, the generator will exit if the input-files in your templates folder
Similar to app/launcher icons, the splash-screen is somewhat tricky to configure and manage due to platform (and OS version) differences. Therefore, splash-screens come preconfigured in the latest versions of Ignite boilerplate and a handy generator is provided to aid with customization.
-Note, on latest vanilla-flavored Ignite projects, the awesome library [`react-native-bootsplash`](https://github.com/zoontek/react-native-bootsplash) is used for both generation and integration within the app. Using this generator with older Ignite boilerplates will result in a warning to install and configure that library. On Expo, the splash-screen is configured via `app.json`.
-
Unlike the app/launcher generator however, only a single input file is needed. This file, called `logo.png`, can be found and customized in the following templates folder: `ignite/templates/splash-screen`.
The generator requires a single parameter for the splash-screen's background color (in hex format).
@@ -107,22 +105,7 @@ npx ignite-cli generate splash-screen "#FF0000"
npx ignite-cli generate splash-screen fff
```
-The generator will modify the following folders/files:
-
-- iOS
-
- - (vanilla) Updates `./ios/**/Images.xcassets/BootSplashLogo.imageset/`.
- - (vanilla) Updates `./ios/**/BootSplash.storyboard`.
- - (expo) Updates `./assets/images/` including the root file `./app.json`.
-
-- Android
-
- - (vanilla) Updates `./android/app/src/main/res/`.
- - (vanilla) Updates `./android/app/src/main/res/values/colors.xml`.
- - (expo) Updates `./assets/images/` including the root file `./app.json`.
-
-- Web
- - (expo) Updates `./assets/images/` including the root file `./app.json`.
+The generator will modify the `./assets/images/` and attempt to update `./app.json`. However, if your project is configured to use `app.config.js` or `app.config.ts`, the config changes will be output in the console for you to make them manually. You can read more about Expo's dynamic configuration [here](https://docs.expo.dev/workflow/configuration/#dynamic-configuration-with-appconfigjs).
Logo size transformations are predetermined based on platform. The defaults are meant to work in _most_ cases. However, you can adjust the logo transformation size according to your needs by using flags:
diff --git a/src/commands/generate/app-icon.ts b/src/commands/generate/app-icon.ts
index 7d072661d..6a132858c 100644
--- a/src/commands/generate/app-icon.ts
+++ b/src/commands/generate/app-icon.ts
@@ -1,6 +1,6 @@
import { GluegunToolbox } from "gluegun"
import { generateAppIcons, runGenerator, validateAppIconGenerator } from "../../tools/generators"
-import { command, heading, p, warning } from "../../tools/pretty"
+import { heading, p, warning } from "../../tools/pretty"
module.exports = {
alias: ["launcher-icon"],
@@ -14,26 +14,14 @@ module.exports = {
async function generate(toolbox: GluegunToolbox) {
const { parameters } = toolbox
- // what generator are we running?
- const generator = parameters.command.toLowerCase()
-
- // we need a platform to generate app-icons
- const option = parameters.first
- if (!option) {
- warning(`⚠️ Please specify which icons you would like to generate:`)
- p()
- command(`ignite g ${generator} all|ios|android|expo`)
- return
- }
-
- const { isValid, messages } = await validateAppIconGenerator(option as any, parameters.options)
+ const { isValid, messages } = await validateAppIconGenerator("expo", parameters.options)
if (!isValid) {
messages.forEach((message) => warning(message))
return
}
- const isSuccessful = await generateAppIcons(option as any)
+ const isSuccessful = await generateAppIcons("expo")
if (isSuccessful) {
heading(`App icons generated!`)
diff --git a/src/commands/new.ts b/src/commands/new.ts
index 1b9b8543d..a0ad11277 100644
--- a/src/commands/new.ts
+++ b/src/commands/new.ts
@@ -77,12 +77,6 @@ export interface Options {
* @default false
*/
overwrite?: boolean
- /**
- * Input Source: `parameter.option`
- * @deprecated this option is deprecated. Ignite sets you up to run native or Expo
- * @default undefined
- */
- expo?: boolean
/**
* Package manager to install dependencies with
*
@@ -124,6 +118,11 @@ export interface Options {
* @default false
*/
yes?: boolean
+ /**
+ * Whether or not to opt into React Native's New Architecture
+ * @default false
+ */
+ experimentalNewArch?: boolean
}
export default {
@@ -347,14 +346,21 @@ export default {
}
// #endregion
- // #region Expo
- // show warning about --expo going away
- const expo = boolFlag(options.expo)
- if (expo) {
- warning(
- " Detected --expo, this option is deprecated. Ignite sets you up to run native or Expo!",
- )
- p()
+ // #region Prompt to enable New Architecture
+ const defaultNewArch = false
+ let experimentalNewArch = useDefault(options.experimentalNewArch)
+ ? defaultNewArch
+ : boolFlag(options.experimentalNewArch)
+ if (experimentalNewArch === undefined) {
+ const newArchResponse = await prompt.ask<{ experimentalNewArch: boolean }>(() => ({
+ type: "confirm",
+ name: "experimentalNewArch",
+ message: "❗EXPERIMENTAL❗Would you like to enable the New Architecture?",
+ initial: defaultNewArch,
+ format: prettyPrompt.format.boolean,
+ prefix,
+ }))
+ experimentalNewArch = newArchResponse.experimentalNewArch
}
// #endregion
@@ -552,6 +558,21 @@ export default {
}
// #endregion
+ // #region Enable New Architecture if requested
+ if (experimentalNewArch === true) {
+ startSpinner(" Enabling New Architecture")
+ try {
+ let appJsonRaw = read("app.json")
+ appJsonRaw = appJsonRaw.replace(/"newArchEnabled": false/g, '"newArchEnabled": true')
+ const appJson = JSON.parse(appJsonRaw)
+ write("./app.json", appJson)
+ } catch (e) {
+ log(e)
+ p(yellow("Unable to enable New Architecture."))
+ }
+ stopSpinner(" Enabling New Architecture", "🆕")
+ }
+
// #region Create Git Repository and Initial Commit
// commit any changes
if (git === true) {
@@ -608,10 +629,10 @@ export default {
git,
installDeps,
overwrite,
- expo,
packager: packagerName,
targetPath,
removeDemo,
+ experimentalNewArch,
useCache,
y: yname,
yes: yname,
@@ -662,12 +683,6 @@ export default {
} else {
command(`${packager.runCmd("android", packagerOptions)}`)
}
-
- p2()
- p2("With Expo:")
- command(`cd ${projectName}`)
- if (!installDeps) command(packager.installCmd({ packagerName }))
- command(`${packager.runCmd("expo:start", packagerOptions)}`)
p2()
p2()
// #endregion
@@ -692,7 +707,7 @@ function buildCliCommand(args: {
type Flag = keyof typeof flags
type FlagEntry = [key: Flag, value: Options[Flag]]
- const privateFlags: Flag[] = ["b", "boilerplate", "debug", "expo", "useCache", "y", "yes"]
+ const privateFlags: Flag[] = ["b", "boilerplate", "debug", "useCache", "y", "yes"]
const stringFlag = ([key, value]: FlagEntry) => `--${kebabCase(key)}=${value}`
const booleanFlag = ([key, value]: FlagEntry) =>
diff --git a/src/tools/generators.ts b/src/tools/generators.ts
index 3252cee1a..7f53854e7 100644
--- a/src/tools/generators.ts
+++ b/src/tools/generators.ts
@@ -3,7 +3,7 @@ import { filesystem, GluegunToolbox, GluegunPatchingPatchOptions, patching, stri
import { Options } from "gluegun/build/types/domain/options"
import * as sharp from "sharp"
import * as YAML from "yaml"
-import { command, direction, heading, igniteHeading, p, warning } from "./pretty"
+import { command, direction, heading, igniteHeading, link, p, warning } from "./pretty"
const NEW_LINE = filesystem.eol
@@ -504,7 +504,7 @@ export async function generateAppIcons(option: `${Platforms}` | "all") {
// start the generation process for each platform
// looping instead of mapping allows us to await for each platform sequentially
for (const o of options) {
- const optionProjectName = { ios: "iOS", android: "Android", expo: "Expo" }[o]
+ const optionProjectName = { expo: "Expo" }[o]
// find the output path for platform and check if it exists
// iOS is a bit weird since it's named differently for each project
@@ -633,9 +633,9 @@ export async function generateAppIcons(option: `${Platforms}` | "all") {
expo: () => {
const merge = require("deepmerge-json")
const sourceExpoConfig = require(path(boilerplateDirPath, "app.json"))?.expo
- const outputAppConfig = require(path(cwd, "app.json"))
+ const outputAppConfig = path(cwd, "app.json")
- const updatedConfig = merge(outputAppConfig, {
+ const iconConfig = {
expo: {
icon: sourceExpoConfig?.icon,
android: {
@@ -645,9 +645,32 @@ export async function generateAppIcons(option: `${Platforms}` | "all") {
ios: { icon: sourceExpoConfig?.ios?.icon },
web: { favicon: sourceExpoConfig?.web?.favicon },
},
- })
+ }
+
+ // Check if app.json exists - however, could also be `app.config.js` or `app.config.ts` in
+ // which case we should output a warning of what files to update
+ if (!exists(outputAppConfig)) {
+ const appConfigFiles = find(cwd, { matching: "app.config.*" })
+ if (appConfigFiles.length > 0) {
+ warning(
+ `⚠️ No "app.json" found at "${outputAppConfig}". It looks like you are using a dynamic configuration! Learn more at ${link(
+ "https://docs.expo.dev/workflow/configuration/#dynamic-configuration-with-appconfigjs",
+ )}`,
+ )
+ warning(`⚠️ Please add the following to your app.config.js manually:`)
+ JSON.stringify(iconConfig, null, 2)
+ .split("\n")
+ .map((line) => p(` ${line}`))
+ } else {
+ warning(`⚠️ No "app.json" found at "${outputAppConfig}". Skipping...`)
+ }
+
+ return
+ }
+
+ const updatedConfig = merge(require(outputAppConfig), iconConfig)
- write(path(cwd, "app.json"), updatedConfig)
+ write(path(cwd, "app.json"), JSON.stringify(updatedConfig, null, 2) + "\n")
direction(`✅ app.json`)
},
}[o]
@@ -755,92 +778,8 @@ export async function generateSplashScreen(options: {
const inputFilePath = path(templatesDir(), "splash-screen", "logo.png")
const expoOutputDirPath = path(cwd, "assets/images")
const isExpoOutputDirExists = exists(expoOutputDirPath) === "dir"
- const bootsplashCliPath = path(
- cwd,
- "node_modules/react-native-bootsplash/dist/commonjs/generate.js",
- )
- const isBootsplashCliInstalled = exists(bootsplashCliPath) === "file"
- const optionGenerationSuccesses = []
-
- async function generateForVanilla(type: "ios" | "android", size: number) {
- const typeName = { ios: "iOS", android: "Android" }[type]
-
- const bootsplashOutputPath = {
- android: path(cwd, "android/app"),
- ios: (function () {
- const searchPath = path(cwd, "ios")
-
- if (!exists(searchPath)) return searchPath
-
- const xcodeprojPath = find(searchPath, {
- directories: true,
- files: false,
- matching: "*.xcodeproj",
- recursive: false,
- })?.[0]
- if (!xcodeprojPath) return searchPath
-
- return xcodeprojPath.replace(/.xcodeproj$/, "")
- })(),
- }[type]
-
- const isBootsplashOutputPathExists = exists(bootsplashOutputPath) === "dir"
-
- heading(`Generating ${typeName} splash screen...`)
-
- if (!isBootsplashOutputPathExists) {
- warning(
- `⚠️ No output directory found for "${typeName}" at "${bootsplashOutputPath}". Skipping...`,
- )
- return
- }
-
- if (!isBootsplashCliInstalled) {
- warning(
- `⚠️ If you are attempting to generate a splash screen for bare/vanilla ${typeName} react-native project, please install and configure the "react-native-bootsplash" package. Skipping...`,
- )
- return
- }
-
- const { generate } = require(bootsplashCliPath) || {}
- const logFn = console.log
- const outputFileNames: string[] = []
-
- console.log = function (log: string) {
- if (typeof log !== "string") return
-
- const filePathMatch = log.match(/(?:android|ios)\/.*\.(?:png|storyboard|xml)/)
-
- if (!filePathMatch) return
-
- outputFileNames.push(`✅ ${filePathMatch[0]}`)
- }
-
- try {
- await generate({
- android: type === "android" && { sourceDir: bootsplashOutputPath },
- ios: type === "ios" && { projectPath: bootsplashOutputPath },
- workingPath: cwd,
- logoPath: inputFilePath,
- assetsPath: null,
- backgroundColor,
- flavor: "main",
- logoWidth: size,
- })
-
- console.log = logFn
-
- outputFileNames.forEach(direction)
- optionGenerationSuccesses.push(true)
- } catch (error) {
- console.log = logFn
-
- warning(
- `⚠️ Something went wrong generating splash screen for ${typeName}, please file an issue on GitHub. Skipping...`,
- )
- }
- }
+ const optionGenerationSuccesses = []
async function generateForExpo(
type: "ios" | "android" | "web" | "all",
@@ -874,9 +813,6 @@ export async function generateSplashScreen(options: {
}
}
- await generateForVanilla("ios", iosSize)
- await generateForVanilla("android", androidSize)
-
heading(`Generating Expo splash screens (Android, iOS, and Web)...`)
if (isExpoOutputDirExists) {
await generateForExpo("ios", iosSize, [
@@ -893,9 +829,9 @@ export async function generateSplashScreen(options: {
const boilerplateDirPath = path(igniteCliRootDir(), "boilerplate")
const merge = require("deepmerge-json")
const sourceExpoConfig = require(path(boilerplateDirPath, "app.json"))?.expo
- const outputAppConfig = require(path(cwd, "app.json"))
+ const outputAppConfig = path(cwd, "app.json")
- const updatedConfig = merge(outputAppConfig, {
+ const splashConfig = {
expo: {
splash: {
backgroundColor,
@@ -924,9 +860,32 @@ export async function generateSplashScreen(options: {
},
},
},
- })
+ }
+
+ // Check if app.json exists - however, could also be `app.config.js` or `app.config.ts` in
+ // which case we should output a warning of what files to update
+ if (!exists(outputAppConfig)) {
+ const appConfigFiles = find(cwd, { matching: "app.config.*" })
+ if (appConfigFiles.length > 0) {
+ warning(
+ `⚠️ No "app.json" found at "${outputAppConfig}". It looks like you are using a dynamic configuration! Learn more at ${link(
+ "https://docs.expo.dev/workflow/configuration/#dynamic-configuration-with-appconfigjs",
+ )}`,
+ )
+ warning(`⚠️ Please add the following to your app.config.js manually:`)
+ JSON.stringify(splashConfig, null, 2)
+ .split("\n")
+ .map((line) => p(` ${line}`))
+ } else {
+ warning(`⚠️ No "app.json" found at "${outputAppConfig}". Skipping...`)
+ }
+
+ return
+ }
+
+ const updatedConfig = merge(require(outputAppConfig), splashConfig)
- write(path(cwd, "app.json"), updatedConfig)
+ write(path(cwd, "app.json"), JSON.stringify(updatedConfig, null, 2) + "\n")
direction(`✅ app.json`)
} else {
warning(`⚠️ No output directory found for "Expo" at "${expoOutputDirPath}". Skipping...`)
diff --git a/src/tools/react-native.ts b/src/tools/react-native.ts
index eb309ba64..35ce62ff3 100644
--- a/src/tools/react-native.ts
+++ b/src/tools/react-native.ts
@@ -89,7 +89,8 @@ export async function renameReactNativeApp(
await Promise.allSettled([
rename(`ios/${oldName}.xcodeproj/xcshareddata/xcschemes/${oldName}.xcscheme`, `${newName}.xcscheme`),
rename(`ios/${oldName}Tests/${oldName}Tests.m`, `${newName}Tests.m`),
- rename(`ios/${oldName}-Bridging-Header.h`, `${newName}-Bridging-Header.h`),
+ rename(`ios/${oldName}/${oldName}-Bridging-Header.h`, `${newName}-Bridging-Header.h`),
+ rename(`ios/${oldName}/${oldName}.entitlements`, `${newName}.entitlements`),
rename(`ios/${oldName}.xcworkspace`, `${newName}.xcworkspace`),
rename(`ios/${oldName}`, `${newName}`),
])
@@ -129,7 +130,6 @@ export async function renameReactNativeApp(
const filesToPatch = [
`app.json`,
`package.json`,
- `index.js`,
`android/settings.gradle`,
`android/app/_BUCK`,
`android/app/BUCK`,
diff --git a/test/vanilla/ignite-new.test.ts b/test/vanilla/ignite-new.test.ts
index b8d0aa3da..9716d7f85 100644
--- a/test/vanilla/ignite-new.test.ts
+++ b/test/vanilla/ignite-new.test.ts
@@ -145,31 +145,14 @@ describe("ignite new", () => {
)
// app-icons
- const allAppIcons = ["android", "ios", "expo"].reduce((acc: string[], type) => {
- const searchPath = {
- android: "android/app/src/main/res",
- ios: "ios",
- expo: "assets/images",
- }[type] as string
-
- const matchString = {
- android: "ic_launch*.png",
- ios: `Icon-*.png`,
- expo: "app-icon*.png",
- }[type]
-
- try {
- const iconsMatches = filesystem.find(filesystem.path(appPath, searchPath), {
- directories: false,
- files: true,
- matching: matchString,
- })
-
- return [...acc, ...iconsMatches]
- } catch (error) {
- return acc
- }
- }, [])
+ const iconSearchPath = "assets/images"
+ const iconMatchString = "app-icon*.png"
+
+ const allAppIcons = filesystem.find(filesystem.path(appPath, iconSearchPath), {
+ directories: false,
+ files: true,
+ matching: iconMatchString,
+ })
allAppIcons.forEach((i) => {
expect(filesystem.exists(i) === "file").toBe(true)
@@ -178,27 +161,12 @@ describe("ignite new", () => {
})
const appIconGen = await runIgnite(
- `generate app-icon all --skip-source-equality-validation`,
+ `generate app-icon --skip-source-equality-validation`,
runOpts,
)
expect(appIconGen).toContain(`Generating Expo app icons...`)
- const iosProjectExists = filesystem.exists(filesystem.path(appPath, "ios"))
- const androidProjectExists = filesystem.exists(filesystem.path(appPath, "android"))
-
- if (androidProjectExists) {
- expect(appIconGen).toContain(`Generating Android app icons...`)
- } else {
- expect(appIconGen).toContain(`No output directory found for "Android"`)
- }
-
- if (iosProjectExists) {
- expect(appIconGen).toContain(`Generating iOS app icons...`)
- } else {
- expect(appIconGen).toContain(`No output directory found for "iOS"`)
- }
-
allAppIcons.forEach((i) => {
expect(filesystem.exists(i) === "file").toBe(true)
})
@@ -222,31 +190,14 @@ describe("ignite new", () => {
})
// splash-screen
- const splashScreenAssets = ["android", "ios", "expo"].reduce((acc: string[], type) => {
- const searchPath = {
- android: "android/app/src/main/res",
- ios: "ios",
- expo: "assets/images",
- }[type] as string
-
- const matchString = {
- android: "bootsplash*.png",
- ios: `bootsplash*.png`,
- expo: "splash-logo*.png",
- }[type]
-
- try {
- const splashMatches = filesystem.find(filesystem.path(appPath, searchPath), {
- directories: false,
- files: true,
- matching: matchString,
- })
-
- return [...acc, ...splashMatches]
- } catch (error) {
- return acc
- }
- }, [])
+ const splashSearchPath = "assets/images"
+ const splashMatchString = "splash-logo*.png"
+
+ const splashScreenAssets = filesystem.find(filesystem.path(appPath, splashSearchPath), {
+ directories: false,
+ files: true,
+ matching: splashMatchString,
+ })
splashScreenAssets.forEach((i) => {
expect(filesystem.exists(i) === "file").toBe(true)
@@ -284,28 +235,11 @@ describe("ignite new", () => {
expect(splashScreenGen).toContain(`Generating Expo splash screens`)
- if (androidProjectExists) {
- expect(splashScreenGen).toContain(`Generating Android splash screen...`)
- } else {
- expect(splashScreenGen).toContain(`No output directory found for "Android"`)
- }
-
- if (iosProjectExists) {
- expect(splashScreenGen).toContain(`Generating iOS splash screen...`)
- } else {
- expect(splashScreenGen).toContain(`No output directory found for "iOS"`)
- }
-
splashScreenAssets.forEach((i) => {
expect(filesystem.exists(i) === "file").toBe(true)
})
- verifySplashScreenColor("android", `#000000`)
verifySplashScreenColor("expo", `#000000`)
- verifySplashScreenColor(
- "ios",
- `red="0.00000000000000" green="0.00000000000000" blue="0.00000000000000"`,
- )
const inputFile = filesystem.path(appPath, "ignite/templates/splash-screen/logo.png")
expect(filesystem.exists(inputFile) === "file").toBe(true)
@@ -318,14 +252,6 @@ describe("ignite new", () => {
// #region Assert Changes Can Be Commit To Git
// commit the change
await run(`git add ./app/models ./app/components ./app.json ./assets/images`, runOpts)
- if (iosProjectExists) {
- await run(`git add ./ios/Foo/Images.xcassets/AppIcon.appiconset`, runOpts)
- await run(`git add ./ios/Foo/Images.xcassets/BootSplashLogo.imageset`, runOpts)
- await run(`git add ./ios/Foo/BootSplash.storyboard`, runOpts)
- }
- if (androidProjectExists) {
- await run(`git add ./android/app/src/main/res`, runOpts)
- }
await run(`git commit -m "generated test components & assets"`, runOpts)
// #endregion
@@ -343,7 +269,7 @@ describe("ignite new", () => {
})
async function checkForLeftoverHelloWorld(filePath: string) {
- const ignoreFolders = ["/xcuserdata", ".git", "node_modules", "Pods", "/build"]
+ const ignoreFolders = ["/xcuserdata", ".git", "node_modules", "Pods", "/build", ".expo"]
// ignore some folders
if (!ignoreFolders.every((f) => !filePath.includes(f))) return