Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: Upgrade to Expo SDK 44 #5441

Merged
merged 4 commits into from
Aug 31, 2022

Conversation

chrisbobbe
Copy link
Contributor

@chrisbobbe chrisbobbe commented Jul 14, 2022

Following the "bare workflow" instructions for upgrading:
https://blog.expo.dev/expo-sdk-44-4c4b8306584a#8ff0

Marking as a draft because I'd like to use tsflower for some of the dependencies I'm bumping here. 🙂 I've started a discussion. Done!

I've kicked the tires with this revision on iOS and Android, with and without "Debug JS Remotely" activated, and things seem fine.

@chrisbobbe chrisbobbe requested a review from gnprice July 14, 2022 22:06
@chrisbobbe
Copy link
Contributor Author

From the commit message for the upgrade:

When I ran `expo upgrade`, it went through a phase it described as
"Updating packages to compatible versions (where known)." This
changed a lot of version ranges, even of non-Expo things like
react-native-reanimated. I kept some of these and ignored others,
and I plan to elaborate on these choices in the GitHub PR thread. I
didn't find more info in the CLI's docs about how it chooses these
upgrades. I believe the code is
  https://github.com/expo/expo-cli/blob/expo-cli%405.4.12/packages/expo-cli/src/commands/info/upgradeAsync.ts#L541-L597
and that
  https://github.com/expo/expo/blob/sdk-44/packages/expo/bundledNativeModules.json
gets consulted as part of that.

