White Screen Of Death IoS XCode Submission

Hey there experts…

Been stuck with this problem for weeks now. Meteor tech support referred us to seek support from the forums.I am really hoping somebody could help us cross this bridge.

We recently upgraded to the latest version of Meteor. We managed to fix most of the inconsistencies and pushed the app to playstore with no issues. App works great on web and on Android.

The App store folks rejected our build citing white screen of death.

Our Xcode Version: 12.4
Mac M1 chip (Tried with and without Rosetta options)

While running the app in the iOS emulator, the error is thrown and white screen appears. Any clue what the issue could be? Is it do with the damn Cordova - IoS war as usual?

Please do advise.

Best
CXONCLOUD


Generally speaking, “Unhandled promise rejection” means that somewhere, a Promise is not being caught with .catch() (or a try...catch block in an await function).

I’ve had a heck of a hard time finding unhandled promises in the past. I have not figured out how to get the location of where the offending promise is defined from the error or logs. When I’ve found and fixed this issue in the past, it’s been through searching my codebase for all instances of .then and await and looking for any place where potential promise rejections aren’t being caught. And I can definitely remember one instance where the promise was only being rejected in iOS, although I can’t think of what it was exactly…

Good luck!

Thanks for taking time to respond @banjerluke . Its reassuring that we aren’t the only ones. If you can recollect what that iOS throwback was, please do keep us advised.

Others, if you know of any other methods to check the iOS rejections within the code, please do educate us.

Best
Jay

In the server, you can catch this error using this event in node (then use stack tracking to figure out where in the code)
https://nodejs.org/api/process.html#event-unhandledrejection

In the client, you can use the corresponding event handler

1 Like

In both my case and Jay’s case (it sounds like) the rejected promises are in the client. The unhandledrejection event is the reason I became aware of these rejected promises in the first place – Sentry was catching them for me. The problem with investigating and reproducing is that there is no stack trace available, because it’s not technically an Error, it’s an Event. Do let us know if there’s a way to get a stacktrace that I haven’t thought of!

1 Like

Edit: I just realized now what you were actually asking after posting this. I’ll check once I’m at the office if this is something we already handled in our code

1 Like

I just checked and event.reason contains the stacktrace of the error

window.addEventListener('unhandledrejection', event => {
  console.warn(event.reason);
});

Interesting! Sentry isn’t receiving that stacktrace for some reason, but it must be something to do with my Sentry integration or something. Thanks for checking!

@cxoncloud I think if you add @rjdavid’s code to the top of your Meteor client code you may get some insights as to what’s going on for you…

We have our Meteor app in the Webex App Hub. It runs as an IFRAME (I believe) inside of side window inside of Webex’s native app and we’re getting lots of reports of white screens of death. Never see this in the standard app.

It’s also hard to reproduce.