GithubHelp home page GithubHelp logo

jakobo / expo-community-flipper Goto Github PK

View Code? Open in Web Editor NEW
98.0 2.0 8.0 1.94 MB

Flipper Support for Expo Apps in React Native

Home Page: https://www.npmjs.com/package/expo-community-flipper

License: MIT License

JavaScript 41.86% TypeScript 57.56% Shell 0.58%
react-native flipper-plugin flipper expo config-plugin android debugging ios

expo-community-flipper's Introduction

expo-community-flipper

Flipper Support for Expo Apps <= SDK 47

๐ŸŽ‰ As of Expo 48, Flipper support is available via the official build-properties plugin, with a simpler interface and proper support! read the docs announcement
If you're running into issues with the official build-properties plugin, check for an existing issue

โš ๏ธ (SDK 46, 47) Please see this issue about known compatibility issues with other plugins.


The remainder of this README applies to installing expo-community-flipper for SDK 47 and earlier.

Usage (Quick Guide)

1. Install this module: yarn add expo-community-flipper

2. Add expo-community-flipper configuration to the plugins section of your app.json, as per the examples below. You have the option to specify the version of Flipper, though the one built in with React Native is (usually) sufficient.

If you don't specify anything, expo-community-flipper will default to the version of Flipper bundled with the version of React Native you're currently using.

Configuration

type FlipperOptions =
  | undefined // take the default options for the entire plugin
  | string // sets <root>.version and takes defaults for all nested options
  | {
      version?: string; // sets the flipper version to build against (defaults to undefined, uses react-native bundled version)
      ios?:
        | boolean // sets <root>.ios.enabled and takes defaults for all nested options
        | {
            enabled: boolean; // enable flipper for iOS (default true)
            stripUseFrameworks?: boolean; // strip instances of use_frameworks from the Podfile (default false)
          };
      android?:
        | boolean // sets <root>.android.enabled and takes defaults for all nested options
        | {
            enabled: boolean; // enable flipper for Android (default true)
          };
    };

Configuration of this plugin is done in app.json. all configurations are optional with defaults designed to minimize the chances of your build breaking.

{
  "expo": {
    "..."
    "plugins": [
      "expo-community-flipper"
    ]
  }
}

// or configured (See FlipperOptions above):

{
  "expo": {
    "..."
    "plugins": [
      ["expo-community-flipper", FlipperOptions]
    ]
  }
}

Disabling Flipper in CI (>= 45.1.0)

๐Ÿ› ๏ธ 47.0.1 expo-community-flipper now supports the standard ENV['NO_FLIPPER'] == 1 flag to disable flipper. You may also simply omit this plugin via app.config.js when building a production version of your app, as Flipper is not enabled by default.

๐Ÿ“œ Prior to 47.0.1, Flipper was disabled using ENV['FLIPPER_DISABLE'] == "1". This is still supported, but deprecated in favor of the emerging standard from the react-native team. In production, Flipper is automatically disabled by the react-native framework, but see this issue regarding a possible regression in upstream react-native/flipper.

Windows Users + Hermes

As of right now, using Windows with the Hermes engine requires you to run your app inside of a WSL environment. The tracked issue is here and if you have a Podfile, please let me know. It's likely an upstream issue, but we're continuing to look at build artifacts in case we spot something that may resolve this issue.

Versions

Starting with Expo SDK 46, Flipper manages its own compatibility layer (though it can be upgraded by specifying a version of Flipper that you want). Prior to SDK 46, we recommended running Flipper @ 0.123.0 as it had the widest range of compatibility with devices and simulators.

This package follows expo's policy for the deprecation of old SDKs. It's MAJOR version tracks against the Expo SDK version, making it easy to spot compatibility differences in your package.json file.

Testing

An /example directory is built with expo init example for each major SDK release with a default eas.json file. The plugin is directly linked using expo's filepath support for config plugins. You can run expo prebuild in the directory to verify the plugin is modifying build files appropriately.

example eas.json

{
  "cli": {
    "version": ">= 0.35.0"
  },
  "build": {
    "example": {
      "releaseChannel": "default",
      "channel": "default"
    }
  }
}

example app.json

{
  "expo": {
    "...": "... standard app.json entries ...",
    "plugins": [["./../build/withFlipper", "0.158.0"]]
  }
}

References

Contributors โœจ

All Contributors

Thanks goes to these wonderful people (emoji key):

Jakob Heuser
Jakob Heuser

๐Ÿ’ป
gregfenton
gregfenton

๐Ÿ“–
AronBe
AronBe

๐Ÿ“–
rlam3
rlam3

๐Ÿ“–
Slapbox
Slapbox

๐Ÿ›
Jeremy Gollehon
Jeremy Gollehon

๐Ÿ›
Nikola Kalinov
Nikola Kalinov

๐Ÿ›
Kudo Chien
Kudo Chien

๐Ÿ“– ๐Ÿ’ฌ ๐Ÿ’ป
Maxence Gilliot
Maxence Gilliot

๐Ÿ’ฌ
Andrew Gerber
Andrew Gerber

๐Ÿ›
Pim Knops
Pim Knops

๐Ÿ›

This project follows the all-contributors specification. Contributions of any kind welcome!

