Open igorsantos07 opened 3 months ago
Thanks for opening this issue! would you mind uploading a minimal reproduction of this issue you are facing?
Thanks for not telling me to walk away after such a edge case š will try
Have fun
I think you'll need to do the following to run it:
www/env.js.sample
to www/env.js
, placing your test DSN therelogger
isn't present on the Cordova report as one would expectnpx cordova platform add [[android|ios]]
npx cordova plugin add sentry-cordova # here I guess you know what to do haha
npx cordova run
Instead of the React SDK, I went with the vanilla browser one, so I wouldn't need to setup NPM, React bundler or the likes. Turns out the conflict is still there, so... š¤·āāļø Also, sorry for the terrible styles on those default Cordova buttons lol
Relevant code is all at www/index.html
. I left a TODO
note where you can comment some lines and see the changing behavior between the SDKs.
No worries, the important thing is the reproduction of it, the sample helps us alot on the investigation to give you a faster resolution of the issue. Thank you for helping us!, I'll give you an answer soon.
This issue has gone three weeks without activity. In another week, I will close it.
But! If you comment or otherwise update it, I will reset the clock, and if you label it Status: Backlog
or Status: In Progress
, I will leave it alone ... forever!
"A weed is but an unloved flower." ā Ella Wheeler Wilcox š„
This issue has gone three weeks without activity. In another week, I will close it.
But! If you comment or otherwise update it, I will reset the clock, and if you label it Status: Backlog
or Status: In Progress
, I will leave it alone ... forever!
"A weed is but an unloved flower." ā Ella Wheeler Wilcox š„
stale-proof comment
This is a follow up of the old https://github.com/getsentry/sentry-cordova/issues/307. We are still unable to get Sentry to run on the Cordova shell of our React app (which runs both on the browser and on native environments via Cordova loading the web code inside of it).
It took me quite a while to get back to this because of #311, which developed into #320 - and I'm unable to make sure that is gone, since I can't even say for sure if the plugin is working as expected.
Environment
Expected Result
Errors coming from the React side would report the same way we already have from the web-based version. Errors coming from the Cordova side would report with different tags and details, as configured in the Cordova code.
Actual Result
Edit: after writing everything under the separator below, I found out about the
debug
option. Enabling it from the Cordova side I see the Dedupe processor drops any single call tocaptureMessage()
, for instance, and no network call is done. This happens from the Cordova and the Sentry libs. Multiple calls with the same message start to yield a warning about being a duplicate of a previously captured event......... But nothing ever showed to my Issues panel (and yep, my sampling rate is 100%, as you can see below where I can get stuff to show up by simply skipping the Cordova SDK). And even then... the capture call returns an new event ID, every time. Does it make sense? I couldn't enable debug on the React side, it complains about being a non-debug bundle; I'm using the NPM sentry/react package there, so not sure what I did wrong.If I comment out the Cordova
Sentry.init()
, I can (obviously) seewindow.Sentry.SDK_VERSION == '7.34.0'
(thus, React package). Sentry reports as usual, e.g. withwindow.Sentry.captureMessage('a')
causing some extra network calls to your servers.However, when both init calls are present (with the Cordova one coming first, since it's the one who loads the React code), only the Cordova version is reporting native errors. In this case,
Sentry
andSentryCordova
are the Cordova SDK, whileSentryReact
remains "nameless" (noSDK_NAME
) but withSDK_VERSION == '7.34.0'
. No call tocaptureMessage('b')
yields anything in my Issues panel (nor any network call), from any of the three variables, butSentry.nativeCrash()
does yield a native report on my panel, after the app is restarted! Maybe that works because the report happens right on load, before the React code lands? No problem shows up on the JS console, when inspecting the Cordova app from Safari (even if I callcaptureMessage('b')
from the console). Also, settingwindow.Sentry = null
right after the Cordova init leads to it still being null after React loads. It also doesn't helpSentryReact
to capture anything. I guess Sentry places itself in the global scope before initialization?Further thoughts
I wonder if such issues happen because Sentry may rely on the global
window.Sentry
, which could be including conflicting code? Or they both cling to the same error handler, instead of stacking different handlers... Although I was previously instructed to be sure I was running the same inner-dependencies, which it seems I am.I'm open to suggestions on this scenario, since if we tell the React code to skip
Sentry.init()
whenwindow.Sentry
already has something in it, we will end up having very different reports between the web app and the cordova-wrapped one - we will miss Replay, Browser Tracing and other goodies (including React-specific features). And on the other hand, with only the React library enabled (as we are now), we lose (are losing!) any native errors.I wonder if it would be possible to have the Cordova plugin running but only listening to native issues, instead of living in the JS context as well? I found the
enableNative
option, but no JS counterpart.