Skip to content
This repository has been archived by the owner on Jun 17, 2022. It is now read-only.

Road to v0.64 Discussion #214

Closed
30 of 36 tasks
grabbou opened this issue Nov 23, 2020 · 346 comments
Closed
30 of 36 tasks

Road to v0.64 Discussion #214

grabbou opened this issue Nov 23, 2020 · 346 comments
Labels
backport request Cherry picking a change into an existing release pre-release rc Release candidate

Comments

@grabbou
Copy link
Member

grabbou commented Nov 23, 2020

Current latest release: v0.64.0-rc.4

Highlighted Changes

Please see the changelog PR for more details.

Work Required

  • Changelog (draft is here)
  • Blog post [@grabbou]
  • When clicking "Open Debugger" on iOS with Hermes and not having Flipper installed, nothing happens. Perhaps a warning / alert or an appropriate log in the CLI would be helpful to instruct those that don't have Flipper installed on the next steps.
  • Dependency on shelljs has been moved from the root package.json into repo-config/package.json (facebook/react-native@f3930a9), causing publish-npm.js script to fail. I have temporarily installed that package on the CircleCI, but would love additional background on the original commit and whether we can safely move it back to the root. fix: release branches miss workspace dependencies facebook/react-native#30472
  • Create Xcode project upgrade guide to link to from the Upgrade Helper
  • Cut the docs
Already resolved

Hopeful Dates

We can never commit to the dates involved in a release as many things are out of our control. However, we are thinking about these rough dates for this release.

  • Publish as Release Candidate: Week of January 18th
  • Publish as Stable: Beginning of March
@grabbou grabbou added stable Stable version backport request Cherry picking a change into an existing release labels Nov 23, 2020
@grabbou grabbou changed the title V0.64.0-rc.0 Discussion v0.64.0 Discussion Nov 23, 2020
@grabbou grabbou mentioned this issue Nov 23, 2020
17 tasks
@nonewcode

This comment has been minimized.

@grabbou grabbou added pre-release rc Release candidate and removed stable Stable version labels Nov 23, 2020
@kelset kelset changed the title v0.64.0 Discussion Road to v0.64 Discussion Nov 23, 2020
@a-eid

This comment has been minimized.

@mrousavy

This comment has been minimized.

@nonewcode

This comment has been minimized.

@SConaway

This comment has been minimized.

@miinos

This comment has been minimized.

@irekrog

This comment has been minimized.

@brunolemos

This comment has been minimized.

@mikehardy

This comment has been minimized.

@brunolemos

This comment has been minimized.

@a-eid

This comment has been minimized.

@SaeedZhiany

This comment has been minimized.

@kelset

This comment has been minimized.

@mrousavy
Copy link

mrousavy commented Nov 24, 2020

Awesome work on this! I'm really excited for Hermes running smoothly on iOS devices.

Resolved So far, I've noticed two critical issues, and a minor inconvinience:

[Critical] AppStore double-checking the min iOS version on 64-bit archives

The Hermes framework, which gets bundled into your project when you enable hermes on iOS, only supports 64 bit architectures. As per Apple, "Apps that only support 64-bit devices must specify a deployment target of 8.0 or later.". The Hermes framework does not specify the MinimumOSVersion in it's Info.plist, and therefore uploading an app to AppStore/Testflight fails with the following output:

Fastlane logs
[11:13:59]: Going to upload updated app to App Store Connect
[11:13:59]: This might take a few minutes. Please don't interrupt the script.
[11:14:46]: [Transporter Error Output]: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."
[11:14:46]: [Transporter Error Output]: ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."
[11:14:46]: [Transporter Error Output]: ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
[11:14:46]: Transporter transfer failed.
[11:14:46]: 
[11:14:46]: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."
ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."
ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> ERROR: ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> ERROR: ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> DBG-X: The error code is: 1102

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main>  INFO: Done performing authentication.