expo-community-flipper's People

Contributors

allcontributors[bot] avatar aronbe avatar gregfenton avatar jakobo avatar kudo avatar rlam3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

expo-community-flipper's Issues

Podfile Syntax Error

I am trying to get the flipper pod installed in my project which is using Expo 47, just upgraded in the last couple of days.

I am getting an error when building the app about a syntax error in the podfile spec. No idea what could be causing this and not sure how to fix?

The generated podfile is below and this is the error I am getting:

Command `pod install` failed.
โ””โ”€ Cause: Invalid `Podfile` file: syntax error, unexpected '\n', expecting =>
      end
         ^
.

 #  from //ios/Podfile:33
 #  -------------------------------------------
 #          use_flipper!()
 >        end
 #      
 #  -------------------------------------------
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 File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")

require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}

platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'
install! 'cocoapods',
  :deterministic_uuids => false

target 'JobbleQA' do
  use_expo_modules!
  config = use_native_modules!

  use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']

  # Flags change depending on the env values.
  flags = get_default_flags()

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',
    :fabric_enabled => flags[:fabric_enabled],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
# @generated begin expo-community-flipper - expo prebuild (DO NOT MODIFY) sync-eaa63d5375e7930ea096abf972908f639babe2c9

      # Flipper support successfully added via expo config plugin
      # https://www.npmjs.com/package/expo-community-flipper
      if !ENV['FLIPPER_DISABLE']
        use_flipper!()
      end
    
# @generated end expo-community-flipper
    #
    # Uncomment to opt-in to using Flipper
    # Note that if you have use_frameworks! enabled, Flipper will not work
    # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,
  )

  post_install do |installer|
# @generated begin expo-community-flipper-post-install - expo prebuild (DO NOT MODIFY) sync-616283d65c598f00dc6cc76cb3079af422438f93

      # Flipper support successfully added via expo config plugin
      # https://www.npmjs.com/package/expo-community-flipper
      if !ENV['FLIPPER_DISABLE']
        flipper_post_install(installer)
      end
    
# @generated end expo-community-flipper-post-install
    react_native_post_install(
      installer,
      # Set `mac_catalyst_enabled` to `true` in order to apply patches
      # necessary for Mac Catalyst builds
      :mac_catalyst_enabled => false
    )
    __apply_Xcode_12_5_M1_post_install_workaround(installer)

    # 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
      .each do |pod_name, target_installation_result|
      target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
        resource_bundle_target.build_configurations.each do |config|
          config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        end
      end
    end
  end

  post_integrate do |installer|
    begin
      expo_patch_react_imports!(installer)
    rescue => e
      Pod::UI.warn e
    end
  end
end

Discussion: Use js-flipper instead?

I would like to open this for discussion to use just JS connection js-flipper, which provide same functionality for RN/Expo apps and does not require to hassle with native dependency and also makes connecting to all devices easier (does not require adb/idb).

I could provide a demo example and describe this approach in more details if found like a interesting option for Expo x Flipper use case.

Idempotence

Hey Jakob!

Thank you for this config plugin! We started to use it for the Showtime app. Just wanted to note that the plugin doesn't seem to be idempotent-- we can't run expo prebuild multiple times:

โœ– Config sync failed
[ios.dangerous]: withIosDangerousBaseMod: Cannot add Flipper to the project's ios/Podfile because it's malformed. Please report this with a copy of your project Podfile. You can generate this with the `expo prebuild` command.

Do you have the same issue?

DISABLE_FLIPPER=1 breaks CI

Setting export FLIPPER_DISABLE=1 breaks eas build

Hey @jakobo, when I set my environmental variable to be disabled in as an expo secret and CI and I was hit with the following error:

It seems as though when we set DISABLE_FLIPPER=1, react-native-flipper is not disabled and is looking for Flipper plugin as well. Is there a way to tell cocoapods to not install react-native-flipper?

Thanks!

[RUN_FASTLANE] โ€บ Compiling react-native-flipper Pods/react-native-flipper ยป react-native-flipper-dummy.m
[RUN_FASTLANE] โ€บ Compiling react-native-flipper Pods/react-native-flipper ยป FlipperReactNativeJavaScriptPluginManager.m
[RUN_FASTLANE]
โŒ  fatal error: 'FlipperKit/FlipperClient.h' file not found


[RUN_FASTLANE] โ€บ Compiling react-native-flipper Pods/react-native-flipper ยป FlipperReactNativeJavaScriptPlugin.m
[RUN_FASTLANE]
โŒ  (node_modules/react-native-flipper/ios/FlipperReactNativeJavaScriptPlugin.h:9:9)

   7 |
   8 | #if DEBUG
>  9 | #import <FlipperKit/FlipperConnection.h>
     |         ^ 'FlipperKit/FlipperConnection.h' file not found
  10 | #import <FlipperKit/FlipperPlugin.h>
  11 |
  12 | NS_ASSUME_NONNULL_BEGIN

iOS: Failure to build with --configuration Release

Hello!

I'm trying to use expo-community-flipper in combination with Expo prebuild/run:ios and seeing the below error when running expo run:ios --configuration Release - simply running expo run:ios (aka Debug configuration) works fine and the Flipper integration works great ๐Ÿ’ฏ.

