diff --git a/node_modules/metro-runtime/src/polyfills/require.js b/node_modules/metro-runtime/src/polyfills/require.js
index ce67cb4..eeeae84 100644
--- a/node_modules/metro-runtime/src/polyfills/require.js
+++ b/node_modules/metro-runtime/src/polyfills/require.js
@@ -22,6 +22,13 @@ global.__c = clear;
 global.__registerSegment = registerSegment;
 var modules = clear();
 
+if (__DEV__) {
+  // Added by Dan for module init logging.
+  global.__INIT_LOGS__ = []
+  var initModuleCounter = 0
+  var initModuleStack = []
+}
+
 // Don't use a Symbol here, it would pull in an extra polyfill with all sorts of
 // additional stuff (e.g. Array.from).
 const EMPTY = {};
@@ -303,7 +310,30 @@ function loadModuleImplementation(moduleId, module) {
     throw module.error;
   }
   if (__DEV__) {
-    var Systrace = requireSystrace();
+    // Added by Dan for module init logging.
+    var Systrace = {
+      beginEvent(label) {
+        let fullLabel = initModuleCounter++ + ' ' + label
+        global.__INIT_LOGS__.push(
+          ' '.repeat(initModuleStack.length) +
+          ' ENTER ' + fullLabel
+        )
+        initModuleStack.push({
+          fullLabel,
+          startTime: nativePerformanceNow(),
+        })
+      },
+      endEvent() {
+        const res = initModuleStack.pop()
+        const fullLabel = res.fullLabel
+        const startTime = res.startTime
+        const timeElapsed = Math.round(nativePerformanceNow() - startTime)
+        global.__INIT_LOGS__.push(
+          ' '.repeat(initModuleStack.length) +
+            ' LEAVE ' + fullLabel + ' [' + timeElapsed + 'ms]',
+        )
+      }
+    };
     var Refresh = requireRefresh();
   }