facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
119.16k stars 24.32k forks source link

How to succeed React Native upgrade 0.68.5 to 0.70.6 #35588

Closed kopax-polyconseil closed 1 year ago

kopax-polyconseil commented 1 year ago

New Version

0.70.6

Old Version

0.68.2

Build Target(s)

iOS/Android

Output of react-native info

info Fetching system and libraries information...
System:
    OS: Linux 5.8 Debian GNU/Linux 10 (buster) 10 (buster)
    CPU: (8) x64 Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz
    Memory: 2.53 GB / 15.30 GB
    Shell: 5.0.3 - /bin/bash
  Binaries:
    Node: 14.13.0 - ~/.nvm/versions/node/v14.13.0/bin/node
    Yarn: 1.22.15 - ~/.yarn/bin/yarn
    npm: 6.14.11 - ~/.nvm/versions/node/v14.13.0/bin/npmhttps://github.com/pass-culture/pass-culture-app-native/pull/4045
    Watchman: 20210124.162314.0 - /usr/local/bin/watchman
  SDKs:
    Android SDK:
      API Levels: 26, 27, 28, 29, 30, 31, 32, 33
      Build Tools: 28.0.2, 28.0.3, 29.0.2, 30.0.2, 30.0.3, 31.0.0, 32.0.0, 33.0.0
      System Images: android-29 | Google APIs Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: Not Found
  Languages:
    Java: 1.8.0_231 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.2 => 17.0.2 
    react-native: 0.68.5 => 0.68.5 
  npmGlobalPackages:
    *react-native*: Not Found

Issue and Reproduction Steps

