realm / realm-js

Realm is a mobile database: an alternative to SQLite & key-value stores
https://realm.io
Apache License 2.0
5.74k stars 565 forks source link

Improve Chrome Debugger error message when using iOS on JSC? #4363

Open liamjones opened 2 years ago

liamjones commented 2 years ago

Description

When using an iOS simulator/device, if you attempt to connect to the Chrome Debugger you now get the following error message:

Error: This version of Realm JS doesn't support the legacy Chrome Debugger. Please use Flipper instead.

This makes sense if your RN app is using hermes but it's misleading if it's still on JSC as you can't use the Hermes debugger in Flipper (and I don't believe there's a JSC debugger in Flipper?)

Don't know if this is possible, is there a way the code showing this message can change based on the engine/OS being used? If so it should be pointing the user towards using Safari's debugger function. If this is doable then it might be worth pointing the dev towards a documentation page on the Realm website so as to explain that they're going to want to change their AppDelegate.m to do inline sourcemaps too.

Stacktrace & log output

No response

Can you reproduce a bug?

Yes, always

Reproduction Steps

No response

Version

10.20.0-beta.1

What SDK flavour are you using?

Local Database only

Are you using encryption?

No, not using encryption

Platform OS and version(s)

macOS 11.6.3 / Xcode 13.2.1's iOS Simulator

kraenhansen commented 2 years ago

@liamjones thanks for the issue, I do see how we could be a bit more clear in the error message.

While our hermes branch (and the 10.20.0-beta releases) do support running in JSC mode it doesn't bring extra features and as such we though users wouldn't be using those releases with hermes disabled. This is why the error is a bit misleading.

I'm a bit curious on your use-case: Are you using the 10.20.0-beta release to get hermes enabled on only one of iOS / Android? What's your reason for not enabling hermes on both?

liamjones commented 2 years ago

I'm a bit curious on your use-case: Are you using the 10.20.0-beta release to get hermes enabled on only one of iOS / Android? What's your reason for not enabling hermes on both?

Maybe I've been operating under a misunderstanding? I thought that, eventually, the hermes branch would merge to the mainline and be the only available release for Realm in future (since it supports both JSC and Hermes)? Working on that belief I was trying to do some pre-release testing to see if there's going to be any issues related to the JSC after the hermes stuff is merged to the mainline. Additionally, I was testing to see how easy it would be for us to upgrade our apps to Hermes since Realm was our known blocker for that.

Our ultimate goal is to move our apps to Hermes on both platforms but, in our case, it's not as simple as just switching the engine flag.

kraenhansen commented 2 years ago

I answered on https://github.com/realm/realm-js/issues/4364#issuecomment-1047829949.

I'll keep this issue open to track the improvement of the error message when running with Hermes disabled.

tomduncalf commented 2 years ago

Perhaps we should link to https://www.mongodb.com/docs/realm/sdk/react-native/test-and-debug/#debugging