I tried using FLIPPER_DISABLE=1 but was seeing the same error. I also tried a expo prebuild -p ios --clean after installing expo-community-flipper.

The error

โŒ  Undefined symbols for architecture x86_64
โ”Œโ”€ Symbol: _OBJC_CLASS_$_FlipperClient
โ””โ”€ Referenced from: objc-class-ref in libreact-native-flipper.a(FlipperReactNativeJavaScriptPluginManager.o)


โŒ  ld: symbol(s) not found for architecture x86_64



โŒ  clang: error: linker command failed with exit code 1 (use -v to see invocation)


โ€บ Linking   tempexposandbox ยป tempexposandbox
โŒ  Undefined symbols for architecture arm64
โ”Œโ”€ Symbol: _OBJC_CLASS_$_FlipperClient
โ””โ”€ Referenced from: objc-class-ref in libreact-native-flipper.a(FlipperReactNativeJavaScriptPluginManager.o)


โŒ  ld: symbol(s) not found for architecture arm64



โŒ  clang: error: linker command failed with exit code 1 (use -v to see invocation)


    Run script build phase 'Start Packager' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'tempexposandbox' from project 'tempexposandbox')
    Run script build phase 'Bundle React Native code and images' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'tempexposandbox' from project 'tempexposandbox')
    Run script build phase '[CP-User] Generate app.config for prebuilt Constants.manifest' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'EXConstants' from project 'Pods')

โ€บ 6 error(s), and 3 warning(s)

CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.

Here's my app.config.js file:

const config = {
  expo: {
    name: "temp-expo-sandbox",
    slug: "temp-expo-sandbox",
    version: "1.0.0",
    orientation: "portrait",
    icon: "./assets/images/icon.png",
    scheme: "myapp",
    jsEngine: "hermes",
    userInterfaceStyle: "automatic",
    splash: {
      image: "./assets/images/splash.png",
      resizeMode: "contain",
      backgroundColor: "#ffffff",
    },
    plugins: ["expo-community-flipper"],
    updates: {
      fallbackToCacheTimeout: 0,
    },
    assetBundlePatterns: ["**/*"],
    ios: {
      supportsTablet: true,
      bundleIdentifier: "XXXXX",
    },
    android: {
      adaptiveIcon: {
        foregroundImage: "./assets/images/adaptive-icon.png",
        backgroundColor: "#ffffff",
      },
      package: "XXXXX",
    },
    web: {
      favicon: "./assets/images/favicon.png",
    },
  },
};

module.exports = config;

And finally, here's my package.json dependencies:

  "dependencies": {
    "@expo/vector-icons": "^13.0.0",
    "@react-navigation/bottom-tabs": "^6.0.5",
    "@react-navigation/native": "^6.0.2",
    "@react-navigation/native-stack": "^6.1.0",
    "expo": "~47.0.9",
    "expo-asset": "~8.6.2",
    "expo-community-flipper": "^47.0.0",
    "expo-constants": "~14.0.2",
    "expo-dev-client": "~2.0.1",
    "expo-font": "~11.0.1",
    "expo-linking": "~3.2.3",
    "expo-splash-screen": "~0.17.5",
    "expo-status-bar": "~1.4.2",
    "expo-system-ui": "~2.0.1",
    "expo-web-browser": "~12.0.0",
    "react": "18.1.0",
    "react-dom": "18.1.0",
    "react-native": "0.70.5",
    "react-native-flipper": "0.175.0",
    "react-native-safe-area-context": "4.4.1",
    "react-native-screens": "~3.18.0",
    "react-native-web": "~0.18.9"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9",
    "@types/react": "~18.0.24",
    "@types/react-native": "~0.70.6",
    "jest": "^26.6.3",
    "jest-expo": "~47.0.1",
    "react-test-renderer": "18.1.0",
    "typescript": "^4.6.3"
  },

Thank you for all the hard work you do on this plugin ๐Ÿ™

Is there a way to conditionally add flipper into expo app?

Hi @jakobo

Is there a way to conditionally add expo-community-flipper into the expo app based on environmental variables?

I'm trying to get Flipper to integrate only in development builds. And prevent Flipper from integrating into our app in staging or production.

Thanks!

EAS build fails - 'FBDefines/FBDefines.h' file not found

Hi,

I am trying to setup Flipper for first time in my Expo app but something fails and I have no idea how to fix.
I followed this blog post - https://blog.expo.dev/developing-react-native-with-expo-and-flipper-8c426bdf995a
Maybe a relevant issue - facebook/flipper#478 ?

Dependencies:

"expo": "^46.0.0",
"react-native-flipper": "^0.164.0",
"expo-community-flipper": "^46.0.1",

Error log:

....
โ€บ Copying   react-native ios/build/Build/Products/Debug-iphonesimulator/FlipperKit/FlipperKit.framework/Headers/FBDefines.h โžœ ../../../Users/expo/workingdir/build/mobile/ios/Pods/FlipperKit/iOS/FBDefines/FBDefines.h
โ€บ Compiling react-native Pods/FlipperKit ยป UIView+SKInvalidation.mm

