react-native-community / releases

React Native releases
https://github.com/facebook/react-native/
1.5k stars 407 forks source link

0.59.x Discussion #79

Closed grabbou closed 5 years ago

grabbou commented 5 years ago

Conversation on this thread are limited to 0.59 releases, major issues and backport (cherry-pick) requests from commits that are already on master.

An example of a good such request is a bug fix for a serious issue that has been merged into master but did not make the 0.59 RC cut.

In other words, if you cannot point to a particular commit on master, then your request likely belongs as a new issue in http://github.com/facebook/react-native/issues.

kelset commented 5 years ago

This version will also likely:

(TBC)

grabbou commented 5 years ago

CLI commit is shipped: https://github.com/facebook/react-native/commit/1af390be19000b2756fc646e72f152dd383a0bb1. Waiting for tests to be fixed and we are cutting it.

yurykorzun commented 5 years ago

Will it include the latest Yoga update? https://github.com/facebook/react-native/tree/master/ReactCommon/yoga/yoga

I have a reason to believe the old one causes some issues in my hybrid app, would be nice get an update.

kelset commented 5 years ago

@yurykorzun when the branch will be cut it will be a 'replica' of everything on master up to that point, so my guess is yes ;)

rbalch commented 5 years ago

we're close to cutting the release on the apis

grabbou commented 5 years ago

Yes, @kelset is right. I am finalising 0.58 right now and will work on making 0.59.0-rc.0 tomorrow. I will keep you updated.

Eyesonly88 commented 5 years ago

Any chances of landing Hooks in this release?

kelset commented 5 years ago

@Eyesonly88 the basic answer is that it depends, we need to wait on a commit that syncs React in the codebase. If you look at the commit history on master you'll see some commits from the FB team called "React sync", so keep an eye out for those.

We don't have an estimate yet, so don't hold your breath - we'll do what we can 💪

fbartho commented 5 years ago

@kelset so you're saying we need to beg @yungsters to be our friend? https://github.com/facebook/react-native/commit/6448f4e2f1ff87600c559208f0f31c8e9fcedd9a

Pretty please! 🥂

hramos commented 5 years ago

Several things need to happen before we can cut a release with support for React Hooks:

  1. We need a stable React release that supports Hooks. That release does not exist as of this writing (latest React is 16.7.0), but the React team recently hinted that a release that supports hooks might land within the next week or two. In fact, support for Hooks landed in React master this week.
  2. Once React supports Hooks on a stable release, the React Native team can run a sync to support the new release. That's what @yungsters and I have done in the past, as you can see in https://github.com/facebook/react-native/commit/6448f4e2f1ff87600c559208f0f31c8e9fcedd9a. I covered this process in https://github.com/facebook/react-native/issues/21967, but there's some additional work that happens on our side (mainly, testing all the internal surfaces that use React Native at Facebook to make sure nothing breaks). In an ideal world, this step can happen right away after Step 1, but unforeseen issues can delay this by one or two weeks.
  3. Then, and only then, can we cut a new React Native release that includes this commit.

If you folks want to hold off the 0.59 RC cut for one or two weeks until Hooks is released and synced to RN, or if you want to cherry-pick the sync commit into the 0.59 RC halfway through the soak period, I'll leave that open to discussion. I would highly discourage taking any shortcuts in the RC soak period just for the sake of getting Hooks into 0.59, but I'll let you all make that decision.

One alternative that comes to mind is the possibility of cutting a parallel 0.60 RC as soon as React w/ Hooks lands in master. This would be mostly to make it so that folks don't need to wait an extra month for 0.60 to be released (i.e. instead of waiting for 0.59 to go through its 30 day soak before cutting 0.60, we could have two RCs available concurrently). Again, I'd leave it to you all to decide if it's worth to fast-track 0.60 with Hooks at the risk of diluting people's attention between two RCs and letting major issues land on a stable release.

yurykorzun commented 5 years ago

I don't mind hooks to be added later and 0.59 RC being released as soon as possible

chris-hinds commented 5 years ago

the possibility of cutting a parallel 0.60 RC as soon as React w/ Hooks lands in master

