Open stevekuznetsov opened 8 months ago
Some low-hanging fruit may be logging. The docs specifically call out console.log
and we log to the console in release builds right now. Using only the Bunyan sink for the log file in release builds should be fairly straightforward.
Sadly it looks like using the sampling profiler will be a lot of work: https://github.com/expo/expo/issues/17307
At least on my workstation, I can't run profiling from the Chrome Dev Tools - recording a profile seems to work, but loading it into the tool to view it hangs forever and makes the rest of the Dev Tools panel unresponsive. This might be some permutation of this issue: https://github.com/facebook/hermes/issues/1187
It looks like the "JavaScript Profiler" tab in Chrome Dev Tools does work - and I wonder if that is using the Hermes Sampling Profiler? Time to figure out source maps.
Looks like we have some possibility of getting symbolicated profiles and even doing so for release builds: https://github.com/facebook/hermes/issues/760#issuecomment-1888644262
Unfortunately, the react-native-release-profiler
requires us to eject.
$ npx react-devtools
Works like a charm. Had trouble getting $ npx react-native start --experimental-debugger
to work through expo
.
I'm really not seeing anything crazy.
With the performance overlay up, my Samsung Galaxy A13 (Exynos 850 - 6 cores @2GHz, 3GB RAM) drops 10-20 frames on every navigation, and the JS thread drops from 60FPS to 30 or so.
Similarly, on startup it takes a good while for background tasks to complete. In both cases, input processing is lagged until the JS thread catches up. I think this may be what @floatplane reported recently on his Android and may be some of the slowness @charlotteguard experiences on Android, but notably is not the issue where the rest of the app is responsive, but navigation is not firing.