โŒ  (/Users/expo/workingdir/build/mobile/ios/build/Build/Products/Debug-iphonesimulator/FlipperKit/FlipperKit.framework/Headers/SKMacros.h:11:9)

   9 | #define SKMACROS_H
  10 | 
> 11 | #import <FBDefines/FBDefines.h>
     |         ^ 'FBDefines/FBDefines.h' file not found
  12 | 
  13 | #ifdef __cplusplus
  14 | #define SK_EXTERN_C_BEGIN extern "C" {
โ€บ Compiling react-native Pods/FlipperKit ยป UIColor+SKSonarValueCoder.mm
โ€บ Compiling react-native Pods/FlipperKit ยป UICollectionView+SKInvalidation.mm

โŒ  (/Users/expo/workingdir/build/mobile/ios/build/Build/Products/Debug-iphonesimulator/FlipperKit/FlipperKit.framework/Headers/SKMacros.h:11:9)

   9 | #define SKMACROS_H
  10 | 
> 11 | #import <FBDefines/FBDefines.h>
     |         ^ 'FBDefines/FBDefines.h' file not found
  12 | 
  13 | #ifdef __cplusplus
....

Version Version 47.0.0 causing plugin conflict error

Hey there, using the package version 47.0.0 causes this error when trying to build or run the app with other plugins:

Cannot find module 'expo/config-plugins'
Require stack:
- /Users/moreno/Documents/Traba/traba-app/node_modules/expo-community-flipper/build/withFlipper.ios.js
- /Users/moreno/Documents/Traba/traba-app/node_modules/expo-community-flipper/build/withFlipper.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config-plugins/build/utils/plugin-resolver.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config-plugins/build/plugins/withStaticPlugin.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config-plugins/build/plugins/withPlugins.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config-plugins/build/index.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config/build/plugins/withConfigPlugins.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config/build/Config.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/config/build/index.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/node_modules/@expo/metro-config/build/ExpoMetroConfig.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/build/exp.js
- /Users/moreno/.nvm/versions/node/v16.14.0/lib/node_modules/expo-cli/bin/expo.js

Running the previous version 46.0.2 works fine.

Flipper starts web bundling

when ever I try to use flipper it starts web bundling as well and my app is using some packages that are not web compatible as a result the whole app crashes for me because it keeps trying to rebuild and ends up using all the memory and crashes what should I do about it. I am using flipper because i want to debug redux state

SDK 47 with v47.0.2 still not working

Hello,

I read other issues about the problem "โ”Œโ”€ Symbol: OBJC_CLASS$_FlipperClient
โ””โ”€ Referenced from: objc-class-ref in libreact-native-flipper.a(FlipperReactNativeJavaScriptPluginManager.o)"

#49 concludes that using 47.0.2 everything should work. I am actually blocked and I need to make to release :)

I also tried the combinations describe at #42 (comment)

And bonus track, I tried to upgrade to SDK48 but it is still soon and I ran into some other problems.

Could someone give me some light, please?

package.json

"expo": "47.0.12",
"react-native": "0.70.5",
"expo-community-flipper": "47.0.2",
"react-native-flipper": "0.174.0"

app.json

"jsEngine": "hermes", // I also tried removing this
 "plugins": [
      ["expo-community-flipper", "0.174.0"],
   ]

podfile

  use_react_native!(
    :path => config[:reactNativePath],
# @generated begin expo-community-flipper-isprod - expo prebuild (DO NOT MODIFY) sync-828c22a1a38236bf5b7c203393f474bc68356b34
    # ENV value added to support Hermes
    :production => ENV["PRODUCTION"] == "1" ? true : false,
# @generated end expo-community-flipper-isprod
    :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',
    :fabric_enabled => flags[:fabric_enabled],
# @generated begin expo-community-flipper-urn - expo prebuild (DO NOT MODIFY) sync-36549b284a4a7b839b8dd0b522cfd451d4ff147e
    :flipper_configuration => FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => '0.174.0' }),
# @generated end expo-community-flipper-urn
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
    #
    # Uncomment to opt-in to using Flipper
    # Note that if you have use_frameworks! enabled, Flipper will not work
    # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,
  )

I am trying with the command: expo run:ios --configuration Release

Thanks in advance

Expo prebuild fails on SDK 48

I just upgraded to Expo 48, but now the prebuild fails.

This is the error:

Error: [ios.dangerous]: withIosDangerousBaseMod: Cannot add flipper arguments to the project's ios/Podfile. Please report this with a copy of your project Podfile. You can generate this with the `expo prebuild` command.

And this is the Podfile:

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 File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")

require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}

ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'

platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'
install! 'cocoapods',
  :deterministic_uuids => false

prepare_react_native_project!

# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,
# you can also exclude `react-native-flipper` in `react-native.config.js`
#
# ```js
# module.exports = {
#   dependencies: {
#     ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
#   }
# }
# ```
flipper_config = FlipperConfiguration.disabled
if ENV['NO_FLIPPER'] == "1" || ENV['CI'] then
  # Explicitly disabled through environment variables
  flipper_config = FlipperConfiguration.disabled
