dev client crashes? returns to splash screen and freezes, no error logs

using managed workflow
eas-cli 46
I have tried searching the forum but no clues.

I built a dev client that works well, but when I navigate to one particular page, the app seems to crash … it displays the splash screen, and becomes unresponsive, eventually returning to the home dev client menu after some time.

No errors are logged.

An internal build, in preview mode, from the same codebase, does not show this behaviour, only the dev client.

What does this behaviour indicate? A runtime crash of some kind?
Is there a way to debug it? I have stepped through the code using logs, and the code seems to halt at a very routine function, so I am stumped.

I do get some warnings when I first launch the client, but they seem unrelated:

AsyncStorage has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-async-storage/async-storage' instead of 'react-native'. See https://github.com/react-native-async-storage/async-storage
at node_modules/react-native/Libraries/Utilities/warnOnce.js:27:2 in warnOnce
at node_modules/react-native/index.js:300:12 in module.exports.get__AsyncStorage
at node_modules/@firebase/app/dist/index.rn.cjs.js:605:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/firebase/dist/index.rn.cjs.js:5:38 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at donor/modules/state.js:2:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at donor/modules/listeners.js:1:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at donor/donor.js:9:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at App.js:9:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/expo/AppEntry.js:3:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/metro-runtime/src/polyfills/require.js:201:44 in guardedLoadModule
at troop/modules/otherDonorsDonationListing.js:34:24 in DonationListing

Require cycle: troop/modules/state.js -> troop/modules/alert.js -> troop/modules/state.js

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
at node_modules/metro-runtime/src/polyfills/require.js:117:6 in metroRequire
at node_modules/moment/moment.js:4716:14 in addRegexToken$argument_1
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/moment/moment.js:4276:18 in <anonymous>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/moment/moment.js:3526:16 in parseIso
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at App.js:10:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/expo/AppEntry.js:3:0 in <global>
at node_modules/metro-runtime/src/polyfills/require.js:349:11 in loadModuleImplementation
at node_modules/metro-runtime/src/polyfills/require.js:201:44 in guardedLoadModule
at troop/modules/otherDonorsDonationListing.js:34:24 in DonationListing

Thank you!!

realizing this question belongs in the Expo Tools section, reposting there.