Skip to content

Example app not functional, too out of date to upgradeΒ #24

@bbuchalter

Description

@bbuchalter

tl;dr

The example app is so out of date, I believe the best course of action is to either:

  1. Delete it and do not include a working example
  2. Create a new example app built on Expo development builds, taking advantage of their well-documented upgrade paths, to minimize maintenance.

A decision would need to be made by maintainers. πŸ™‡β€β™‚οΈ

The long version

While following the excellent instructions in CONTRIBUTING.md I encountered this error:

Verification checksum was incorrect, expected f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41, got 79e6d3f986444e5a80afbeccdaf2d1c1cf964baa8d766d20859d653a16c39848
Couldn't install Pods. Updating the Pods project and trying again...
Command `pod install` failed.
└─ Cause: Error installing boost
Verification checksum was incorrect, expected f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41, got 79e6d3f986444e5a80afbeccdaf2d1c1cf964baa8d766d20859d653a16c39848

This is a known issue that was fixed by facebook/react-native#39555 and released in v0.72.9.

After making that upgrade, I proceeded to encounter a series of other errors:

  • Needing another upgrade to switch sources for boost: [Local][RN][General] 0.72 - migrate boost away from JFrogΒ facebook/react-native#42175
  • CocoaPods could not find compatible versions for pod "RCT-Folly" which required re working example/ios/Podfile.lock and more upgrades to the example app versions.
  • An error occurred while processing the post-install hook of the Podfile.: which required removing __apply_Xcode_12_5_M1_post_install_workaround from example/ios/Podfile.
  • After clearing this hurdles, I needed to update the iOS target version from ~11 to ~15.
  • Further errors continued with implicit instantiation of undefined template 'std::char_traits<fmt::internal::char8_type>' which required further react-native version upgrades.

After overcoming all these challenges, the project was finally starting to build successfully when I realized that all the underlying example app code was going to need updates as well. You can see all the application code that requires changing here: https://react-native-community.github.io/upgrade-helper/?from=0.73.11&to=0.79.2

And all of this was just for the iOS portion of the example app!

At this point, I'm starting to think that the best way forward is to simply build a new example app from scratch. But I find myself asking: how can we avoid this kind of upgrade pain in the future.

My experience tells me that Expo is the way to minimize these challenges. They abstract away most of the native code management by using plugins, but in exchange you have to follow some additional build steps to get a development build. This still requires a fair bit of complexity and upkeep.

With all that said, I think the most practical solution is to remove the example app.

If this repo is being used in other actively maintained projects, that is by far the best way to ensure it is healthy.

If this isn't acceptable, then I suggest moving to Expo development builds to work within the well-supported and well-documented upgrade paths provided by Expo for each react-native upgrade cycle.

What path do you think is best @Polarisation ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions