diff --git a/.circleci/configurations/jobs.yml b/.circleci/configurations/jobs.yml index 1f40dd95ff3160..92cc1eaf6ae6ab 100644 --- a/.circleci/configurations/jobs.yml +++ b/.circleci/configurations/jobs.yml @@ -286,7 +286,6 @@ jobs: - packages/react-native/ReactAndroid/build/ - packages/react-native/ReactAndroid/hermes-engine/.cxx/ - packages/react-native/ReactAndroid/hermes-engine/build/ - - packages/react-native/ReactAndroid/flipper-integration/build/ - packages/react-native/ReactAndroid/src/main/jni/prebuilt/ - packages/react-native-gradle-plugin/.gradle/ - packages/react-native-gradle-plugin/build/ diff --git a/.gitignore b/.gitignore index 0a9a69f094153e..c97e1f732d70a9 100644 --- a/.gitignore +++ b/.gitignore @@ -38,7 +38,6 @@ project.xcworkspace /packages/react-native/ReactAndroid/gradlew.bat /packages/react-native/ReactAndroid/external-artifacts/build/ /packages/react-native/ReactAndroid/external-artifacts/artifacts/ -/packages/react-native/ReactAndroid/flipper-integration/build/ /packages/react-native/ReactAndroid/hermes-engine/build/ /packages/react-native/ReactAndroid/hermes-engine/.cxx/ /packages/react-native/template/android/app/build/ diff --git a/build.gradle.kts b/build.gradle.kts index f529bd1ebde2e2..8114a09effe628 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -87,8 +87,6 @@ tasks.register("publishAllToMavenTempLocal") { description = "Publish all the artifacts to be available inside a Maven Local repository on /tmp." dependsOn(":packages:react-native:ReactAndroid:publishAllPublicationsToMavenTempLocalRepository") // We don't publish the external-artifacts to Maven Local as CircleCI is using it via workspace. - dependsOn( - ":packages:react-native:ReactAndroid:flipper-integration:publishAllPublicationsToMavenTempLocalRepository") dependsOn( ":packages:react-native:ReactAndroid:hermes-engine:publishAllPublicationsToMavenTempLocalRepository") } @@ -97,7 +95,6 @@ tasks.register("publishAllToSonatype") { description = "Publish all the artifacts to Sonatype (Maven Central or Snapshot repository)" dependsOn(":packages:react-native:ReactAndroid:publishToSonatype") dependsOn(":packages:react-native:ReactAndroid:external-artifacts:publishToSonatype") - dependsOn(":packages:react-native:ReactAndroid:flipper-integration:publishToSonatype") dependsOn(":packages:react-native:ReactAndroid:hermes-engine:publishToSonatype") } diff --git a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/DependencyUtils.kt b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/DependencyUtils.kt index eb91dc556343a3..0f92c09efc7cf6 100644 --- a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/DependencyUtils.kt +++ b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/DependencyUtils.kt @@ -48,8 +48,7 @@ internal object DependencyUtils { /** * This method takes care of configuring the resolution strategy for both the app and all the 3rd * party libraries which are auto-linked. Specifically it takes care of: - * - Forcing the react-android/hermes-android/flipper-integration version to the one specified in - * the package.json + * - Forcing the react-android/hermes-android version to the one specified in the package.json * - Substituting `react-native` with `react-android` and `hermes-engine` with `hermes-android`. */ fun configureDependencies( @@ -71,7 +70,6 @@ internal object DependencyUtils { } configuration.resolutionStrategy.force( "${groupString}:react-android:${versionString}", - "${groupString}:flipper-integration:${versionString}", ) if (!(eachProject.findProperty(INTERNAL_USE_HERMES_NIGHTLY) as? String).toBoolean()) { // Contributors only: The hermes-engine version is forced only if the user has diff --git a/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts b/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts index f0c42511a91a98..685d77e7b7fa3c 100644 --- a/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts +++ b/packages/react-native/ReactAndroid/external-artifacts/build.gradle.kts @@ -13,7 +13,7 @@ group = "com.facebook.react" version = parent?.extraProperties?.get("publishing_version") - ?: error("publishing_version not set for flipper-integration") + ?: error("publishing_version not set for external-artifacts") configurations.maybeCreate("default") diff --git a/packages/react-native/ReactAndroid/flipper-integration/.npmignore b/packages/react-native/ReactAndroid/flipper-integration/.npmignore deleted file mode 100644 index b1bfa20d8f87b2..00000000000000 --- a/packages/react-native/ReactAndroid/flipper-integration/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -# Make sure we never publish the build folders to npm. -build/ diff --git a/packages/react-native/ReactAndroid/flipper-integration/build.gradle.kts b/packages/react-native/ReactAndroid/flipper-integration/build.gradle.kts deleted file mode 100644 index 2109a287d46c65..00000000000000 --- a/packages/react-native/ReactAndroid/flipper-integration/build.gradle.kts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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. - */ - -import org.jetbrains.kotlin.gradle.plugin.extraProperties - -plugins { - alias(libs.plugins.android.library) - alias(libs.plugins.kotlin.android) - id("maven-publish") - id("signing") -} - -group = "com.facebook.react" - -version = - parent?.extraProperties?.get("publishing_version") - ?: error("publishing_version not set for flipper-integration") - -repositories { - // Normally RNGP will set repositories for all modules, - // but when consumed from source, we need to re-declare - // those repositories as there is no app module there. - mavenCentral() - google() -} - -android { - compileSdk = libs.versions.compileSdk.get().toInt() - buildToolsVersion = libs.versions.buildTools.get() - namespace = "com.facebook.react.flipper" - - defaultConfig { minSdk = libs.versions.minSdk.get().toInt() } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } - - kotlin { jvmToolchain(17) } - - dependencies { - implementation(project(":packages:react-native:ReactAndroid")) - debugImplementation(libs.flipper) - debugImplementation(libs.flipper.network.plugin) { - exclude(group = "com.squareup.okhttp3", module = "okhttp") - } - debugImplementation(libs.flipper.fresco.plugin) - } - - publishing { - multipleVariants { - withSourcesJar() - allVariants() - } - } -} - -apply(from = "../publish.gradle") diff --git a/packages/react-native/ReactAndroid/flipper-integration/src/debug/java/com/facebook/react/flipper/ReactNativeFlipper.kt b/packages/react-native/ReactAndroid/flipper-integration/src/debug/java/com/facebook/react/flipper/ReactNativeFlipper.kt deleted file mode 100644 index e4bad1d94ed439..00000000000000 --- a/packages/react-native/ReactAndroid/flipper-integration/src/debug/java/com/facebook/react/flipper/ReactNativeFlipper.kt +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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. - */ - -package com.facebook.react.flipper - -import android.content.Context -import com.facebook.flipper.android.AndroidFlipperClient -import com.facebook.flipper.android.utils.FlipperUtils -import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin -import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin -import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin -import com.facebook.flipper.plugins.inspector.DescriptorMapping -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.sharedpreferences.SharedPreferencesFlipperPlugin -import com.facebook.react.ReactInstanceEventListener -import com.facebook.react.ReactInstanceManager -import com.facebook.react.bridge.ReactContext -import com.facebook.react.config.ReactFeatureFlags -import com.facebook.react.modules.network.NetworkingModule - -/** - * Class responsible of loading Flipper inside your React Native application. This is the debug - * flavor of it. Here you can add your own plugins and customize the Flipper setup. - */ -object ReactNativeFlipper { - @JvmStatic - fun initializeFlipper(context: Context, reactInstanceManager: ReactInstanceManager) { - if (ReactFeatureFlags.enableBridgelessArchitecture) { - return - } - if (FlipperUtils.shouldEnableFlipper(context)) { - val client = AndroidFlipperClient.getInstance(context) - client.addPlugin(InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())) - client.addPlugin(DatabasesFlipperPlugin(context)) - client.addPlugin(SharedPreferencesFlipperPlugin(context)) - client.addPlugin(CrashReporterPlugin.getInstance()) - val networkFlipperPlugin = NetworkFlipperPlugin() - NetworkingModule.setCustomClientBuilder { builder -> - builder.addNetworkInterceptor(FlipperOkhttpInterceptor(networkFlipperPlugin)) - } - client.addPlugin(networkFlipperPlugin) - client.start() - - // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized - // Hence we run if after all native modules have been initialized - val currentReactContext = reactInstanceManager.currentReactContext - if (currentReactContext == null) { - reactInstanceManager.addReactInstanceEventListener( - object : ReactInstanceEventListener { - override fun onReactContextInitialized(context: ReactContext) { - reactInstanceManager.removeReactInstanceEventListener(this) - context.runOnNativeModulesQueueThread { client.addPlugin(FrescoFlipperPlugin()) } - } - }) - } else { - client.addPlugin(FrescoFlipperPlugin()) - } - } - } -} diff --git a/packages/react-native/ReactAndroid/flipper-integration/src/release/java/com/facebook/react/flipper/ReactNativeFlipper.kt b/packages/react-native/ReactAndroid/flipper-integration/src/release/java/com/facebook/react/flipper/ReactNativeFlipper.kt deleted file mode 100644 index e44f63d8d1db66..00000000000000 --- a/packages/react-native/ReactAndroid/flipper-integration/src/release/java/com/facebook/react/flipper/ReactNativeFlipper.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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. - */ - -package com.facebook.react.flipper - -import android.content.Context -import com.facebook.react.ReactInstanceManager - -/** - * Class responsible of loading Flipper inside your React Native application. This is the release - * flavor of it so it's empty as we don't want to load Flipper. - */ -object ReactNativeFlipper { - @Suppress("UNUSED_PARAMETER") - @JvmStatic - fun initializeFlipper(context: Context, reactInstanceManager: ReactInstanceManager) { - // Do nothing as we don't want to initialize Flipper on Release. - } -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/flipper/ReactNativeFlipper.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/flipper/ReactNativeFlipper.kt new file mode 100644 index 00000000000000..17d83557c6e929 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/flipper/ReactNativeFlipper.kt @@ -0,0 +1,34 @@ +/* + * 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. + */ + +package com.facebook.react.flipper + +import android.content.Context +import com.facebook.react.ReactInstanceManager + +/** + * Stub class that does nothing to ease the migration out of Flipper. Users should stop calling + * `ReactNativeFlipper.initializeFlipper` in their `MainApplication.java` as this class will be + * removed in React Native 0.75 or future versions. + */ +@Deprecated( + message = + "ReactNative/Flipper integration is deprecated. Please remove the call to initializeFlipper from your MainApplication.java", + replaceWith = ReplaceWith(""), + level = DeprecationLevel.WARNING) +object ReactNativeFlipper { + @Suppress("UNUSED_PARAMETER") + @JvmStatic + @Deprecated( + message = + "ReactNative/Flipper integration is deprecated. Please remove the call to initializeFlipper from your MainApplication.java", + replaceWith = ReplaceWith(""), + level = DeprecationLevel.WARNING) + fun initializeFlipper(context: Context, reactInstanceManager: ReactInstanceManager) { + // no-op + } +} diff --git a/packages/react-native/gradle/libs.versions.toml b/packages/react-native/gradle/libs.versions.toml index 5a71347d3b113e..ac30ec5b1b6cb8 100644 --- a/packages/react-native/gradle/libs.versions.toml +++ b/packages/react-native/gradle/libs.versions.toml @@ -15,7 +15,6 @@ androidx-tracing = "1.1.0" assertj = "3.21.0" download = "5.4.0" fbjni = "0.5.1" -flipper = "0.201.0" fresco = "3.0.0" infer-annotation = "0.18.0" javax-annotation-api = "1.3.2" @@ -51,9 +50,6 @@ androidx-test-runner = { module = "androidx.test:runner", version.ref = "android androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test" } fbjni = { module = "com.facebook.fbjni:fbjni", version.ref = "fbjni" } -flipper = { module = "com.facebook.flipper:flipper", version.ref = "flipper" } -flipper-network-plugin = { module = "com.facebook.flipper:flipper-network-plugin", version.ref = "flipper" } -flipper-fresco-plugin = { module = "com.facebook.fresco:flipper-fresco-plugin", version.ref = "fresco" } fresco = { module = "com.facebook.fresco:fresco", version.ref = "fresco" } fresco-middleware = { module = "com.facebook.fresco:middleware", version.ref = "fresco" } fresco-imagepipeline-okhttp3 = { module = "com.facebook.fresco:imagepipeline-okhttp3", version.ref = "fresco" } diff --git a/packages/react-native/settings.gradle.kts b/packages/react-native/settings.gradle.kts index 840aa5506e7363..283d16b5f75104 100644 --- a/packages/react-native/settings.gradle.kts +++ b/packages/react-native/settings.gradle.kts @@ -29,8 +29,3 @@ include(":packages:react-native:ReactAndroid:hermes-engine") project(":packages:react-native:ReactAndroid:hermes-engine").projectDir = file("ReactAndroid/hermes-engine/") - -include(":packages:react-native:ReactAndroid:flipper-integration") - -project(":packages:react-native:ReactAndroid:flipper-integration").projectDir = - file("ReactAndroid/flipper-integration/") diff --git a/packages/react-native/template/android/app/build.gradle b/packages/react-native/template/android/app/build.gradle index 86512f88a4a693..c0e793008909d4 100644 --- a/packages/react-native/template/android/app/build.gradle +++ b/packages/react-native/template/android/app/build.gradle @@ -107,7 +107,6 @@ android { dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") - implementation("com.facebook.react:flipper-integration") if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") diff --git a/packages/react-native/template/android/app/src/main/java/com/helloworld/MainApplication.kt b/packages/react-native/template/android/app/src/main/java/com/helloworld/MainApplication.kt index 1d4c868ed580f9..8f4e5ccc8c01f1 100644 --- a/packages/react-native/template/android/app/src/main/java/com/helloworld/MainApplication.kt +++ b/packages/react-native/template/android/app/src/main/java/com/helloworld/MainApplication.kt @@ -10,7 +10,6 @@ import com.facebook.react.common.annotations.UnstableReactNativeAPI import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.flipper.ReactNativeFlipper import com.facebook.soloader.SoLoader @UnstableReactNativeAPI @@ -47,6 +46,5 @@ class MainApplication : Application(), ReactApplication { // If you opted-in for the New Architecture, we load the native entry point for this app. load() } - ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager) } } diff --git a/packages/rn-tester/android/app/build.gradle b/packages/rn-tester/android/app/build.gradle index 20669ea71b1e0e..7108269683cfd1 100644 --- a/packages/rn-tester/android/app/build.gradle +++ b/packages/rn-tester/android/app/build.gradle @@ -182,7 +182,6 @@ android { dependencies { // Build React Native from source implementation project(':packages:react-native:ReactAndroid') - implementation project(':packages:react-native:ReactAndroid:flipper-integration') // Consume Hermes as built from source only for the Hermes variant. hermesImplementation(project(":packages:react-native:ReactAndroid:hermes-engine")) diff --git a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt index 92d4d49ee2380a..9a394adca9eb1e 100644 --- a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt +++ b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.kt @@ -26,7 +26,6 @@ import com.facebook.react.defaults.DefaultComponentsRegistry.Companion.register import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactNativeHost import com.facebook.react.fabric.ComponentFactory -import com.facebook.react.flipper.ReactNativeFlipper.initializeFlipper import com.facebook.react.interfaces.exceptionmanager.ReactJsExceptionHandler import com.facebook.react.module.model.ReactModuleInfo import com.facebook.react.module.model.ReactModuleInfoProvider @@ -122,7 +121,6 @@ class RNTesterApplication : Application(), ReactApplication { if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { load() } - initializeFlipper(this, reactNativeHost.reactInstanceManager) } @UnstableReactNativeAPI diff --git a/settings.gradle.kts b/settings.gradle.kts index 7bc7703c70ac7c..21064d004c9efe 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,7 +15,6 @@ pluginManagement { include( ":packages:react-native:ReactAndroid", - ":packages:react-native:ReactAndroid:flipper-integration", ":packages:react-native:ReactAndroid:hermes-engine", ":packages:react-native:ReactAndroid:external-artifacts", ":packages:rn-tester:android:app")