diff --git a/patches/metro+0.76.8.patch b/patches/metro+0.76.8.patch
new file mode 100644
index 000000000..f8ef67c84
--- /dev/null
+++ b/patches/metro+0.76.8.patch
@@ -0,0 +1,44 @@
+diff --git a/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js b/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js
+index 48a1409..ef185c9 100644
+--- a/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js
++++ b/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js
+@@ -70,14 +70,19 @@ function wrapModule(
+ importDefaultName,
+ importAllName,
+ dependencyMapName,
+- globalPrefix
++ globalPrefix,
++ moduleFactoryName
+ ) {
+ const params = buildParameters(
+ importDefaultName,
+ importAllName,
+ dependencyMapName
+ );
+- const factory = functionFromProgram(fileAst.program, params);
++ const factory = functionFromProgram(
++ fileAst.program,
++ params,
++ moduleFactoryName
++ );
+ const def = t.callExpression(t.identifier(`${globalPrefix}__d`), [factory]);
+ const ast = t.file(t.program([t.expressionStatement(def)]));
+ const requireName = renameRequires(ast);
+@@ -107,7 +112,16 @@ function wrapJson(source, globalPrefix) {
+ "});",
+ ].join("\n");
+ }
+-function functionFromProgram(program, parameters) {
++const JS_INVALID_IDENT_RE = /[^a-zA-Z0-9$_]/g;
++function functionFromProgram(program, parameters, moduleFactoryName) {
++ let identifier;
++ if (typeof moduleFactoryName === "string" && moduleFactoryName !== "") {
++ // Keep the name readable so it shows up in profiler traces.
++ // Add an unlikely suffix to avoid collisions with the module code.
++ identifier = t.identifier(
++ `${moduleFactoryName.replace(JS_INVALID_IDENT_RE, "_")}__module_factory__`
++ );
++ }
+ return t.functionExpression(
+ undefined,
+ parameters.map(makeIdentifier),
diff --git a/patches/metro-transform-worker+0.76.8.patch b/patches/metro-transform-worker+0.76.8.patch
new file mode 100644
index 000000000..d835eee06
--- /dev/null
+++ b/patches/metro-transform-worker+0.76.8.patch
@@ -0,0 +1,41 @@
+diff --git a/node_modules/metro-transform-worker/src/index.js b/node_modules/metro-transform-worker/src/index.js
+index 27d4cb3..fd71f47 100644
+--- a/node_modules/metro-transform-worker/src/index.js
++++ b/node_modules/metro-transform-worker/src/index.js
+@@ -190,6 +190,10 @@ async function transformJS(file, { config, options, projectRoot }) {
+ let dependencyMapName = "";
+ let dependencies;
+ let wrappedAst;
++ const minify =
++ options.minify &&
++ options.unstable_transformProfile !== "hermes-canary" &&
++ options.unstable_transformProfile !== "hermes-stable";
+
+ // If the module to transform is a script (meaning that is not part of the
+ // dependency graph and it code will just be prepended to the bundle modules),
+@@ -229,19 +233,20 @@ async function transformJS(file, { config, options, projectRoot }) {
+ if (config.unstable_disableModuleWrapping === true) {
+ wrappedAst = ast;
+ } else {
++ let moduleFactoryName;
++ if (options.dev && !minify) {
++ moduleFactoryName = file.filename;
++ }
+ ({ ast: wrappedAst } = JsFileWrapping.wrapModule(
+ ast,
+ importDefault,
+ importAll,
+ dependencyMapName,
+- config.globalPrefix
++ config.globalPrefix,
++ moduleFactoryName
+ ));
+ }
+ }
+- const minify =
+- options.minify &&
+- options.unstable_transformProfile !== "hermes-canary" &&
+- options.unstable_transformProfile !== "hermes-stable";
+ const reserved = [];
+ if (config.unstable_dependencyMapReservedName != null) {
+ reserved.push(config.unstable_dependencyMapReservedName);
|