Hello, since we are stuck succeeding our iOS simulator build within GitHub action due to error Library not loaded: @rpath/hermes.framework/hermes using react native 0.68.5 (issue: https://github.com/facebook/react-native/issues/35536 , error log: https://gist.github.com/kopax-polyconseil/cd31322d8d71b664a0c965be7a1607e0), our organization as no other choice than trying (for the second time) to perform the react-native upgrade: according to changelog and documentation hermes/ruby become more stable in futur version.

As this is our second attempt, we are seeking help. The upgrade guide differ in many points with our current application, this is the list:

  1. .flowconfig does not exist in our project while it is MODIFIED in upgrade helper: why? <- it seems we don't need it
  2. .node-version as been ADDED while we use .nvmrc to set our version: do we need both ? <- it is unclear if .nvmrc is enough
  3. android/app/src/main/java/com/rndiffapp/MainActivity.java does not look like ours have big differance from your 0.68.5 version of upgrade guide and must be like version 0.70.6: How do we upgrade ?
  4. android/app/src/main/java/com/rndiffapp/newarchitecture/MainApplicationReactNativeHost.java is MODIFIED but does not exist in our project: why? <- it seems we can ignore
  5. android/app/src/main/jni/Android.mk is DELETED but does not exist in our project: why? <- it seems we can just add it (or ignore?)
  6. android/app/src/main/jni/CMakeLists.txt is ADDED, but we don't even have a android/app/src/main/jni folder: what should we do? <- it seems we can just add it (or ignore?)
  7. android/app/src/main/jni/MainApplicationModuleProvider.cpp, android/app/src/main/jni/MainApplicationModuleProvider.h, android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp, android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h, android/app/src/main/jni/MainComponentsRegistry.cpp are also MODIFIED but from non existing android/app/src/main/jni folder: what should we do? <- it seems we can just ignoree
  8. android/settings.gradle add two lines for hermes in a if block we don't have but exist in version from and to: what should we do? <- it seems we can just add and it will be ignored
  9. ios/Podfile ours as many difference than version from and to, what should we do? <- it seems we can just take all change
    • We do not have :fabric_enabled => flags[:fabric_enabled], <- it seems we can just add it
    • We use flipper for debugging, but the note state that if we have use_frameworks! enabled it will not work, looking at our repo, I can't find any use_frameworks! <- it seems we can just add it
    • What is under the addition of flipper (# An absolute path to your application root.), with line :app_path => "#{Pod::Config.instance.installation_root}/.." seems to exist in version from, but not in our, what should we do? <- it seems we can just add it
    • After modification of mac_catalyst_enabled, we should have a line __apply_Xcode_12_5_M1_post_install_workaround that we don't have. <- it seems we can just add it
  10. ios/RnDiffApp/AppDelegate.mm : we don't have this file, we have our AppDelegate.m which is totally different: what should we do? <- it seems we can just ignore

This is the analysis we have done to justify those difference:

Our last 2 previous upgrade:

  1. from 0.66.0 Γ  0.68.2 (PR: https://github.com/pass-culture/pass-culture-app-native/pull/3086)
    • https://react-native-community.github.io/upgrade-helper/?from=0.66.0&to=0.68.2 is adding android/app/src/main/java/com/rndiffapp/newarchitecture/MainApplicationReactNativeHost.java with message This file is only required for the New Architecture setup.
    • https://reactnative.dev/docs/new-architecture-intro (doc new architecture state it is experimental and I assume we don't need those fail)
    • All jni files are also written experimental
  2. from 0.68.2 Γ  0.68.5 due to android upgrade bug (PR: https://github.com/pass-culture/pass-culture-app-native/pull/3880)

This is how we are trying so far:

$ npx react-native upgrade
warn Package color-alpha has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/color-alpha/package.json
warn Package react-instantsearch-hooks has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/react-instantsearch-hooks/package.json
warn Package @testing-library/user-event has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/@testing-library/user-event/package.json
warn Package @types/uuid has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/@types/uuid/package.json
warn Package postcss-normalize has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/postcss-normalize/package.json
warn Package postcss-preset-env has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/postcss-preset-env/package.json
warn Package wdio-chromedriver-service has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/wdio-chromedriver-service/package.json
warn Package wdio-geckodriver-service has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/wdio-geckodriver-service/package.json
warn Package wdio-safaridriver-service has been ignored because it contains invalid configuration. Reason: Package subpath './package.json' is not defined by "exports" in /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/node_modules/wdio-safaridriver-service/package.json
info No version passed. Fetching latest...
info Fetching diff between v0.68.5 and v0.70.6...
info Applying diff...
warn Excluding files that exist in the template, but not in your project:
  - .flowconfig
  - App.js
  - android/app/src/main/java/com/passculture/newarchitecture/MainApplicationReactNativeHost.java
  - android/app/src/main/jni/Android.mk
  - android/app/src/main/jni/MainApplicationModuleProvider.cpp
  - android/app/src/main/jni/MainApplicationModuleProvider.h
  - android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
  - android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
  - android/app/src/main/jni/MainComponentsRegistry.cpp
  - ios/.xcode.env
  - ios/PassCulture/AppDelegate.mm
error Excluding files that failed to apply the diff:
  - .gitignore
  - .ruby-version
  - Gemfile
  - android/app/build.gradle
  - android/app/src/main/java/com/passculture/MainActivity.java
  - android/build.gradle
  - android/gradle/wrapper/gradle-wrapper.jar
  - android/settings.gradle
  - ios/.xcode.env
  - ios/Podfile
  - ios/PassCulture.xcodeproj/project.pbxproj
Please make sure to check the actual changes after the upgrade command is finished.
You can find them in our Upgrade Helper web app: https://react-native-community.github.io/upgrade-helper/?from=0.68.5&to=0.70.6
info Installing "react-native@0.70.6" and its peer dependencies...
info Running "git status" to check what changed...
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    new file:   .node-version
    new file:   android/app/src/main/jni/CMakeLists.txt
    modified:   android/gradle/wrapper/gradle-wrapper.properties
    modified:   package.json
    modified:   yarn.lock

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    ios/.xcode.env

success Upgraded React Native to v0.70.6 πŸŽ‰. Now you can review and commit the changes

Excluding files that failed to apply the diff:

The pull request: https://github.com/pass-culture/pass-culture-app-native/pull/4045

So far, we aren't able to succeed the upgrade build. Where can we find some help and expert? Is this the right place to ask question?

Thank you!

kopax-polyconseil commented 1 year ago

We also have performed the following which was not in the upgrade guide documentation

  1. Added upgrade of @types/react, @types/react-dom and @types/react-native not done within the upgrade.
  2. Added upgrade of react-native-screen to support RN 0.70+
  3. Added upgrade of @react-native-async-storage/async-storage to support RN 0.70+
  4. Use new hermes location in build.gradle (instead of hermes-engine not being in node_modules anymore)
  5. Replace in MainActivity.java all BuildConfig.IS_NEW_ARCHITECTURE_ENABLED with false

Remaining build problem

Android

  1. MainActivity.java:71: error: cannot find symbol BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;:
/home/dka/workspace/github.com/pass-culture/pass-culture-app-native/android/app/src/main/java/com/passculture/MainActivity.java:63: error: cannot find symbol
            reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
                                                 ^
  symbol:   variable IS_NEW_ARCHITECTURE_ENABLED
  location: class BuildConfig
/home/dka/workspace/github.com/pass-culture/pass-culture-app-native/android/app/src/main/java/com/passculture/MainActivity.java:71: error: cannot find symbol
            return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
                              ^
  symbol:   variable IS_NEW_ARCHITECTURE_ENABLED
  location: class BuildConfig
Note: /home/dka/workspace/github.com/pass-culture/pass-culture-app-native/android/app/src/debug/java/com/passculture/ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors

FAILURE: Build completed with 2 failures.

Fixed with replace all BuildConfig.IS_NEW_ARCHITECTURE_ENABLED with false

cortinico commented 1 year ago
  • android/app/build.gradle: medium -> fixed ⚠️ <- it seems we don't need to do change if we don't enable new architecture

That's not correct. You need to apply all the changes inside the android/app/build.gradle regardless of you using the New Architecture or not. That's also the reason why your Android app is failing to build with error: cannot find symbol BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;

kopax-polyconseil commented 1 year ago
  • android/app/build.gradle: medium -> fixed warning <- it seems we don't need to do change if we don't enable new architecture

That's not correct. You need to apply all the changes inside the android/app/build.gradle regardless of you using the New Architecture or not. That's also the reason why your Android app is failing to build with error: cannot find symbol BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;

We will take that in consideration, it needs we have to go back in previous upgrade. And add all those files first.

We also encounter a bunch of difficulties with the typing, due to @types/react being present twice, exemple:

'View' cannot be used as a JSX component.
  Its instance type 'View' is not a valid JSX element.  TS2786

This is how react, @types/react, react-native, @types/react-native are used among our dependencies and devDependencies:

dka@dka:[~/workspace/github.com/pass-culture/pass-culture-app-native (PC-17344)]: npm ls @types/react-native
PassCulture@1.217.2 /home/dka/workspace/github.com/pass-culture/pass-culture-app-native
β”œβ”€β”¬ @types/react-native-calendars@1.1264.3
β”‚ └── @types/react-native@0.66.8
β”œβ”€β”€ @types/react-native@0.70.8
└─┬ @types/styled-components-react-native@5.2.0
  └── @types/react-native@0.66.8

dka@dka:[~/workspace/github.com/pass-culture/pass-culture-app-native (PC-17344)]: npm ls @types/react
PassCulture@1.217.2 /home/dka/workspace/github.com/pass-culture/pass-culture-app-native
β”œβ”€β”¬ @storybook/addon-interactions@6.5.14
β”‚ └─┬ @devtools-ds/object-inspector@1.2.0
β”‚   └─┬ @devtools-ds/themes@1.2.0
β”‚     └─┬ @design-systems/utils@2.12.0
β”‚       └── @types/react@18.0.26 deduped
β”œβ”€β”¬ @types/react-dom@18.0.9
β”‚ └── @types/react@17.0.37
β”œβ”€β”¬ @types/react-helmet@6.1.6
β”‚ └── @types/react@17.0.37
β”œβ”€β”¬ @types/react-native-calendars@1.1264.3
β”‚ β”œβ”€β”¬ @types/react-native@0.66.8
β”‚ β”‚ └── @types/react@17.0.37 deduped
β”‚ └── @types/react@17.0.37
β”œβ”€β”¬ @types/react-native@0.70.8
β”‚ └── @types/react@17.0.37
β”œβ”€β”¬ @types/react-test-renderer@18.0.0
β”‚ └── @types/react@17.0.37
β”œβ”€β”€ @types/react@18.0.26
β”œβ”€β”¬ @types/styled-components-react-native@5.2.0
β”‚ β”œβ”€β”¬ @types/react-native@0.66.8
β”‚ β”‚ └── @types/react@17.0.37 deduped
β”‚ β”œβ”€β”€ @types/react@17.0.37
β”‚ └─┬ @types/styled-components@5.1.17
β”‚   └── @types/react@17.0.37 deduped
└─┬ @types/styled-components@5.1.26
  β”œβ”€β”¬ @types/hoist-non-react-statics@3.3.1
  β”‚ └── @types/react@17.0.37
  └── @types/react@17.0.37

dka@dka:[~/workspace/github.com/pass-culture/pass-culture-app-native (PC-17344)]: npm ls react-native
PassCulture@1.217.2 /home/dka/workspace/github.com/pass-culture/pass-culture-app-native
β”œβ”€β”¬ @amplitude/react-native@2.7.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @batch.com/react-native-plugin@8.1.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @ptomasroos/react-native-multi-slider@2.2.2
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @react-native-async-storage/async-storage@1.17.11
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @react-native-community/netinfo@9.0.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @react-native-firebase/app@14.9.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @react-navigation/bottom-tabs@6.0.9
β”‚ β”œβ”€β”¬ @react-navigation/elements@1.2.1
β”‚ β”‚ └── react-native@0.70.6 deduped
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @react-navigation/native@6.0.6
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @react-navigation/stack@6.0.11
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @sentry/react-native@4.2.2
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ @shopify/flash-list@1.2.1
β”‚ β”œβ”€β”€ react-native@0.70.6 deduped
β”‚ └─┬ recyclerlistview@4.1.2 invalid: "^3.0.5" from node_modules/react-native-calendars
β”‚   └── react-native@0.70.6 deduped
β”œβ”€β”¬ @testing-library/react-native@10.1.1
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ lottie-react-native@5.1.3
β”‚ β”œβ”€β”¬ react-native-safe-modules@1.0.3
β”‚ β”‚ └── react-native@0.70.6 deduped
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-country-picker-modal@2.0.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-device-info@8.4.8
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-email-link@1.12.2
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-fast-image@8.5.11
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-flipper@0.123.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-get-random-values@1.7.1
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-launch-navigator@1.0.8
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-linear-gradient@2.5.6
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-lottie-splash-screen@1.0.1
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-modal@13.0.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-permissions@3.5.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-qrcode-svg@6.1.2
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-safe-area-context@3.3.2
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-screens@3.18.2
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-svg@12.1.1
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-tracking-transparency@0.1.1
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-url-polyfill@1.3.0
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-web-swiper@2.2.1
β”‚ └── react-native@0.70.6 deduped
β”œβ”€β”¬ react-native-webview@11.23.0
β”‚ └── react-native@0.70.6 deduped
└── react-native@0.70.6

dka@dka:[~/workspace/github.com/pass-culture/pass-culture-app-native (PC-17344)]: npm ls react
PassCulture@1.217.2 /home/dka/workspace/github.com/pass-culture/pass-culture-app-native
β”œβ”€β”¬ @amplitude/react-native@2.7.0
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @chanzuckerberg/axe-storybook-testing@6.2.0
β”‚ └─┬ @storybook/preview-web@6.5.14
β”‚   └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”œβ”€β”¬ @ptomasroos/react-native-multi-slider@2.2.2
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @react-native-firebase/app@14.9.0
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @react-navigation/bottom-tabs@6.0.9
β”‚ β”œβ”€β”¬ @react-navigation/elements@1.2.1
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @react-navigation/native@6.0.6
β”‚ β”œβ”€β”¬ @react-navigation/core@6.1.0
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @react-navigation/stack@6.0.11
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @sentry/react-native@4.2.2
β”‚ β”œβ”€β”¬ @sentry/react@7.7.0
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @sentry/react@7.8.1
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @shopify/flash-list@1.2.1
β”‚ β”œβ”€β”€ react@18.2.0 deduped
β”‚ └─┬ recyclerlistview@4.1.2 invalid: "^3.0.5" from node_modules/react-native-calendars
β”‚   └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”œβ”€β”¬ @storybook/addon-a11y@6.5.14
β”‚ β”œβ”€β”¬ @storybook/addons@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ β”œβ”€β”¬ @storybook/api@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ β”œβ”€β”¬ @storybook/components@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ β”œβ”€β”¬ @storybook/theming@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @storybook/addon-actions@6.5.14
β”‚ β”œβ”€β”¬ react-inspector@5.1.1
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @storybook/addon-essentials@6.5.14
β”‚ β”œβ”€β”¬ @storybook/addon-backgrounds@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addon-controls@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addon-docs@6.5.14
β”‚ β”‚ β”œβ”€β”¬ @mdx-js/react@1.6.22
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”œβ”€β”¬ @storybook/source-loader@6.5.14
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addon-measure@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addon-outline@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addon-toolbars@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addon-viewport@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ └─┬ @storybook/core-common@6.5.14
β”‚   └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”œβ”€β”¬ @storybook/addon-interactions@6.5.14
β”‚ β”œβ”€β”¬ @devtools-ds/object-inspector@1.2.0
β”‚ β”‚ β”œβ”€β”¬ @devtools-ds/themes@1.2.0
β”‚ β”‚ β”‚ β”œβ”€β”¬ @design-systems/utils@2.12.0
β”‚ β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”œβ”€β”¬ @devtools-ds/tree@1.2.0
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/addons@6.5.9 invalid: "6.5.14" from node_modules/@storybook/addon-interactions
β”‚ β”‚ β”œβ”€β”¬ @storybook/router@6.5.9
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/api@6.5.9 invalid: "6.5.14" from node_modules/@storybook/addon-interactions
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/components@6.5.9 invalid: "6.5.14" from node_modules/@storybook/addon-interactions
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/core-common@6.5.9 invalid: "6.5.14" from node_modules/@storybook/addon-interactions
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/theming@6.5.9 invalid: "6.5.14" from node_modules/@storybook/addon-interactions
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @storybook/addon-links@6.5.14
β”‚ β”œβ”€β”¬ @storybook/router@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @storybook/addon-react-native-web@0.0.19
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @storybook/jest@0.0.10
β”‚ └─┬ @storybook/instrumenter@6.5.9
β”‚   └─┬ @storybook/addons@6.5.9
β”‚     β”œβ”€β”¬ @storybook/api@6.5.9
β”‚     β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚     β”œβ”€β”¬ @storybook/router@6.5.9
β”‚     β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚     β”œβ”€β”¬ @storybook/theming@6.5.9
β”‚     β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚     └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”œβ”€β”¬ @storybook/react@6.5.14
β”‚ β”œβ”€β”¬ @storybook/core@6.5.14
β”‚ β”‚ β”œβ”€β”¬ @storybook/core-client@6.5.14
β”‚ β”‚ β”‚ β”œβ”€β”¬ @storybook/client-api@6.5.14
β”‚ β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”‚ β”œβ”€β”¬ @storybook/ui@6.5.14
β”‚ β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”œβ”€β”¬ @storybook/core-server@6.5.14
β”‚ β”‚ β”‚ β”œβ”€β”¬ @storybook/builder-webpack4@6.5.14
β”‚ β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”‚ β”œβ”€β”¬ @storybook/core-client@6.5.14
β”‚ β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”‚ β”œβ”€β”¬ @storybook/manager-webpack4@6.5.14
β”‚ β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer, "^16.13.1 || ^17.0.0" from node_modules/@mdx-js/react
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ @storybook/store@6.5.14
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector
β”‚ β”œβ”€β”¬ react-element-to-jsx-string@14.3.4
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @testing-library/react-native@10.1.1
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @testing-library/react@12.1.2
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @typeform/embed-react@1.2.3
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ @welldone-software/why-did-you-render@7.0.1
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ lottie-react-native@5.1.3
β”‚ └── react@18.2.0 deduped
β”œβ”€β”¬ react-device-detect@2.1.2
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”œβ”€β”¬ react-dom@18.2.0 invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”œβ”€β”¬ react-error-boundary@3.1.4
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”œβ”€β”¬ react-helmet@6.1.0
β”‚ β”œβ”€β”¬ react-side-effect@2.1.1
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”œβ”€β”¬ react-hook-form@7.35.0
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”œβ”€β”¬ react-instantsearch-hooks@6.30.2
β”‚ β”œβ”€β”€ react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect
β”‚ └─┬ use-sync-external-store@1.2.0
β”‚   └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect
β”œβ”€β”¬ react-mobile-picker@0.1.13
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker
β”œβ”€β”¬ react-native-country-picker-modal@2.0.0
β”‚ β”œβ”€β”¬ @callstack/react-theme-provider@3.0.3
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider
β”‚ β”œβ”€β”¬ modal-react-native-web@0.2.0
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web
β”‚ β”œβ”€β”¬ react-async-hook@3.6.1
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker
β”œβ”€β”¬ react-native-email-link@1.12.2
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker
β”œβ”€β”¬ react-native-fast-image@8.5.11
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image
β”œβ”€β”¬ react-native-flipper@0.123.0
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-modal@13.0.0
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-permissions@3.5.0
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-qrcode-svg@6.1.2
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-safe-area-context@3.3.2
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-screens@3.18.2
β”‚ β”œβ”€β”¬ react-freeze@1.0.0
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-svg-web@1.0.9
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-svg@12.1.1
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-tracking-transparency@0.1.1
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-web@0.17.5
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native-webview@11.23.0
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper
β”œβ”€β”¬ react-native@0.70.6
β”‚ β”œβ”€β”¬ react-shallow-renderer@16.15.0
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native
β”œβ”€β”¬ react-query@3.34.16
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query
β”œβ”€β”¬ react-test-renderer@17.0.2
β”‚ β”œβ”€β”¬ react-shallow-renderer@16.14.1
β”‚ β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer, "^16.8.4 || ^17.0.0" from node_modules/react-inspector, "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" from node_modules/react-element-to-jsx-string, "^16.3.0 || ^17.0.0" from node_modules/react-side-effect, "^16.3.0" from node_modules/@callstack/react-theme-provider, "16.x.x" from node_modules/modal-react-native-web, "^17.0.0" from node_modules/react-freeze, "^16.0.0 || ^17.0.0" from node_modules/react-shallow-renderer
β”‚ └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
β”œβ”€β”€ react@18.2.0 invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer
└─┬ styled-components@5.3.6
  └── react@18.2.0 deduped invalid: ">= 0.14.0 < 18.0.0" from node_modules/react-device-detect, ">=0.14.0 <17.0.0" from node_modules/react-mobile-picker, "^16.8.6 || ^17.0.0" from node_modules/react-native-fast-image, "^16.8.0 || ^17.0.0" from node_modules/react-native-flipper, "18.1.0" from node_modules/react-native, "^16.8.0 || ^17.0.0" from node_modules/react-query, "17.0.2" from node_modules/react-test-renderer

It seems to be very hard to upgrade, so we are thinking to make a plan to simplify the upgrade of our app, do you have any recommendation so we can maximize our chances of success ?

cortinico commented 1 year ago

it needs we have to go back in previous upgrade. And add all those files first

You don't need to go back. You can get the build.gradle file from the new app template and diff with what you have locally.

cortinico commented 1 year ago

We also encounter a bunch of difficulties with the typing, due to @types/react being present twice, exemple:

We don't maintain @types/react. You should seek support for it on: https://github.com/DefinitelyTyped/DefinitelyTyped

kopax-polyconseil commented 1 year ago

I think the problem is not only the type, it is a strategy to upgrade such a big application that depend on many dep and sub deps.

My first impression after trying to attempt an upgrade is that it's a very big upgrade to perform close to impossible.

This is due because of the size of our code base, and everything that is impacted dependencies and subdependencies, affecting sources, tools (such as storybook, webpack , react-native-web) and that the paths to a successful upgrade are numerous but uncertain, it would need many hands

My plan:


Warning: patch-package detected a patch file version mismatch

  Don't worry! This is probably fine. The patch was still applied
  successfully. Here's the deets:

  Patch file created for

    @react-navigation/core@6.1.0

  applied to

    @react-navigation/core@6.4.4

  At path

    node_modules/@react-navigation/core

  This warning is just to give you a heads-up. There is a small chance of
  breakage even though the patch was applied successfully. Make sure the package
  still behaves like you expect (you wrote tests, right?) and then run

    patch-package @react-navigation/core

  to update the version in the patch file name and make this warning go away.

Warning: patch-package detected a patch file version mismatch

  Don't worry! This is probably fine. The patch was still applied
  successfully. Here's the deets:

  Patch file created for

    eslint-plugin-import@2.25.3

  applied to

    eslint-plugin-import@2.26.0

  At path

    node_modules/eslint-plugin-import

  This warning is just to give you a heads-up. There is a small chance of
  breakage even though the patch was applied successfully. Make sure the package
  still behaves like you expect (you wrote tests, right?) and then run

    patch-package eslint-plugin-import

  to update the version in the patch file name and make this warning go away.

qu’on revienne sur les maj de react-native prΓ©cΓ©dente pour les terminerqu’on revienne sur les maj de react-native prΓ©cΓ©dente pour les terminer
**ERROR** Failed to apply patch for package @react-navigation/native at path

    node_modules/@react-navigation/native

  This error was caused because @react-navigation/native has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.

  i.e. manually make the appropriate file changes, then run 

    patch-package @react-navigation/native

  Info:
    Patch file: patches/@react-navigation+native+6.0.6.patch
    Patch was made for version: 6.0.6
    Installed version: 6.1.0

**ERROR** Failed to apply patch for package algoliasearch at path

    node_modules/algoliasearch

  This error was caused because algoliasearch has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.
Réécrire les patch-packages sur les version les plus récentes qui fonctionnent
  i.e. manually make the appropriate file changes, then run 

    patch-package algoliasearch

  Info:
    Patch file: patches/algoliasearch+4.14.1.patch
    Patch was made for version: 4.14.1
    Installed version: 4.14.2

**ERROR** Failed to apply patch for package instantsearch.js at path

    node_modules/instantsearch.js

  This error was caused because instantsearch.js has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.

  i.e. manually make the appropriate file changes, then run 

    patch-package instantsearch.js

  Info:
    Patch file: patches/instantsearch.js+4.43.1.patch
    Patch was made for version: 4.43.1
    Installed version: 4.49.1

**ERROR** Failed to apply patch for package react-error-overlay at path

    node_modules/react-error-overlay

  This error was caused because react-error-overlay has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.

  i.e. manually make the appropriate file changes, then run 

    patch-package react-error-overlay

  Info:
    Patch file: patches/react-error-overlay+6.0.9.patch
    Patch was made for version: 6.0.9
    Installed version: 6.0.11

**ERROR** Failed to apply patch for package react-native-calendars at path

    node_modules/react-native-calendars

  This error was caused because react-native-calendars has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.

  i.e. manually make the appropriate file changes, then run 

    patch-package react-native-calendars

  Info:
    Patch file: patches/react-native-calendars+1.1284.0.patch
    Patch was made for version: 1.1284.0
    Installed version: 1.1292.0

**ERROR** Failed to apply patch for package react-native-launch-navigator at path

    node_modules/react-native-launch-navigator

  This error was caused because react-native-launch-navigator has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.

  i.e. manually make the appropriate file changes, then run 

    patch-package react-native-launch-navigator

  Info:
    Patch file: patches/react-native-launch-navigator+1.0.8.patch
    Patch was made for version: 1.0.8
    Installed version: 1.0.9

**ERROR** Failed to apply patch for package react-native-web at path

    node_modules/react-native-web

  This error was caused because react-native-web has changed since you
  made the patch file for it. This introduced conflicts with your patch,
  just like a merge conflict in Git when separate incompatible changes are
  made to the same piece of code.

  Maybe this means your patch file is no longer necessary, in which case
  hooray! Just delete it!

  Otherwise, you need to generate a new patch file.

  To generate a new one, just repeat the steps you made to generate the first
  one.

  i.e. manually make the appropriate file changes, then run 

    patch-package react-native-web

  Info:
    Patch file: patches/react-native-web+0.17.5.patch
    Patch was made for version: 0.17.5
    Installed version: 0.17.7

I'd like to get your comment on that plan as you probably have seen many cases like ours.

kopax-polyconseil commented 1 year ago
  • android/app/build.gradle: medium -> fixed warning <- it seems we don't need to do change if we don't enable new architecture

That's not correct. You need to apply all the changes inside the android/app/build.gradle regardless of you using the New Architecture or not. That's also the reason why your Android app is failing to build with error: cannot find symbol BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;

I have difficulties to understand how this make sens. If we edit the native part of our app, then having those files won't make any sens unless we dig the history and redo the change in the new architecture , while we apparently don't use it. Why do we need to keep those files even if they are not used by our application ?

cortinico commented 1 year ago

I think the problem is not only the type, it is a strategy to upgrade such a big application that depend on many dep and sub deps.

I feel that we're mixing specific upgrade problem (like the error: cannot find symbol BuildConfig.IS_NEW_ARCHITECTURE_ENABLE) with a more fundamental problem related to the upgrade story of React Native. On this issue tracker, let's keep the conversation focused on specific build/upgrade failure you're facing.

For the upgrade story as a broader problem, we provided an answer here: https://github.com/react-native-community/discussions-and-proposals/discussions/546#discussioncomment-4168622

I have difficulties to understand how this make sens. If we edit the native part of our app, then having those files won't make any sens unless we dig the history and redo the change in the new architecture , while we apparently don't use it. Why do we need to keep those files even if they are not used by our application ?

I'm unsure I follow you here. Have you checked the Upgrade helper? https://react-native-community.github.io/upgrade-helper/?from=0.68.5&to=0.70.6 You need to apply all the changes that you find listed in the helper.

That will make sure that all the necessary changes are applied. For instance your error: cannot find symbol BuildConfig.IS_NEW_ARCHITECTURE_ENABLE error was caused by the lack of a buildConfigField in your build.gradle. You need this field regardless of you enabling/disabling the New Architecture. If you disable the New Architecture this field is set to false and will exclude the new renderer (Fabric) and other logic. If you forget to set this field, you won't be able to build.

kopax-polyconseil commented 1 year ago

I'm unsure I follow you here. Have you checked the Upgrade helper?

I did, this is how I drafted the list of files I had doubt of, but since I did not perform the previous upgrade of React Native, all of them, I don't know from what version we started to differ.

How can I do the diff in this case to catch up the history ? Do I have to do it manually ? if so from what version ? Is there a CLI tools I can use ?

Thank you so much for all the links you have provided, I will try to gather some team member on that migration as this seems quit challenging.

Avishayy commented 1 year ago

I stumbled upon this thread because of something else entirely but I figured out I can share a few words that might help.

Recently I have done a very similar upgrade (0.68.2 -> 0.70.6) in a medium sized project, at first I also tried to make it happen in "one upgrade", but I very quickly regretted it and resorted to doing it incrementally.

Instead of trying to make a big upgrade, I did incremental upgrades to make sure I understand what I need to change and whether the incremental upgrade caused any issues. The incremental upgrades work by trying to make sure the diff is reasonably the smallest possible without being too many of them. I chose to do it by upgrading the to the latest minor (patch?) before upgrading to the next major (minor?).

In my case, instead of 0.68.2 -> 0.70.6, I did this: 0.68.2 -> 0.68.5 -> 0.69.0 -> 0.69.7 -> 0.70.0 -> 0.70.6

Usually non-major upgrades don't have a lot of changes, just minor fixes, so jumping to the latest minor seems OK, this helps minimize the changes when upgrading to a new major.

Each upgrade was done using the CLI tool and the upgrade helper, as my app is a few years old (from the time all native libraries were manually linked), there is usually either missing files / merge conflicts.

My way of resolving those "conflicts" of code bases is to always apply RN's new code and apply my code over it (if needed). I had the same thoughts as you about the new architecture, I don't plan on enabling it any time soon, and if I disregard the notion that I might enable it in the future, it's still useful to keep it in the code base. Why?

Another important thing to apply when doing the incremental upgrade is to compile and run the application after every upgrade, code changes, libraries break, for a codebase that is not small and depends on libraries it's very easy to have issues rise after an upgrade. For example after upgrading to 0.69.0, a feature in react-native was removed (after being deprecated in 0.68.0), this broke many libraries, so after upgrading to 0.69.0 I also upgraded most of my libraries. After (googling and) fixing all issues I had with the upgrade, I kept on to the next one.

As for catching up with history in your upgrades, I once had this issue too (with Flipper specifically), but since we don't use it (and can't, thanks to react-native-firebase), I figured it's not important to us to get it to working. As long your app is working, when upgrading just give priority to the new code and apply your changes over it, both in native files and build files (be it build.gradle or anything else), this way even there were changes from upgrades before 0.68.5 and you missed them, the conflicts will usually include the code you missed. If you're asking on how to catch up after doing the upgrade to 0.70.6 from 0.68.5, I suggest you just do the whole upgrade again.

I hope this helps, good luck!

github-actions[bot] commented 1 year ago

This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days.

gastonrampersad commented 1 year ago

Having spent the last 7 working weeks enabling a similar upgrade (0.63.4 to 0.71.12), I'd leave my experience for the next wary upgrader who finds this issue.

Similar to @Avishayy, my approach was incremental, going from

0.63.4 -> 0.63.5 -> 0.64 -> 0.65 -> 0.66 -> 0.67 -> 0.68 -> 0.69 -> 0.70 -> 0.71.12

Our react native application was one package within a mono repo. Moving from 0.63.4 to 0.63.5, I enabled rnxkit to help with understanding the out dated dependencies within the mono repo packages.

I used the following methodology on each upgrade step, ensuring a clean run each time:

Some of this may be overkill for some but it got me through the upgrade.

On each upgrade, the file upgrades presented by the upgrade helper range from easy (add a new file, remove an old configuration) to difficult (e.g. the change of iOS architecture required some understanding on the AppDelegate.h file when upgrading react-native-app-auth).

For anyone upgrading along a similar path, you may be wary to look out for:

invariant violation errors: This occurred when using different react-native versions across packages within the mono repo. use yarn why react-native to understand what versions are being used across your packages. They should all match if you're on the right track.

Prop Type issues: React native prop types got deprecated in RN 0.66 and make a return in 0.71. Along the way I had to manually check and patch packages that relied on those prop types.

node-sass issues: This stack overflow version incompatibility discussion had a nice solution on in-line aliasing the dart-sass version in your package.json. This may not work for everyone but it did in our case.

The entire upgrade wasn't without casualties. In the end, we had to completely disable react native firebase and will attempt upgrading that at a later date. flipper also caused more issues than good (with us seeing numerous x duplicate symbols for architecture arm64 errors) so we disabled flipper in the end.

Hopefully this helps someone, good luck!

AdarshJais commented 1 year ago

Do any of you use react-native upgrade command ? Or went through the changelog and manually did the changes?Bcz for me react-native upgrade is not at all workign

gastonrampersad commented 1 year ago

@AdarshJais In my case, I went through all of the changes suggested in the react-native upgrade helper tool and applied those changes where it made sense. For example, I didn't need to make changes to the App file because ours is completely different from the default.

chengjunzhang1219 commented 1 year ago

As this is our second attempt, we are seeking help. The upgrade guide differ in many points with our current application, this is the list:

  1. .flowconfig does not exist in our project while it is MODIFIED in upgrade helper: why? <- it seems we don't need it
  2. .node-version as been ADDED while we use .nvmrc to set our version: do we need both ? <- it is unclear if .nvmrc is enough
  3. android/app/src/main/java/com/rndiffapp/MainActivity.java does not look like ours have big differance from your 0.68.5 version of upgrade guide and must be like version 0.70.6: How do we upgrade ?
  4. android/app/src/main/java/com/rndiffapp/newarchitecture/MainApplicationReactNativeHost.java is MODIFIED but does not exist in our project: why? <- it seems we can ignore
  5. android/app/src/main/jni/Android.mk is DELETED but does not exist in our project: why? <- it seems we can just add it (or ignore?)
  6. android/app/src/main/jni/CMakeLists.txt is ADDED, but we don't even have a android/app/src/main/jni folder: what should we do? <- it seems we can just add it (or ignore?)
  7. android/app/src/main/jni/MainApplicationModuleProvider.cpp, android/app/src/main/jni/MainApplicationModuleProvider.h, android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp, android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h, android/app/src/main/jni/MainComponentsRegistry.cpp are also MODIFIED but from non existing android/app/src/main/jni folder: what should we do? <- it seems we can just ignoree
  8. android/settings.gradle add two lines for hermes in a if block we don't have but exist in version from and to: what should we do? <- it seems we can just add and it will be ignored
  9. ios/Podfile ours as many difference than version from and to, what should we do? <- it seems we can just take all change

I am really curious to know how we can keep the old fabric component and turbo modules in new version 0.72.4, which created from old version (0.68.5)

I followed the react-native-upgrade-helper https://react-native-community.github.io/upgrade-helper/?from=0.68.7&to=0.72.4.

It said about the removing some of JNI settings in Android native code.

After upgrade the version, the app itself works now, but getting the error when tried to render some fabric components .

Component name is not Fabric compatible yet.

I guess it happens by missing of registration of fabric components. In old version we can be able to register Fabric component and Turbo modules through the component registry. In new version i am not sure how i can register Fabric component and Turbo module.

Anyone can help to resolve this issue?

cortinico commented 1 year ago

Anyone can help to resolve this issue?

Have you seen this article @chengjunzhang1219 ? https://github.com/reactwg/react-native-new-architecture/discussions/135

Also I'm closing this issue as the original issue has been resolved.