elsif podfile_properties.key?('ios.flipper') then
  # Configure Flipper in Podfile.properties.json
  if podfile_properties['ios.flipper'] == 'true' then
    flipper_config = FlipperConfiguration.enabled(["Debug", "Release"])
  elsif podfile_properties['ios.flipper'] != 'false' then
    flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] })
  end
end

target 'MyProject' do
  use_expo_modules!
# @generated begin react-native-maps - expo prebuild (DO NOT MODIFY) sync-e9cc66c360abe50bc66d89fffb3c55b034d7d369
  pod 'react-native-google-maps', path: File.dirname(`node --print "require.resolve('react-native-maps/package.json')"`)
# @generated end react-native-maps
  config = use_native_modules!

  use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
  use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']

  # Flags change depending on the env values.
  flags = get_default_flags()

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
    :fabric_enabled => flags[:fabric_enabled],
    # An absolute path to your application 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
  )

  post_install do |installer|
    react_native_post_install(
      installer,
      config[:reactNativePath],
      # Set `mac_catalyst_enabled` to `true` in order to apply patches
      # necessary for Mac Catalyst builds
      :mac_catalyst_enabled => false
    )
    __apply_Xcode_12_5_M1_post_install_workaround(installer)

    # 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
      .each do |pod_name, target_installation_result|
      target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
        resource_bundle_target.build_configurations.each do |config|
          config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        end
      end
    end
  end

  post_integrate do |installer|
    begin
      expo_patch_react_imports!(installer)
    rescue => e
      Pod::UI.warn e
    end
  end
end

No option to remove Flipper for Release

? `FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => '${version}' }),`

Why is Flipper ever included in Release builds?

I'm getting this error in my eas build:

โ€บ Compiling react-native-flipper Pods/react-native-flipper ยป FlipperReactNativeJavaScriptPluginManager.m

โŒ  (../node_modules/react-native-flipper/ios/FlipperReactNativeJavaScriptPluginManager.h:12:9)

  10 | #import <React/RCTBridgeModule.h>
  11 | 
> 12 | #import <FlipperKit/FlipperClient.h>
     |         ^ 'FlipperKit/FlipperClient.h' file not found
  13 | 
  14 | NS_ASSUME_NONNULL_BEGIN
  15 | 
โ€บ Compiling @segment/analytics-react-native Pods/segment-analytics-react-native ยป AnalyticsReactNative.swift

Is there a way to remove this pod for release? My build works locally with expo run:ios

CommandError: Must specify "expo-platform" header or "platform" query parameter error

I was using it with expo sdk 45 and it was working well. I updated to expo sdk 46 and updates expo-community-flipper to 46.x.x. but flipper is not showing hermes debugger.

I get the following error in the terminal:
CommandError: Must specify "expo-platform" header or "platform" query parameter

I saw the pinned issue and it might be related but I honestly did not understand the fix.

System:
      OS: macOS(intel chip) 12.5.1
      Shell: 5.8.1 - /bin/zsh

SDK 48 - Merge Into Expo

Why

In its current form, this plugin relies heavily on regex based mods in order to function, which means with every new expo SDK (which means every react-native update (which means every Podfile change)), we need to recertify that this plugin works. It's a cumbersome process, and one that's probably better managed at the time we're changing the Podfile.

How

The plan is to add the core Flipper functionality to expo-build-properties, enabling basic Flipper support via an official config plugin. Developers on expo can then include Flipper the same way that they would include something like react-native firebase: add the necessary modules via npm and then configure the build properties plugin.

In practice, the expo-build-properties configuration would look like

{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "flipper": true // or a flipper version string such as "0.128.0"
          },
          "ios": {
            "flipper": true // or a flipper version string such as "0.128.0"
          }
        }
      ]
    ]
  }
}