This would be fantastic. Would help with development of many projects that want to start using hooks too.

grabbou commented 5 years ago

I like what @hramos said before.

Based on the amount of reactions to each of the comments, my suggestion is to do as follows:

I don't want to make this process depend on the React team to avoid adding an unnecessary stress to their daily workflow. I think React Hooks are awesome and can't wait for it to land into React Native, but there's tons of other great stuff shipping at the moment too, that would be unwise to not share with you as soon as possible!

ithustle commented 5 years ago

Any chances to add a native audio api?

grabbou commented 5 years ago

Waiting for the few last tests to be fixed and we are making this release. Please check https://github.com/facebook/react-native/issues/23108 if you want to track progress when it happens or help us getting it fixed!

matthargett commented 5 years ago

Even if 0.59 doesn't get Hooks upon initial release, it won't be "small" in terms of value -- the JSC upgrade, resulting cut polyfills, CLI, and other cleanup work is pretty huge.

Just to state my preference here, though: my preference is to get master CI stable before cutting 0.59-rc, and for 0.59 to include Hooks. I'd rather have a longer-supported 0.59 than an immediate 0.60 follow-up. I agree that it depends on what the React sync looks like in terms of complexity. If it would be possible for @hramos @yungsters to do it against the React master githash in a PR (rather than direct commit from phabricator), that might help get an idea earlier.

kanalasumant commented 5 years ago

The later the better, worth waiting for

gtebbutt commented 5 years ago

@kanalasumant Not for those of us waiting for other fixes that didn't make it into 0.58!

matthargett commented 5 years ago

@gtebbut you can request cherry picks of fixes on the 0.58 issue in this repo. 0.57 had 8 patch releases, which allowed users with production apps to keep on a stable base while getting critical fixes (and even some quality of life improvements like a React upgrade). If there’s specific commits you’re interested in getting merged to 0.58, comment there.

hramos commented 5 years ago

@matthargett how would the PR help? Is this to gauge how complex the sync commit would be, in order to make the decision whether it's preferred to make the cut before the commit actually lands on master?

Happy to adjust as needed, we do have tooling to seamlessly export our internal diffs to a GitHub PR so this is doable, I can coordinate with Tim.

matthargett commented 5 years ago

Yes, to gauge how complex the sync commit would be. If it has a bunch of ripple effects, then we know for sure not to hold up 0.59. I’d only do this if the folks who really want to get 0.59 cut immediately without a passing CI can’t wait.

objectiveSee commented 5 years ago

We are waiting for a fix in master regarding a crash in RCTSRWebSocket, so our vote is to get 0.59 and use 0.60 for Hooks like @grabbou suggested.

https://github.com/facebook/react-native/pull/22439#issuecomment-450773760

sijad commented 5 years ago

I also vote for a longer-supported 0.59 with hooks, waiting for more two weeks worth it.

grabbou commented 5 years ago

Looks like React sync is around week away, so the general attitude towards the core team was to wait for the sync before releasing.

@objectiveSee, would cherry-picking it into 0.58 do it for you? Looks like the commit itself should be easy to apply to that branch.

akshetpandey commented 5 years ago

The linked issue seems like a blocker for 0.59 release with the new JSC.

https://github.com/facebook/react-native/issues/23259

eladcandroid commented 5 years ago

React 16.8 is out! https://reactjs.org/blog/2019/02/06/react-v16.8.0.html

kelset commented 5 years ago

👋 everyone. Yes, the new version of React is out now - the FB team is working on doing the React sync commit so that we can then finally cut 0.59 rc once said commit land (we reached a decision of having Hooks in 59).

As we mentioned times and times again, it will take some time.

paulreimer commented 5 years ago

Is this still the best approach for us to try RN+Hooks on a custom RN build for now? https://github.com/facebook/react-native/issues/21967#issuecomment-434113687

grabbou commented 5 years ago

Nothing changed here. This issue is the best place to track using hooks with React Native right now. The React sync is already in progress - the 0.59 is going to be out really soon.

On Wed, 6 Feb 2019 at 19:08 Paul Reimer notifications@github.com wrote:

Is this still the best approach for us to try RN+Hooks on a custom RN build for now? facebook/react-native#21967 (comment) https://github.com/facebook/react-native/issues/21967#issuecomment-434113687

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/react-native-community/react-native-releases/issues/79#issuecomment-461125822, or mute the thread https://github.com/notifications/unsubscribe-auth/ACWcxgWsjS9nyzIU74uTccliDBKBs9Iwks5vKxoTgaJpZM4aGpI1 .

elMuso commented 5 years ago

Finally , been waiting so long , with hooks and reactn we can manage global state finally wihtout using redux :"U

kolohelios commented 5 years ago

@Momazo7u7 I can't say I've felt there has been any sort of Redux monopoly for managing state; I've used both Unstated, and more recently, XState with custom context providers to manage application state. And there are many others, like Mobx and Mobx-Statetree, to name a couple more. To your point, however, it will make it easier and less verbose to accomplish the same using hooks. Reducing the need for HoCs is definitely worthy of celebration!

salah-ghanim commented 5 years ago

will facebook/react-native#23278 be part of the next release? it's can reduce a lot of unnecessary refactors we need to port our native functionality to react.

grabbou commented 5 years ago

@salah-ghanim - everything that is merged to master at the time of the branch cut is going to be part of next release. We haven't cut the 0.59-stable branch yet, so the answer is - yes.

grabbou commented 5 years ago

As you know, the React sync commit has landed last week on Friday. We have decided to wait for a couple of days to let it settle and detect major regressions before it goes to the majority of developers. The tests are done internally at Facebook (that runs React Native master and constantly deploys to production).

I'll let you know when the 0.59.0-rc.0 is about to be released. Current estimate is around middle of the week when all fixes are merged.

dulmandakh commented 5 years ago

@salah-ghanim AppCompatActivity will be a part of 0.59 release. See https://github.com/facebook/react-native/commit/3b9604feda8f9e8fe3dd884912ec7d9be67d7f1d.

dulmandakh commented 5 years ago

For brown-field apps these might be a breaking change if they don't extend FragmentActivity, because RN dropped support for plain Activity.

These changes won't affect green-field apps, because ReactActivity already extends AppCompatActivity, subclass of FragmentActivity.

dulmandakh commented 5 years ago

Cherry picks:

dulmandakh commented 5 years ago

0.59 bumped minimum required version of Java to 8 - https://github.com/facebook/react-native/commit/38eb2a70afa87c49c1e62754f5ae3cd26e7f59c3. Not a cherry pick, but notes to release note writers 👍

dulmandakh commented 5 years ago

cherry picks:

kelset commented 5 years ago

For cherry pick: https://github.com/facebook/react-native/commit/00392ac46b6319dcff2b6df2e5f7bb4ee094612f (just landed)

hramos commented 5 years ago

👀 v0.59.0-rc.0 is now on npm

Salakar commented 5 years ago

Found a couple of issues after trying out 0.59 for a bit:

Edit: now with PRs 👀



(1) CLI

PR with fix: https://github.com/react-native-community/react-native-cli/pull/167

@grabbou the default metro config (formerly require('react-native/local-cli/util/Config');) is no longer exposed - it's new home at https://github.com/react-native-community/react-native-cli/blob/master/packages/cli/src/util/loadMetroConfig.js doesn't allow you to access it anymore, some people use this alongside metro's mergeConfig functionality,

Some examples that I know of that use the default config:



(2) CLI

PR with fix: https://github.com/react-native-community/react-native-cli/pull/165

https://github.com/react-native-community/react-native-cli/blob/master/packages/cli/src/util/loadMetroConfig.js#L51 this line needs wrapping in a require.resolve() as it was before it was moved out of react-native. As far as I can tell metro expects an extension which is what require.resolve adds. Without this change there's various issues due to globals not being initialized:

image

image

Federkun commented 5 years ago

Got an error on android after upgrading: ERROR: Could not get unknown property 'mergeResourcesProvider' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.