[11:14:46]: [iTMSTransporter] 

[11:14:46]: [iTMSTransporter] 

[11:14:46]: [iTMSTransporter] 

[11:14:46]: [iTMSTransporter] Package Summary:

[11:14:46]: [iTMSTransporter]  

[11:14:46]: [iTMSTransporter] 1 package(s) were not uploaded because they had problems:

[11:14:46]: [iTMSTransporter] 	/var/folders/3r/gxn72hgj7vl59jrshs0wxh600000gn/T/d20201124-44941-z1gelj/1535370501.itmsp - Error Messages:

[11:14:46]: [iTMSTransporter] 		ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."

[11:14:46]: [iTMSTransporter] 		ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."

[11:14:46]: [iTMSTransporter] 		ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."

[11:14:46]: [iTMSTransporter] [2020-11-24 11:14:46 CET] <main> DBG-X: Returning 1

[11:14:46]: iTunes Transporter output above ^
[11:14:46]: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is ''."
ERROR ITMS-90360: "Missing Info.plist value. A value for the key 'MinimumOSVersion' in bundle [My App].app/Frameworks/hermes.framework is required."
ERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
Return status of iTunes Transporter was 1: ERROR ITMS-90530: "Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later. MinimumOSVersion in '[My App].app/Frameworks/hermes.framework' is \nERROR ITMS-90208: "Invalid Bundle. The bundle [My App].app/Frameworks/hermes.framework does not support the minimum OS Version specified in the Info.plist."
The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.

Manually setting MinimumOSVersion in the hermes framework's Info.plist to 8.0 should only be considered a workaround, as Apple advises against using the MinimumOSVersion key (source)

I've created an issue for this at facebook/hermes#420

[Critical] Could not get BatchedBridge crash in Release

EDIT: That seems to be resolved since I made a fix for reanimated. See my PR here: software-mansion/react-native-reanimated#1469

So after I hotfixed the hermes framework Info.plist in my xcarchive / .app and re-tried to upload it to Testflight, I noticed that my app doesn't launch anymore in release builds. Looks like the run-loop in RCTCxxBridge.mm immediately crashes with the following error:

2020-11-24 14:37:49.823341+0100 MyApp[2993:859629] [native] Could not get BatchedBridge, make sure your bundle is packaged correctly
2020-11-24 14:37:49.823811+0100 MyApp[2993:859629] *** Terminating app due to uncaught exception 'RCTFatalException: Could not get BatchedBridge, make sure your bundle is packaged correctly', reason: 'Could not get BatchedBridge, make sure your bundle is packaged correctly'
*** First throw call stack:
(0x199aac878 0x1ae002c50 0x1033ff584 0x103416374 0x103414974 0x103429ec4 0x103429c64 0x199a2849c 0x199a276e4 0x199a21e18 0x199a2121c 0x103411f70 0x19ae3fa34 0x1e2ec2b40 0x1e2ecb768)
libc++abi.dylib: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'RCTFatalException: Could not get BatchedBridge, make sure your bundle is packaged correctly', reason: 'Could not get BatchedBridge, make sure your bundle is packaged correctly'
terminating with uncaught exception of type NSException

btw; global.__jsiExecutorDescription is set to '<JSCRuntime@0x600000770460>' on iOS debug, shouldn't this also say Hermes?

Debug: Console

In debug builds, everything runs fine and stable on Hermes. I noticed that any console.log statements aren't being printed to the metro bundler console anymore 🤔 Is this disabled per design?

@tido64

This comment has been minimized.

@kelset

This comment has been minimized.

@sunnylqm

This comment has been minimized.

@kelset

This comment has been minimized.

@dulmandakh

This comment has been minimized.

@gilbertl
Copy link

gilbertl commented Mar 9, 2021

@gilbertl read my message carefully. You reference paths I did not mention, and do not reference the path I mention.

The thread you linked referenced multiple paths:

1/ rm -fr ~/.cocoapods/repos/trunk
2/ ~/Library/Cache/CocoaPods (delete possible via pod cache clean --all)

I've ran rm -fr ~/.cocoapods, which is a superset of 1/.

I've also ran pod cache clean --all, which should've removed 2/.

==========

On a different note, two of my teammates had no issues building 0.64-rc4, so we tried to push ahead without me. However, we started running into Archive issues.

    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'CodePush' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 4.3, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'Base64' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'RNRudderSdk' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'react-native-splash-screen' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'react-native-in-app-review' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'react-native-image-picker' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'react-native-version-check' from project 'Pods')
    no rule to process file '/Users/distiller/Shuffle/packages/reactnative/ios/Pods/Flipper-RSocket/rsocket/benchmarks/CMakeLists.txt' of type 'text' for architecture 'arm64' (in target 'Flipper-RSocket' from project 'Pods')
    no rule to process file '/Users/distiller/Shuffle/packages/reactnative/ios/Pods/Flipper-RSocket/rsocket/benchmarks/README.md' of type 'net.daringfireball.markdown' for architecture 'arm64' (in target 'Flipper-RSocket' from project 'Pods')
    no rule to process file '/Users/distiller/Shuffle/packages/reactnative/ios/Pods/Flipper-RSocket/rsocket/README.md' of type 'net.daringfireball.markdown' for architecture 'arm64' (in target 'Flipper-RSocket' from project 'Pods')
    no rule to process file '/Users/distiller/Shuffle/packages/reactnative/ios/Pods/Flipper-RSocket/rsocket/benchmarks/CMakeLists.txt' of type 'text' for architecture 'armv7' (in target 'Flipper-RSocket' from project 'Pods')
    no rule to process file '/Users/distiller/Shuffle/packages/reactnative/ios/Pods/Flipper-RSocket/rsocket/benchmarks/README.md' of type 'net.daringfireball.markdown' for architecture 'armv7' (in target 'Flipper-RSocket' from project 'Pods')
    no rule to process file '/Users/distiller/Shuffle/packages/reactnative/ios/Pods/Flipper-RSocket/rsocket/README.md' of type 'net.daringfireball.markdown' for architecture 'armv7' (in target 'Flipper-RSocket' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 6.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'libwebp' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'RCTSystemSetting' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 6.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'JWT' from project 'Pods')
    The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 7.0, but the range of supported deployment target versions is 9.0 to 14.2.99. (in target 'BVLinearGradient' from project 'Pods')
** ARCHIVE FAILED **


The following build commands failed:
	PhaseScriptExecution [CP-User]\ Generate\ Specs /Users/distiller/Library/Developer/Xcode/DerivedData/Shuffle-dhciecizgyaefbaccdbdcbedrsne/Build/Intermediates.noindex/ArchiveIntermediates/ShuffleStaging/IntermediateBuildFilesPath/Pods.build/StagingRelease-iphoneos/FBReactNativeSpec.build/Script-B63C8E554E36925C451DF6EEAC624822.sh
(1 failure)
[16:42:27]: Exit status: 65
[16:42:27]: 
[16:42:27]: Maybe the error shown is caused by using the wrong version of Xcode
[16:42:27]: Found multiple versions of Xcode in '/Applications/'
[16:42:27]: Make sure you selected the right version for your project
[16:42:27]: This build process was executed using '/Applications/Xcode.app'
[16:42:27]: If you want to update your Xcode path, either
[16:42:27]: 
[16:42:27]: - Specify the Xcode version in your Fastfile
[16:42:27]: ▸ xcversion(version: "8.1") # Selects Xcode 8.1.0
[16:42:27]: 
[16:42:27]: - Specify an absolute path to your Xcode installation in your Fastfile
[16:42:27]: ▸ xcode_select "/Applications/Xcode8.app"
[16:42:27]: 
[16:42:27]: - Manually update the path using
[16:42:27]: ▸ sudo xcode-select -s /Applications/Xcode.app
[16:42:27]: 