The template Podfile used by expo during expo prebuild and EAS would use these new config plugin properties to enable additional features. This is a pattern already used by the properties plugin for enabling things such as use_frameworks.

  • Update expo-community-flipper to not perform podfile changes if suitable arguments for flipper exist inside of use_react_native. This is already possible thanks to IOS_HAS_FLIPPER_ARG /use_react_native!\([\s\S]*^\s*:flipper_configuration\s+=>/gm. It's an impefect regex, but is good enough for the purpose of migrating from a community plugin to the build properties solution
  • Add additional properties & typings for expo-config-properties branch & diff
  • Add backward-compatible change to Podfile that supports upcoming properties (when this lands, it WILL disable flipper on iOS for those using the plugin because of the regex). However, what will happen is Flipper does not get added by us, and we can simply emit a proper warning telling folks to migrate to the official supported config plugin
  • Release an SDK48 version of plugin that informs users to migrate to the official solution

With SDK 48, this module can be marked as deprecated, and we can start solving the problems together in the expo issue tracker, discussions, and discord.

Risks & Mitigation

Simplifying the configuration does have a couple of risks. It's possible (though increasingly unlikely) that a major Flipper change adds burden to the Expo team. It's also possible that an underlying lib (ie Folly) goes off the rails and we create a flipper+SDK combo that simply doesn't work. Thankfully, not including the config values for cfg.ios.flipper would turn flipper off,

Flipper could create AppDelegate changes or other stuff outside of the scope of the config plugin. I'd propose we cross that bridge if it comes to it. All signs point to Flipper being available in react-native, and at least one known working version being in the react-native layer by default.

FYSA

/cc @Kudo

Using 'expo-community-flipper' plugin doesn't work

Hello!

I'm using Expo Manager SDK 45, and actually trying to debug my app with development build and Flipper.

I've closely followed the guide on Expo docs website. Now, when I run the app, I get the following error :

Cannot find module 'expo/config-plugins'
Require stack:
- D:\webstorm-workspace\mobile-app\node_modules\expo-community-flipper\build\withFlipper.ios.js
- D:\webstorm-workspace\mobile-app\node_modules\expo-community-flipper\build\withFlipper.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\utils\plugin-resolver.js   
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\plugins\withStaticPlugin.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\plugins\withPlugins.js     
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\index.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config\build\plugins\withConfigPlugins.js       
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config\build\Config.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config\build\index.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\metro-config\build\ExpoMetroConfig.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\build\exp.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\bin\expo.js
Error: Cannot find module 'expo/config-plugins'
Require stack:
- D:\webstorm-workspace\mobile-app\node_modules\expo-community-flipper\build\withFlipper.ios.js
- D:\webstorm-workspace\mobile-app\node_modules\expo-community-flipper\build\withFlipper.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\utils\plugin-resolver.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\plugins\withStaticPlugin.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\plugins\withPlugins.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config-plugins\build\index.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config\build\plugins\withConfigPlugins.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config\build\Config.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\config\build\index.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\metro-config\build\ExpoMetroConfig.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\build\exp.js
- C:\Users\dde\AppData\Roaming\npm\node_modules\expo-cli\bin\expo.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
    at Function.Module._load (node:internal/modules/cjs/loader:804:27)
    at Module.require (node:internal/modules/cjs/loader:1028:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (D:\webstorm-workspace\mobile-app\node_modules\expo-community-flipper\build\withFlipper.ios.js:24:26)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Module.require (node:internal/modules/cjs/loader:1028:19)

I follow the error which is in a file called:

..\node_modules\expo-community-flipper\build\withFlipper.ios.js:24:26

and saw this :

const config_plugins_1 = require("expo/config-plugins");

I think the require() here is wrong, it should be

const config_plugins_1 = require("@expo/config-plugins");

There is another on in ..\node_modules\expo-community-flipper\build\withFlipper.android.js.

Thanks in advance

react-native-flipper-performance-plugin cannot be used with expo-community-flipper

After installing react-native-flipper-performance-plugin as a devDependency, all my EAS iOS Productions builds are failing.

Command: eas build -p ios --proflie production

Log:

Compiling react-native-flipper-performance-plugin Pods/react-native-flipper-performance-plugin ยป FlipperPerformancePlugin.m

โŒ  (node_modules/react-native-flipper-performance-plugin/ios/FlipperPerformancePlugin.h:3:9)

  1 | #import <Foundation/Foundation.h>
  2 | 
> 3 | #import <FlipperKit/FlipperPlugin.h>
    |         ^ 'FlipperKit/FlipperPlugin.h' file not found
  4 | #import <React/RCTBridge.h>
  5 | 
  6 | @interface FlipperPerformancePlugin : NSObject<RCTBridgeModule, FlipperPlugin>
โ–ธ ** ARCHIVE FAILED **
โ–ธ The following build commands failed:
โ–ธ 	CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler (in target 'sovran-react-native' from project 'Pods')
โ–ธ 	CompileC /Users/expo/Library/Developer/Xcode/DerivedData/Curebase-hlhkbcpnqfhmkyadpnbibuogbjfb/Build/Intermediates.noindex/ArchiveIntermediates/Curebase/IntermediateBuildFilesPath/Pods.build/Release-iphoneos/react-native-flipper-performance-plugin.build/Objects-normal/arm64/FlipperPerformancePlugin.o /Users/expo/workingdir/build/node_modules/react-native-flipper-performance-plugin/ios/FlipperPerformancePlugin.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'react-native-flipper-performance-plugin' from project 'Pods')
โ–ธ (2 failures)
20

I do have FLIPPER_DISABLE on my eas.json:

    "production": {
      "env": {
        "APP_ENVIRONMENT": "production",
        "FLIPPER_DISABLE": "1"
      }
    }

Removing FLIPPER_DISABLE made it work. Any thoughts?

Hermes debugger is unavailable on all of our devices and machines

I'll start by saying I don't believe this is related to expo-community-flipper as it began affecting builds that previously worked, on Flipper versions that previously worked - but it affects all of our machines, (iOS and Android, Linux and macOS,) and previous git commits, previous builds, Expo 45, Expo 46, previous Flipper versions - nothing fixes the issue - so I really don't know what to guess at as far as causes.

I've commented on a relevant issue on the Flipper repo, but it seems like we're out of luck if it comes to hoping on Facebook for a solution. Is anyone else experiencing this?

facebook/flipper#3983

Edit: I noticed the ReadMe doesn't include SDK 46 on the list of verified versions. I'm guessing that's just an oversight though?

Native module for Flipper seems unavailable

Hi, I've just added the plugin to expo config and I get this warning on launch.

The native module for Flipper seems unavailable. Please verify that `react-native-flipper` is installed as yarn dependency to your project and, for iOS, that `pod install` is run in the `ios` directory.
at node_modules/react-native-flipper/index.js:158:4 in printNoFlipperWarning
at node_modules/react-native-flipper/index.js:129:25 in addPlugin
at node_modules/@react-navigation/devtools/src/useFlipper.tsx:55:13 in React.useEffect$argument_0

Getting "Failed to resolve plugin for module "expo-community-flipper" only on production build

Hello, I'm getting this when I try to build for production with EAS build, even locally.
All works fine for staging or development builds.

[INSTALL_DEPENDENCIES] [4/4] Building fresh packages...
[READ_PACKAGE_JSON] Using package.json:
[READ_PACKAGE_JSON] {
...
[READ_APP_CONFIG] 
PluginError: Failed to resolve plugin for module "expo-community-flipper" relative to "/var/folders/86/hpx16y154yvd6kndrx_nxrqc0000gn/T/eas-build-local-nodejs/50a8c532-ea70-4801-8a62-6e3bab46ac2b/build"

I've spent a couple of hours, prebuild is ok but the build don't. Can't figure out why.

Expo SDK 46
eas-cli/2.1.0
expo-cli/6.0.5

Thanks

Hermes debugger can't connect in Windows 10/11

Edit By Maintainer: Please see the upstream Hermes + Windows Issue If you are running into this bug, please include your Expo SDK version (which tells us what React Native version you are using) and include your Podfile from running expo prebuild so that we can provide additional information to the Flipper team. โค๏ธ

(Original report below)


I'm curious if anyone has gotten the Hermes plugin to work.

React DevTools works great but I get this when trying to pull up Hermes (which our app is using).
2022-02-23_10h33_31

And this is all that's logged.
2022-02-23_10h33_14

Is the Hermes plugin even expected to work?

Thanks!

Flipper Support in Expo SDK 48+

๐ŸŽ‰ It's happened! Flipper support is now a natural part of your expo build via the official build-properties plugin.

How to Use

Build Properties Plugin docs

In your app.config.js:

import { withPlugins } from 'expo/config-plugins';
import { withBuildProperties } from 'expo-build-properties';

/*
$ANDROID_FLIPPER (string) - Flipper is always enabled in Android. If you're
using a specific version of react-native-flipper, you can specify the matching
semver string here. During the gradle build, react-native will select the correct
library versions.

$IOS_FLIPPER (boolean | string) - Flipper is disabled by default in iOS because
it's highly likely you are using Firebase or another podfile that enables the
use_frameworks directive. You can opt into flipper on iOS one of two ways:
- `true` will use the version of Flipper bundled with your current react-native version
  great for layout debugging, performance checks, etc
- A semver string matching the `react-native-flipper` in your `package.json`. This
  is needed if you are using flipper plugins, which need to talk to Flipper via the
  JS bridge API. Flipper moves fast, and ensuring your versions match is critical
  to having the iOS device properly show up in the debugger.

Finally, be sure to check the Flipper GitHub if you're using a non-standard flipper
verison, as the latest flipper is not always the most stable.
*/

export default withPlugins(config, [
  [withBuildProperties, {
    "android": {
      "flipper" : $ANDROID_FLIPPER
    },
    "ios": {
      "flipper": $IOS_FLIPPER
    }
  }]
]);

Getting Help

The best way to get help is to check the expo tracker for an issue and open an issue if needed. Myself, other contributors to expo-community-flipper, Kudo (expo team) and others are there and want to help you succeed.

Closing

I want to thank every single contributor to expo-community-flipper. Those who filed bugs, helped answer questions, waited on and reported eas build results, and generally made expo better; you all made this library an absolute joy to work on. I hope to avoid looking at a Podfile for a little bit. โค๏ธ

iOS builds fail with SDK 48

The error is below. For the profile that's failing, we're not using any customization like "env": { "FLIPPER_DISABLE": "1" } so I'm not sure what might cause the problem.

Android builds worked.

[stderr] 
Error: [ios.dangerous]: withIosDangerousBaseMod: Cannot add flipper arguments to the project's ios/Podfile. Please report this with a copy of your project Podfile. You can generate this with the `expo prebuild` command.
[stderr] 
Error: [ios.dangerous]: withIosDangerousBaseMod: Cannot add flipper arguments to the project's ios/Podfile. Please report this with a copy of your project Podfile. You can generate this with the `expo prebuild` command.
[stderr] 
    at updatePodfileContentsWithFlipper (/Users/expo/workingdir/build/node_modules/expo-community-flipper/build/withFlipper.ios.js:190:15)
[stderr] 
    at /Users/expo/workingdir/build/node_modules/expo-community-flipper/build/withFlipper.ios.js:82:37
[stderr] 
    at action (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:201:29)
[stderr] 
    at interceptingMod (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:105:27)
[stderr] 
    at action (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:206:14)
[stderr] 
    at async interceptingMod (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:105:21)
[stderr] 
    at async interceptingMod (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:105:21)
[stderr] 
    at async interceptingMod (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:105:21)
[stderr] 
    at async interceptingMod (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:105:21)
[stderr] 
    at async action (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/createBaseMod.js:61:21)
[stderr] 
    at async interceptingMod (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/withMod.js:105:21)
[stderr] 
    at async evalModsAsync (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/mod-compiler.js:204:25)
[stderr] 
    at async Object.compileModsAsync (/Users/expo/workingdir/build/node_modules/@expo/config-plugins/build/plugins/mod-compiler.js:124:10)
[stderr] 
    at async configureProjectAsync (/Users/expo/workingdir/build/node_modules/@expo/cli/build/src/prebuild/configureProjectAsync.js:54:15)
[stderr] 
    at async prebuildAsync (/Users/expo/workingdir/build/node_modules/@expo/cli/build/src/prebuild/prebuildAsync.js:83:9)
[stderr] 
error Command failed with exit code 1.

iOS including Flipper When Plugin Not in app.json

Nice!

Would this also mean we can somehow exclude flipper entirely for non-development builds? Currently, even if I exclude the config plugin, the iOS build fails (I assume because it does something fancy when finding react-native-flipper in node_modules or something. Is it the auto-linker's "fault"?).

Originally posted by @SimenB in #41 (comment)

So that I can triage this, can you do the following?

  1. Include your SDK version of expo, as well as if you're building locally or via EAS
  2. Locally run expo prebuild and paste your ios/Podfile to this thread
  3. Share your app.json or app.config.js. Redactions are OK. Specifically, the plugins section is most important for triage
  4. Include any additional error messages that may help in triaging the issue

Thank you for reporting this @SimenB!

Invalid `Podfile` file: uninitialized constant Pod::Podfile::FlipperConfiguration

Hello @jakobo
I've followed your guide to install flipper under expo, but when I launch a build I get this:

[INSTALL_PODS] Installing pods
[INSTALL_PODS] Using Expo modules
[INSTALL_PODS] Auto-linking React Native modules for target `YourApp`: RNCAsyncStorage, RNCMaskedView, RNCPicker, RNGestureHandler, RNReanimated, RNSVG, RNScreens, RNSharedElement, react-native-flipper, react-native-netinfo, react-native-plaid-link-sdk, react-native-safe-area-context, react-native-video, react-native-view-shot, and react-native-webview
[INSTALL_PODS] 
[INSTALL_PODS] [!] Invalid `Podfile` file: uninitialized constant Pod::Podfile::FlipperConfiguration.
[INSTALL_PODS] 
[INSTALL_PODS]  #  from /private/var/folders/86/hpx16y154yvd6kndrx_nxrqc0000gn/T/eas-build-local-nodejs/67b87cad-2b4b-4058-b5a9-04a18c67fd63/build/ios/Podfile:33
[INSTALL_PODS]  #  -------------------------------------------
[INSTALL_PODS]  #              # https://www.npmjs.com/package/expo-community-flipper
[INSTALL_PODS]  >              :flipper_configuration => ENV['FLIPPER_DISABLE'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled,
[INSTALL_PODS]  #  # @generated end expo-community-flipper-urn
[INSTALL_PODS]  #  -------------------------------------------
[INSTALL_PODS] 
Error: pod exited with non-zero code: 1

do you know why?

Flipper SDK version

Hi,

I'm using Expo 44, expo-community-flipper 44.0.1, react-native-flipper 0.140 and am running the dev client in the Android simulator on Windows 10.

expo run:android

The Flipper doc recommends to use the latest Flipper SDK which is 140 at the moment, but this creates compilation problems (because it requires Android SDK 31).

Some other version like 127 crashes the app.

The readme examples mention version 123 which is the version I ended up using.

If this the version you recommend using?

Thanks!

Expo 47 with Hermes build?

Hey. I'm now on MacOS and thought I'd try tackling getting Flipper working again.
It makes me want to cry every time. ๐Ÿ˜›

Three questions...

With an iOS Hermes build I'm getting...

Plugin 'Hermes Debugger (RN)' is unavailable
Device plugin 'Hermes Debugger (RN)' is not supported by the selected device 'iPhone 14 Pro Max' (iOS).

Is debugging Hermes builds currently possible?

Is it possible for Flipper on macOS to see a physical Android device? If so I can't figure it out.

Is Flipper even capable of what I'm trying to do???

Ideally I have hermes builds, am able to use...

  • Hermes Debugger
  • React DevTools
  • Redux Debugger

Should I give up on this dream?
How are you guys debugging affectively with Expo?

Notice: iOS Flipper Known Compatibility Issues

As of RN 0.69.2+ and Flipper 0.158.0, there are several issues with other config plugins that are incompatible with Flipper on iOS. This thread documents the known plugin / pod combinations with issues. Where possible, we try to link out to other threads to provide a complete picture of the problem.

โŒ expo-firebase-analytics

Relevant Threads: #26

reason Firebase requires use_frameworks and is not compatible with Flipper at this time 1, 2, 3

resolution If you do not believe you need use_frameworks, you may set the ECF plugin's ios.stripUseFrameworks = true which will ensure there are no use_frameworks lines in your podfile. However, other libraries may not build if you do this. Instead, we recommend turning off Flipper on iOS by setting ios.enabled = false as this will still let you use Flipper for Android.

Expo SDK 47 Support

Thanks for all the great work on this project! I wondered if there will be substantial modifications necessary for Expo SDK 47?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.