react-native run-android
info Starting JS server...
info Building and installing the app on the device (cd android && ./gradlew app:installDebug)...

> Configure project :app 
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation'.
It will be removed at the end of 2018

FAILURE: Build failed with an exception.

* Where:
Script '/$MY_PROJECT/node_modules/react-native/react.gradle' line: 95

* What went wrong:
A problem occurred configuring project ':app'.
> Could not get unknown property 'mergeResourcesProvider' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

Any suggestions?

EDIT: Solved by following https://github.com/facebook/react-native/pull/23103#issue-246733045

mikehardy commented 5 years ago

Got an error on android after upgrading: ERROR: Could not get unknown property 'mergeResourcesProvider' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.

EDIT: Solved by following facebook/react-native#23103 (comment)

Succinctly for those following: update gradle to 4.10.1 or higher (4.10.3 is current)

For Android devs with experience Gradle 5 used to be incompatible with Gradle 3.3 (the gradle docs said wait till Android Studio 3.4) but now the gradle docs say you can go all the way to Gradle 5 if you want though I haven't tested that with react-native - only 4.10.3.

Federkun commented 5 years ago

In my own case I had to do the following

android {
-    compileSdkVersion 26
-    buildToolsVersion "26.0.1"
+   compileSdkVersion 28
- distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
+ distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
    dependencies {
-        classpath 'com.android.tools.build:gradle:3.1.0'
+       classpath 'com.android.tools.build:gradle:3.3.0'
Kennytian commented 5 years ago

react native 0.59.0-rc.0 can not run 'yarn start'

yarn start
yarn run v1.13.0
$ node node_modules/react-native/local-cli/cli.js start
internal/modules/cjs/loader.js:583
    throw err;
    ^
blainekasten commented 5 years ago

@Kennytian they moved the cli to it's own package: https://github.com/react-native-community/react-native-cli

install that package, and change your start script to look at node_modules/react-native-cli/index.js start

blainekasten commented 5 years ago

Getting a build error when building in xcode

Undefined symbols for architecture x86_64:
  "_JSClassCreate", referenced from:
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::$_0::operator()() const in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::$_1::operator()() const in libReact.a(JSCRuntime.o)
  "_JSContextGetGlobalObject", referenced from:
      facebook::jsc::JSCRuntime::global() in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSEvaluateScript", referenced from:
      facebook::jsc::JSCRuntime::evaluateJavaScript(std::__1::unique_ptr<facebook::jsi::Buffer const, std::__1::default_delete<facebook::jsi::Buffer const> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libReact.a(JSCRuntime.o)
  "_JSGlobalContextCreateInGroup", referenced from:
      facebook::jsc::JSCRuntime::JSCRuntime() in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::JSCRuntime() in libReact.a(JSCRuntime.o)
  "_JSGlobalContextRelease", referenced from:
      facebook::jsc::JSCRuntime::JSCRuntime() in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::~JSCRuntime() in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::JSCRuntime() in libReact.a(JSCRuntime.o)
  "_JSGlobalContextRetain", referenced from:
      facebook::jsc::JSCRuntime::JSCRuntime(OpaqueJSContext*) in libReact.a(JSCRuntime.o)
  "_JSObjectCallAsConstructor", referenced from:
      facebook::jsc::JSCRuntime::callAsConstructor(facebook::jsi::Function const&, facebook::jsi::Value const*, unsigned long) in libReact.a(JSCRuntime.o)
  "_JSObjectCallAsFunction", referenced from:
      facebook::jsc::JSCRuntime::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) in libReact.a(JSCRuntime.o)
  "_JSObjectCopyPropertyNames", referenced from:
      facebook::jsc::JSCRuntime::getPropertyNames(facebook::jsi::Object const&) in libReact.a(JSCRuntime.o)
  "_JSObjectGetPrivate", referenced from:
      facebook::jsc::JSCRuntime::getHostObject(facebook::jsi::Object const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::getHostFunction(facebook::jsi::Function const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::finalize(OpaqueJSValue*) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::getProperty(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::setProperty(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const*, OpaqueJSValue const**) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::getPropertyNames(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSPropertyNameAccumulator*) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
      ...
  "_JSObjectGetProperty", referenced from:
      facebook::jsc::JSCRuntime::getProperty(facebook::jsi::Object const&, facebook::jsi::String const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::getProperty(facebook::jsi::Object const&, facebook::jsi::PropNameID const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSObjectGetPropertyAtIndex", referenced from:
      facebook::jsc::JSCRuntime::getValueAtIndex(facebook::jsi::Array const&, unsigned long) in libReact.a(JSCRuntime.o)
  "_JSObjectGetPrototype", referenced from:
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSObjectHasProperty", referenced from:
      facebook::jsc::JSCRuntime::hasProperty(facebook::jsi::Object const&, facebook::jsi::String const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::hasProperty(facebook::jsi::Object const&, facebook::jsi::PropNameID const&) in libReact.a(JSCRuntime.o)
  "_JSObjectIsFunction", referenced from:
      facebook::jsc::JSCRuntime::isFunction(facebook::jsi::Object const&) const in libReact.a(JSCRuntime.o)
  "_JSObjectMake", referenced from:
      facebook::jsc::JSCRuntime::makeObjectValue(OpaqueJSValue*) const in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>) in libReact.a(JSCRuntime.o)
  "_JSObjectMakeArray", referenced from:
      facebook::jsc::JSCRuntime::createArray(unsigned long) in libReact.a(JSCRuntime.o)
  "_JSObjectSetPrivate", referenced from:
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::finalize(OpaqueJSValue*) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::finalize(OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSObjectSetProperty", referenced from:
      facebook::jsc::JSCRuntime::setPropertyValue(facebook::jsi::Object&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::setPropertyValue(facebook::jsi::Object&, facebook::jsi::String const&, facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createArray(unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSObjectSetPropertyAtIndex", referenced from:
      facebook::jsc::JSCRuntime::setValueAtIndexImpl(facebook::jsi::Array&, unsigned long, facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
  "_JSObjectSetPrototype", referenced from:
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSPropertyNameAccumulatorAddName", referenced from:
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::getPropertyNames(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSPropertyNameAccumulator*) in libReact.a(JSCRuntime.o)
  "_JSPropertyNameArrayGetCount", referenced from:
      facebook::jsc::JSCRuntime::getPropertyNames(facebook::jsi::Object const&) in libReact.a(JSCRuntime.o)
  "_JSPropertyNameArrayGetNameAtIndex", referenced from:
      facebook::jsc::JSCRuntime::getPropertyNames(facebook::jsi::Object const&) in libReact.a(JSCRuntime.o)
  "_JSPropertyNameArrayRelease", referenced from:
      facebook::jsc::JSCRuntime::getPropertyNames(facebook::jsi::Object const&) in libReact.a(JSCRuntime.o)
  "_JSStringCreateWithUTF8CString", referenced from:
      facebook::jsc::JSCRuntime::evaluateJavaScript(std::__1::unique_ptr<facebook::jsi::Buffer const, std::__1::default_delete<facebook::jsi::Buffer const> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createPropNameIDFromAscii(char const*, unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createPropNameIDFromUtf8(unsigned char const*, unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createStringFromUtf8(unsigned char const*, unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::(anonymous namespace)::getLengthString() in libReact.a(JSCRuntime.o)
      facebook::jsc::(anonymous namespace)::getEmptyString() in libReact.a(JSCRuntime.o)
      facebook::jsc::(anonymous namespace)::getNameString() in libReact.a(JSCRuntime.o)
      ...
  "_JSStringGetMaximumUTF8CStringSize", referenced from:
      facebook::jsc::(anonymous namespace)::JSStringToSTLString(OpaqueJSString*) in libReact.a(JSCRuntime.o)
  "_JSStringGetUTF8CString", referenced from:
      facebook::jsc::(anonymous namespace)::JSStringToSTLString(OpaqueJSString*) in libReact.a(JSCRuntime.o)
  "_JSStringIsEqual", referenced from:
      facebook::jsc::JSCRuntime::compare(facebook::jsi::PropNameID const&, facebook::jsi::PropNameID const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::strictEquals(facebook::jsi::String const&, facebook::jsi::String const&) const in libReact.a(JSCRuntime.o)
  "_JSStringRelease", referenced from:
      facebook::jsc::JSCRuntime::evaluateJavaScript(std::__1::unique_ptr<facebook::jsi::Buffer const, std::__1::default_delete<facebook::jsi::Buffer const> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::JSCStringValue::invalidate() in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createPropNameIDFromAscii(char const*, unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createPropNameIDFromUtf8(unsigned char const*, unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSStringRetain", referenced from:
      facebook::jsc::JSCRuntime::JSCStringValue::JSCStringValue(OpaqueJSString*, std::__1::atomic<long>&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::HostFunctionMetadata(facebook::jsc::JSCRuntime*, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>, unsigned int, OpaqueJSString*) in libReact.a(JSCRuntime.o)
  "_JSValueIsArray", referenced from:
      facebook::jsc::JSCRuntime::isArray(facebook::jsi::Object const&) const in libReact.a(JSCRuntime.o)
  "_JSValueIsBoolean", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueIsInstanceOfConstructor", referenced from:
      facebook::jsc::JSCRuntime::instanceOf(facebook::jsi::Object const&, facebook::jsi::Function const&) in libReact.a(JSCRuntime.o)
  "_JSValueIsNull", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueIsNumber", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueIsObject", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueIsObjectOfClass", referenced from:
      facebook::jsc::JSCRuntime::isHostObject(facebook::jsi::Object const&) const in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::isHostFunction(facebook::jsi::Function const&) const in libReact.a(JSCRuntime.o)
  "_JSValueIsString", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueIsUndefined", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueMakeBoolean", referenced from:
      facebook::jsc::JSCRuntime::valueRef(facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
  "_JSValueMakeNull", referenced from:
      facebook::jsc::JSCRuntime::valueRef(facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
  "_JSValueMakeNumber", referenced from:
      facebook::jsc::JSCRuntime::valueRef(facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createArray(unsigned long) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSValueMakeString", referenced from:
      facebook::jsc::JSCRuntime::valueRef(facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSValueMakeUndefined", referenced from:
      facebook::jsc::JSCRuntime::valueRef(facebook::jsi::Value const&) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::HostObjectProxy::getProperty(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSString*, OpaqueJSValue const**) in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::call(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) in libReact.a(JSCRuntime.o)
  "_JSValueProtect", referenced from:
      facebook::jsc::JSCRuntime::JSCObjectValue::JSCObjectValue(OpaqueJSContext*, std::__1::atomic<bool> const&, OpaqueJSValue*, std::__1::atomic<long>&) in libReact.a(JSCRuntime.o)
  "_JSValueToBoolean", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueToNumber", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueToObject", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::HostFunctionMetadata::initialize(OpaqueJSContext const*, OpaqueJSValue*) in libReact.a(JSCRuntime.o)
  "_JSValueToStringCopy", referenced from:
      facebook::jsc::JSCRuntime::createValue(OpaqueJSValue const*) const in libReact.a(JSCRuntime.o)
  "_JSValueUnprotect", referenced from:
      facebook::jsc::JSCRuntime::JSCObjectValue::invalidate() in libReact.a(JSCRuntime.o)
  "_kJSClassDefinitionEmpty", referenced from:
      facebook::jsc::JSCRuntime::createObject(std::__1::shared_ptr<facebook::jsi::HostObject>)::$_0::operator()() const in libReact.a(JSCRuntime.o)
      facebook::jsc::JSCRuntime::createFunctionFromHostFunction(facebook::jsi::PropNameID const&, unsigned int, std::__1::function<facebook::jsi::Value (facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long)>)::$_1::operator()() const in libReact.a(JSCRuntime.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
radex commented 5 years ago

@blainekasten I think you didn't link your project with JavaScriptCore.framework

grabbou commented 5 years ago

We have just released a patch to CLI to fix @Salakar issues. No changes required, just reinstall your Node modules.