So, here is that elaboration. (Formatted for a commit message because that's where I thought I'd put it, before I decided it's just too long.)

Several proposed upgrades seemed fine to take without much
inspection. Here are some explanations for more interesting ones:

  expo-application: Major-version bump, but the only breaking change
    announced is dropping iOS 11 support, and we've done that:
      https://github.com/expo/expo/blob/main/packages/expo-application/CHANGELOG.md

  expo-screen-orientation:
    - We had upper-bounded this because expo-modules-core@0.6.0 was
      needed to avoid an error we saw with 4.1.0. We ran into
      problems trying to bump expo-modules-core to 0.6.0, with the
      hypothesis that some RN upgrade would fix that issue; see
        https://github.com/zulip/zulip-mobile/pull/5203#issuecomment-1020722398 .
      When we got to RN 0.67 and still saw the error, we found that
      Expo actually has a workaround (it papers over a RN problem),
      and we just have to take the Expo code with that:
        https://github.com/expo/expo/commit/c91d5a3e4#diff-53a846ea04b571c7981cbbab9b69d839993ff6f2982ad4a1a3fd02be5b042652R1-R36 .
      It's available in expo-modules-autolinking 0.4.0, and we get
      it with `expo` 44. I've updated
        https://github.com/zulip/zulip-mobile/pull/5203#issuecomment-1020722398
      with this information.
    - As mentioned in the changelog
        ( https://github.com/expo/expo/blob/main/packages/expo-screen-orientation/CHANGELOG.md#410--2021-12-03 )
      , the setup instructions have been simplified, so we make
      corresponding changes in ios/ZulipMobile/AppDelegate.m and
      ios/ZulipMobile/Info.plist. (Some of the changes in
      AppDelegate.m are unrelated. They're from a diff that we're
      asked to apply, in Expo's upgrade guide.)

  expo-web-browser: Major-version bump, but the only breaking change
    announced is dropping iOS 11 support, and we've done that:
      https://github.com/expo/expo/blob/main/packages/expo-web-browser/CHANGELOG.md

  react-native-gesture-handler:
    - v2 comes with a few announced breaking changes, but none
      should apply to us because we don't use the package directly
      ourselves:
        https://github.com/software-mansion/react-native-gesture-handler/releases/tag/2.0.0 .
      (We added it to satisfy peer-dep requirements for React
      Navigation. We don't get any peer-dep complaints from React
      Navigation when we do this upgrade.)
    - The Expo upgrade guide is apparently wrong in saying
        ( https://blog.expo.dev/expo-sdk-44-4c4b8306584a#d532 )
      that a requirement to use `<GestureHandlerRootView>` is new in
      v2; the v1 doc also mentions the requirement. For why we don't
      use `<GestureHandlerRootView>`, see the code comment we added
      in our 9c6009964.

  jest-expo: A major version bump, but things still seem to work
    fine, and the changelog doesn't start until 46.0.0? :shrug:
      https://github.com/expo/expo/blob/main/packages/jest-expo/CHANGELOG.md

Here are other updates it proposed, and why we aren't taking them:

  @react-native-async-storage/async-storage
    from ^1.13.0 to ~1.15.0,
    so we'd get 1.15.7 instead of 1.17.6
    (a downgrade; good to avoid if possible)

  @react-native-community/netinfo
    from 6.0.0 to 7.1.3,
    so we'd get 7.1.3 instead of 6.0.0
    (see e6d1231f7 for why we've pinned to 6.0.0 for now)

  expo-apple-authentication
    from ^4.0.0 to ~4.1.0,
    so we'd get 4.1.0 instead of 4.2.1
    (a downgrade; good to avoid if possible)

  expo-sqlite
    from ^10.0.0 to ~10.1.0,
    so we'd get 10.1.1 instead of 10.2.0
    (a downgrade; good to avoid if possible)

  react, react-native, and @types/react-native
    downward, so we'd get react-native 0.64.3 instead of 0.67.4
    (we definitely don't want that)

  react-native-reanimated
    from "^2.2.0 <2.3.0" to ~2.3.1
    so we'd get 2.3.3 instead of 2.2.4
    (We'd upper-bounded this because of an error we observed in
      2.3.0, which was reportedly caused by an incompatibility with
      Expo 43. There was hope at the time that it was fixed with
      Expo 44 --
        https://github.com/software-mansion/react-native-reanimated/issues/2702#issuecomment-988743559
      -- and that seems to be true; I don't see an error like that
      if I take this upgrade. However, "Debug JS Remotely" breaks
      with an insta-crash on startup, at least on Android. So if we
      need this upgrade, we should either debug that, or see if we
      agree with a finding that we should…abandon "Debug JS
      Remotely":
        https://github.com/software-mansion/react-native-reanimated/issues/1990#issuecomment-850564351 )

  react-native-safe-area-context
    from ^3.1.7 to 3.3.2,
    so we'd get 3.3.2 instead of 3.4.1
    (a downgrade; good to avoid if possible)

  react-native-screens
    from ^2.10.1 to ~3.10.1,
    so we'd get 3.10.2 instead of 2.18.1
    (we're managing this upgrade as part of upgrading React
      Navigation 6; good to not conflict with that if possible)

  react-native-webview
    from ^11.6.4 to 11.15.0,
    so we'd get 11.15.0 instead of 11.22.2
    (a downgrade; good to avoid if possible)

@gnprice
Copy link
Member

gnprice commented Jul 15, 2022

I assume, all else being equal, it's better to put this in
devDependencies than install it globally, since we want commands to
have consistent results across environments. (The guide we're about
to follow, to upgrade to Expo 44, would have us install it
globally.)

Yeah, agreed.

It comes with a ton of new dependencies, though, and that
might be a reason to not have it in the project.

Hmm. It sure does make the yarn.lock a lot longer, which sounds like it's pulling in a lot of dependencies:

 yarn.lock    | Bin 560322 -> 768341 bytes

But it doesn't increase the total size of node_modules by nearly as much. Before:

$ git checkout main~~ && yarn
$ du -s -BMB node_modules/
1109MB	node_modules/

After:

$ git checkout main~ && yarn
$ du -s -BMB node_modules/
1220MB	node_modules/

So it's adding 111MB of new dependencies, which sounds big… except that we have 1109MB already, so it's only 10%. I think it makes sense to not try to optimize that when the cost would be version skew.

@gnprice
Copy link
Member

gnprice commented Jul 15, 2022

All that reasoning for upgrades to take or not take makes sense. Thanks for the details!

However, "Debug JS Remotely" breaks
      with an insta-crash on startup, at least on Android. So if we
      need this upgrade, we should either debug that, or see if we
      agree with a finding that we should…abandon "Debug JS
      Remotely":
        https://github.com/software-mansion/react-native-reanimated/issues/1990#issuecomment-850564351 )

Hmm, yikes. Ultimately I do expect we'll be on Hermes, and so I guess Hermes Inspector as a result. But until then, we definitely need a way to get a JS debug console. Holding react-native-reanimated back seems like a good plan.

@chrisbobbe
Copy link
Contributor Author

chrisbobbe commented Jul 22, 2022

Thanks for the review!

Marking as a draft because I'd like to use tsflower for some of the dependencies I'm bumping here. 🙂

Just sent #5447 for this.

@chrisbobbe
Copy link
Contributor Author

Revision pushed, and this one includes my current revision for #5449. It may be easier to settle that one first.

@chrisbobbe chrisbobbe marked this pull request as ready for review July 26, 2022 00:00
@chrisbobbe chrisbobbe force-pushed the pr-expo-44-no-reanimated-bump branch from 6bc87a4 to f40d8c2 Compare August 12, 2022 17:44
@chrisbobbe
Copy link
Contributor Author

Just rebased, so this is ready for review. 🙂

@chrisbobbe chrisbobbe force-pushed the pr-expo-44-no-reanimated-bump branch from f40d8c2 to 76ab9d9 Compare August 31, 2022 00:25
@chrisbobbe
Copy link
Contributor Author

Just rebased again, so this is ready for review. 🙂

I first noticed this while kicking the tires on the upcoming upgrade
of expo-screen-orientation. But then I tested on `main` and found
the issue is already present, before that upgrade.
We'll use this soon when we upgrade `expo` to 44.

I assume, all else being equal, it's better to put this in
devDependencies than install it globally, since we want commands to
have consistent results across environments. (The guide we're about
to follow, to upgrade to Expo 44, would have us install it
globally.) It comes with a ton of new dependencies, though, and that
might be a reason to not have it in the project.

And add .expo/ to our gitignore. It gets created when you run
`expo upgrade`, containing a README that says it shouldn't be
committed. And an Expo template app has it in the gitignore:
  https://github.com/expo/expo/blob/202e7517/templates/expo-template-bare-minimum/gitignore#L53

And run `yarn yarn-deduplicate && yarn`, as prompted by
`tools/test deps`.
Following the "bare workflow" instructions for upgrading:
  https://blog.expo.dev/expo-sdk-44-4c4b8306584a#8ff0

When I ran `expo upgrade`, it went through a phase it described as
"Updating packages to compatible versions (where known)." This
changed a lot of version ranges, even of non-Expo things like
react-native-reanimated. I kept some of these and ignored others,
and I plan to elaborate on these choices in the GitHub PR thread. I
didn't find more info in the CLI's docs about how it chooses these
upgrades. I believe the code is
  https://github.com/expo/expo-cli/blob/expo-cli%405.4.12/packages/expo-cli/src/commands/info/upgradeAsync.ts#L541-L597
and that
  https://github.com/expo/expo/blob/sdk-44/packages/expo/bundledNativeModules.json
gets consulted as part of that.

In the "Update your `App.Delegate.m` according to this diff" step, I
applied the substance of the change, with a few formatting
differences to minimize our diff, on top of some changes I made for
the expo-screen-orientation upgrade. That upgrade trimmed out some
setup requirements for the package:
  https://github.com/expo/expo/blob/main/packages/expo-screen-orientation/CHANGELOG.md#410--2021-12-03
@gnprice
Copy link
Member

gnprice commented Aug 31, 2022

All looks good -- merging. Thanks for taking care of this upgrade!

@gnprice gnprice force-pushed the pr-expo-44-no-reanimated-bump branch from 76ab9d9 to 3edc37a Compare August 31, 2022 19:13
@gnprice gnprice merged commit 3edc37a into zulip:main Aug 31, 2022
@chrisbobbe chrisbobbe deleted the pr-expo-44-no-reanimated-bump branch September 3, 2022 01:44
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this pull request Sep 26, 2022
Following the "Bare workflow" instructions for upgrading:
  https://blog.expo.dev/expo-sdk-45-f4e332954a68#5954

As with the last one, 44 in 3edc37a, the `expo upgrade` command
went through a phase it described as "Updating packages to
compatible versions (where known)," and that changed several of our
dependency ranges, even of non-Expo things. (For speculation on what
that phase is about, see 3edc37a.)

We rejected version-range changes to these libraries that would have
resulted in downgrades to the libraries' resolved versions:

- react-native-safe-area-context from 4.3.1 to 4.2.4
- react-native-screens from 3.13.1 to 3.11.1
- react-native-webview from 11.22.2 to 11.18.1

We rejected upgrades to @react-native-community/netinfo and
react-native-reanimated for the reasons we gave in the Expo 44
upgrade; see those at
  zulip#5441 (comment) .

And we rejected bumping react-native from 0.67.4 to 0.68.2, with
optimism that we can get this Expo upgrade done before that RN
upgrade, which is zulip#5344.

We took the rest.

In the step

> Update your `App.Delegate.mm` (you should have moved from .m to
> .mm in the previous step) according to this diff

, the indicated changes just seemed to be the same changes we
applied in the Expo 44 upgrade (3edc37a), just rebased atop a RN
v0.68 upgrade. (The ".m" to ".mm" change is an example of that.)
When we do the RN v0.68, we should study some special code that Expo
wants us to add as part of that upgrade, beyond what the RN template
app says. But that's a job for later, and I didn't see anything to
do right now in this item.

I tested basic functionality on my iPhone 13 Pro running iOS 15.6,
and on the office Android device, a Samsung Galaxy S9 running
Android 9. I didn't see any problems with building or running.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this pull request Sep 26, 2022
Following the "Bare workflow" instructions for upgrading:
  https://blog.expo.dev/expo-sdk-45-f4e332954a68#5954

As with the last one, 44 in 3edc37a, the `expo upgrade` command
went through a phase it described as "Updating packages to
compatible versions (where known)," and that changed several of our
dependency ranges, even of non-Expo things. (For speculation on what
that phase is about, see 3edc37a.)

We rejected version-range changes to these libraries that would have
resulted in downgrades to the libraries' resolved versions:

- react-native-safe-area-context from 4.3.1 to 4.2.4
- react-native-screens from 3.13.1 to 3.11.1
- react-native-webview from 11.22.2 to 11.18.1

We rejected upgrades to @react-native-community/netinfo and
react-native-reanimated for the reasons we gave in the Expo 44
upgrade; see those at
  zulip#5441 (comment) .

And we rejected bumping react-native from 0.67.4 to 0.68.2, with
optimism that we can get this Expo upgrade done before that RN
upgrade, which is zulip#5344.

We took the rest.

In the step

> Update your `App.Delegate.mm` (you should have moved from .m to
> .mm in the previous step) according to this diff

, the indicated changes just seemed to be the same changes we
applied in the Expo 44 upgrade (3edc37a), just rebased atop a RN
v0.68 upgrade. (The ".m" to ".mm" change is an example of that.)
When we do the RN v0.68, we should study some special code that Expo
wants us to add as part of that upgrade, beyond what the RN template
app says. But that's a job for later, and I didn't see anything to
do right now in this item.

I tested basic functionality on my iPhone 13 Pro running iOS 15.6,
and on the office Android device, a Samsung Galaxy S9 running
Android 9. I didn't see any problems with building or running.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this pull request Nov 12, 2022
…Expo

This belatedly follows a change in Expo's template app,
templates/expo-template-bare-minimum. The change was made in
expo/expo@2a0079132, and we missed it in the Expo 44 upgrade (zulip#5441)
because Expo's upgrade guide forgot about it. See discussion of this
and other changes that were missed:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1452850

This seems to fix a bug I've observed on the office Android device
(Samsung Galaxy S9 running Android 9), where if I exit the app via
the back button, then re-enter the app, the state gets reset such
that we register for a new event queue.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this pull request Nov 12, 2022
This belatedly follows a change in Expo's template app,
templates/expo-template-bare-minimum. The change was made in
expo/expo@d20594b55 and expo/expo@b59dbc4d8, and we missed it in the
Expo 44 upgrade (zulip#5441) because Expo's upgrade guide forgot about
it. See discussion of this and other changes that were missed:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1452850

From reading the Expo commits and their associated PRs, I don't feel
like I understand the purpose of this change. But Greg says it
doesn't seem unreasonable:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1458126
And nothing seemed broken when I tested the change on my iPhone 13
Pro running iOS 16.1. In particular, since we have a comment
mentioning social auth, I tested that I could still log in with
Google, and that worked.

Those Expo commits also touched a different method, meant to
implement an Apple feature called "Handoff":
  https://support.apple.com/en-us/HT209455
Here, we ignore the changes to that method; we haven't implemented
it, and while Handoff could sometimes be useful, it isn't a
priority. Also, Greg is skeptical about Expo's template-app changes
to that method.
gnprice pushed a commit to chrisbobbe/zulip-mobile that referenced this pull request Nov 19, 2022
…Expo

This belatedly follows a change in Expo's template app,
templates/expo-template-bare-minimum. The change was made in
expo/expo@2a0079132, and we missed it in the Expo 44 upgrade (zulip#5441)
because Expo's upgrade guide forgot about it. See discussion of this
and other changes that were missed:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1452850

This seems to fix a bug I've observed on the office Android device
(Samsung Galaxy S9 running Android 9), where if I exit the app via
the back button, then re-enter the app, the state gets reset such
that we register for a new event queue.
gnprice pushed a commit to chrisbobbe/zulip-mobile that referenced this pull request Nov 19, 2022
This belatedly follows a change in Expo's template app,
templates/expo-template-bare-minimum. The change was made in
expo/expo@d20594b55 and expo/expo@b59dbc4d8, and we missed it in the
Expo 44 upgrade (zulip#5441) because Expo's upgrade guide forgot about
it. See discussion of this and other changes that were missed:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1452850

From reading the Expo commits and their associated PRs, I don't feel
like I understand the purpose of this change. But Greg says it
doesn't seem unreasonable:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1458126
And nothing seemed broken when I tested the change on my iPhone 13
Pro running iOS 16.1. In particular, since we have a comment
mentioning social auth, I tested that I could still log in with
Google, and that worked.

Those Expo commits also touched a different method, meant to
implement an Apple feature called "Handoff":
  https://support.apple.com/en-us/HT209455
Here, we ignore the changes to that method; we haven't implemented
it, and while Handoff could sometimes be useful, it isn't a
priority. Also, Greg is skeptical about Expo's template-app changes
to that method.
BrandonNgoranNtam pushed a commit to BrandonNgoranNtam/zulip-mobile that referenced this pull request Nov 22, 2022
…Expo

This belatedly follows a change in Expo's template app,
templates/expo-template-bare-minimum. The change was made in
expo/expo@2a0079132, and we missed it in the Expo 44 upgrade (zulip#5441)
because Expo's upgrade guide forgot about it. See discussion of this
and other changes that were missed:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1452850

This seems to fix a bug I've observed on the office Android device
(Samsung Galaxy S9 running Android 9), where if I exit the app via
the back button, then re-enter the app, the state gets reset such
that we register for a new event queue.
BrandonNgoranNtam pushed a commit to BrandonNgoranNtam/zulip-mobile that referenced this pull request Nov 22, 2022
This belatedly follows a change in Expo's template app,
templates/expo-template-bare-minimum. The change was made in
expo/expo@d20594b55 and expo/expo@b59dbc4d8, and we missed it in the
Expo 44 upgrade (zulip#5441) because Expo's upgrade guide forgot about
it. See discussion of this and other changes that were missed:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1452850

From reading the Expo commits and their associated PRs, I don't feel
like I understand the purpose of this change. But Greg says it
doesn't seem unreasonable:
  https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Expo.2044.20small.20things/near/1458126
And nothing seemed broken when I tested the change on my iPhone 13
Pro running iOS 16.1. In particular, since we have a comment
mentioning social auth, I tested that I could still log in with
Google, and that worked.

Those Expo commits also touched a different method, meant to
implement an Apple feature called "Handoff":
  https://support.apple.com/en-us/HT209455
Here, we ignore the changes to that method; we haven't implemented
it, and while Handoff could sometimes be useful, it isn't a
priority. Also, Greg is skeptical about Expo's template-app changes
to that method.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this pull request Nov 22, 2022
Following the "Bare workflow" instructions for upgrading:
  https://blog.expo.dev/expo-sdk-45-f4e332954a68#5954

As with the last one, 44 in 3edc37a, the `expo upgrade` command
went through a phase it described as "Updating packages to
compatible versions (where known)," and that changed several of our
dependency ranges, even of non-Expo things. (For speculation on what
that phase is about, see 3edc37a.)

We rejected version-range changes to these libraries that would have
resulted in downgrades to the libraries' resolved versions:

- react-native-safe-area-context from 4.3.1 to 4.2.4
- react-native-screens from 3.13.1 to 3.11.1
- react-native-webview from 11.22.2 to 11.18.1

We rejected upgrades to @react-native-community/netinfo and
react-native-reanimated for the reasons we gave in the Expo 44
upgrade; see those at
  zulip#5441 (comment) .

And we rejected bumping react-native from 0.67.4 to 0.68.2, with
optimism that we can get this Expo upgrade done before that RN
upgrade, which is zulip#5344.

We took the rest.

For the step

> Update your `App.Delegate.mm` (you should have moved from .m to
> .mm in the previous step) according to this diff

, we found that we'd already taken some of those changes when Expo
backported them to the Expo 44 template app. Others, like the .m to
.mm rename, we'd like to postpone until we do the RN 68 upgrade. A
full audit of Expo's template-app commits from 44 to 45 found no
changes we'd be interested in applying, except some related to RN 68
that we'd like to do with that upgrade; I've mentioned those on our
RN 68 upgrade issue. See:
  zulip#5507 (comment)

I tested basic functionality on my iPhone 13 Pro running iOS 15.6,
and on the office Android device, a Samsung Galaxy S9 running
Android 9. I didn't see any problems with building or running.
gnprice pushed a commit to chrisbobbe/zulip-mobile that referenced this pull request Nov 23, 2022
Following the "Bare workflow" instructions for upgrading:
  https://blog.expo.dev/expo-sdk-45-f4e332954a68#5954

As with the last one, 44 in 3edc37a, the `expo upgrade` command
went through a phase it described as "Updating packages to
compatible versions (where known)," and that changed several of our
dependency ranges, even of non-Expo things. (For speculation on what
that phase is about, see 3edc37a.)

We rejected version-range changes to these libraries that would have
resulted in downgrades to the libraries' resolved versions:

- react-native-safe-area-context from 4.3.1 to 4.2.4
- react-native-screens from 3.13.1 to 3.11.1
- react-native-webview from 11.22.2 to 11.18.1

We rejected upgrades to @react-native-community/netinfo and
react-native-reanimated for the reasons we gave in the Expo 44
upgrade; see those at
  zulip#5441 (comment) .

And we rejected bumping react-native from 0.67.4 to 0.68.2, with
optimism that we can get this Expo upgrade done before that RN
upgrade, which is zulip#5344.

We took the rest.

For the step

> Update your `App.Delegate.mm` (you should have moved from .m to
> .mm in the previous step) according to this diff

, we found that we'd already taken some of those changes when Expo
backported them to the Expo 44 template app. Others, like the .m to
.mm rename, we'd like to postpone until we do the RN 68 upgrade. A
full audit of Expo's template-app commits from 44 to 45 found no
changes we'd be interested in applying, except some related to RN 68
that we'd like to do with that upgrade; I've mentioned those on our
RN 68 upgrade issue. See:
  zulip#5507 (comment)

I tested basic functionality on my iPhone 13 Pro running iOS 15.6,
and on the office Android device, a Samsung Galaxy S9 running
Android 9. I didn't see any problems with building or running.
@chrisbobbe chrisbobbe mentioned this pull request Dec 13, 2022
@gnprice gnprice mentioned this pull request Dec 13, 2022
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this pull request Apr 15, 2024
This unfortunately causes a peer-dep warning:

  warning " > @react-navigation/material-top-tabs@6.6.13" has
    incorrect peer dependency "@react-navigation/native@^6.0.0".

But no issues have yet appeared in manual testing, and that's
consistent with the note on the React Navigation upgrade guide that
says, "To make upgrading easier, it is possible to mix packages from
the `6.x.x` and `5.x.x` version ranges.":
  https://reactnavigation.org/docs/upgrading-from-5.x#note-on-mixing-react-navigation-5-and-react-navigation-6-packages

Changelog:
  https://github.com/react-navigation/react-navigation/blob/main/packages/material-top-tabs/CHANGELOG.md

Done by reading and following the relevant parts of the React Nav
upgrade guide, including general information at the top and also the
section specific to Material Top Tabs:
  https://reactnavigation.org/docs/upgrading-from-5.x/#material-top-tab-navigator

Done now because it lets us get rid of react-native-reanimated, as
foreshadowed in our React Nav 6 upgrade issue:
  zulip#4936 (comment)

That's helpful because the old version of react-native-reanimated
that we're on uses a certain iOS API that Apple identifies as
privacy-sensitive, triggering a "Privacy Manifest" requirement:
  software-mansion/react-native-reanimated#5819
For zulip#5847, we're working on reducing and handling such requirements.

That API usage is removed in v2.9.0-rc.0 of Reanimated (see
just-linked PR), but I didn't pursue upgrading it because that path
seems to require abandoning remote JS debugging, at least according
to a note from 2022. For details on that, search for
"react-native-reanimated" here:
  zulip#5441

Related: zulip#5847
Fixes-partly: zulip#4936
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants