Skip to content

Commit 20f6de0

Browse files
authored
fix(metro-serializer-esbuild): do not lower template literals (#3362)
1 parent 00247a7 commit 20f6de0

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

.changeset/gentle-eggs-type.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@rnx-kit/metro-serializer-esbuild": patch
3+
---
4+
5+
Do not lower template literals. Template literals are partially supported by
6+
Hermes for most of the use cases we care about (e.g., `styled-components`).

packages/metro-serializer-esbuild/src/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -289,14 +289,15 @@ export function MetroSerializer(
289289
return undefined;
290290
}
291291

292-
// The following features should be safe to enable if we take into
292+
// `arrow` and `generator` should be safe to enable if we take into
293293
// consideration that Hermes does not support classes. They were
294294
// disabled in esbuild 0.14.49 after the feature compatibility table
295295
// generator was fixed (see
296296
// https://github.com/evanw/esbuild/releases/tag/v0.14.49).
297297
return {
298298
arrow: true,
299299
generator: true,
300+
"template-literal": true, // Used heavily by `styled-components`
300301
};
301302
})(),
302303
write: false,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log`Hello`;

packages/metro-serializer-esbuild/test/index.test.ts

+15
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ describe("metro-serializer-esbuild", () => {
4848
require.resolve("react-native/package.json")
4949
),
5050
dependencies: {},
51+
assets: [],
5152
commands: [],
5253
healthChecks: [],
5354
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -308,4 +309,18 @@ describe("metro-serializer-esbuild", () => {
308309
)
309310
);
310311
});
312+
313+
it("preserves template literals", async () => {
314+
const result = await bundle("test/__fixtures__/templateLiterals.ts");
315+
deepEqual(result, [
316+
"(() => {",
317+
" // virtual:metro:__rnx_prelude__",
318+
' var global = new Function("return this;")();',
319+
"",
320+
" // test/__fixtures__/templateLiterals.ts",
321+
" console.log`Hello`;",
322+
"})();",
323+
"",
324+
]);
325+
});
311326
});

0 commit comments

Comments
 (0)