@mikehardy
Copy link

I've also ran pod cache clean --all, which should've removed 2/.

"should've" -> did you verify?

@gilbertl
Copy link

gilbertl commented Mar 9, 2021

I've also ran pod cache clean --all, which should've removed 2/.

"should've" -> did you verify?

No, I didn't verify at the time.

However, I ran and checked just now and pod cache clean --all does remove the "~/Library/Cache/Cocoapods/pods" directory.

@pvinis
Copy link
Member

pvinis commented Mar 9, 2021

i see _gitattributes from the template is removed on v64 since rc0 😬. it had *.pbxproj -text in it, which is useful for diffing xcodeproj files. We should not remove it. I can't find the commit that removed it, but I can make a new PR to add it back.

@TheSavior
Copy link
Contributor

TheSavior commented Mar 10, 2021

@pvinis, I found it for you. It was removed in facebook/react-native#29792 (I used some FB internal search tools to find it)

@pvinis
Copy link
Member

pvinis commented Mar 10, 2021

Thanks for finding it!

Here we go: facebook/react-native#31128

I think this should be merged for the 0.64 release, so we don't end up with a release with weird line endings 😬.

@grabbou
Copy link
Member Author

grabbou commented Mar 10, 2021

I took another pass at recent comments here.

To sum up, I think we have two additional cherry-picks before stable:

Changelog is in progress - https://github.com/react-native-community/releases/pull/220/files
Release article is in progress

I will keep you updated as we complete the above.

@swrobel
Copy link

swrobel commented Mar 10, 2021

@grabbou one more cherry-pick: facebook/react-native#30978

@sunnylqm
Copy link
Contributor

And maybe this one facebook/react-native#31134

@grabbou
Copy link
Member Author

grabbou commented Mar 11, 2021

Everything cherry-picked. No more cherry-picks - everything else will have to wait for a patch release. We're wrapping it up now.

@pvinis
Copy link
Member

pvinis commented Mar 11, 2021

Are we leaving the gitattr out? 🤔

@swrobel
Copy link

swrobel commented Mar 11, 2021

Are we leaving the gitattr out? 🤔

Apparently not: facebook/react-native@728d55a

@grabbou
Copy link
Member Author

grabbou commented Mar 12, 2021

Closing as new release is under way. Let's continue in a follow up issue dedicated to 0.64.0 and upcoming 0.64.1.

@grabbou grabbou closed this as completed Mar 12, 2021
@grabbou
Copy link
Member Author

grabbou commented Mar 12, 2021

Closing as new release is under way. Let's continue in a follow up issue dedicated to 0.64.0 and upcoming 0.64.1.

@Bardiamist
Copy link
Contributor

Bardiamist commented Mar 15, 2021

Any instruction for project.pbxproj update?
Is need only to remove tvOS targets or something else?

Update 1:
I checked all props visually in Xcode and not found any critical. Looks only CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER was enabled.

Screenshot 1 Screenshot 2021-03-15 at 15 29 35

Update 2:
Also "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; was added.

Screenshot 2 Screenshot 2021-03-15 at 15 27 09

@N1colasVega
Copy link

N1colasVega commented Mar 15, 2021

after "npx react-native init AwesomeProject" can't lunch app on ios.

through script:
PhaseScriptExecution [CP-User]\ Generate\ Specs /Users/user/Library/Developer/Xcode/DerivedData/AwesomeProject-btdlvrsshpcfmndosfollajacgcx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-46EB2E00011F50.sh
(1 failure)

through xcode:
Showing Recent Messages
Library not found for -lFBReactNativeSpec

this is a clean project

mac m1

@kristijantomic
Copy link

@N1colasVega you could try this: react-native-community/upgrade-support#138

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
backport request Cherry picking a change into an existing release pre-release rc Release candidate
Projects
None yet
Development

No branches or pull requests