From 422a03da0b78b746dec47e2950fd9de78f522c9e Mon Sep 17 00:00:00 2001 From: Trevor Burnham Date: Mon, 23 Feb 2026 09:19:11 -0500 Subject: [PATCH] fix(codegen): use literal string keys in SchemaTraitWriter to fix esbuild tree-shaking SchemaTraitWriter.writeTraitsObject() previously emitted computed property keys using StringStore variable references (e.g. { [_e]: _c }). esbuild treats computed keys as potentially side-effectful and refuses to tree-shake the containing statements, causing severe bundle size regressions for SDK users (30KB -> 492KB for minimal imports). Changed to emit literal string keys instead (e.g. { "error": _c }). Trait key names are short strings ("error", "httpError", etc.) so the size cost of inlining them is negligible, while StringStore abbreviations are preserved for trait values where they still save bytes. Fixes aws/aws-sdk-js-v3#7607 --- .changeset/fix-schema-trait-computed-keys.md | 5 +++++ .../smithy/typescript/codegen/schema/SchemaTraitWriter.java | 4 ++-- .../typescript/codegen/schema/SchemaTraitWriterTest.java | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/fix-schema-trait-computed-keys.md diff --git a/.changeset/fix-schema-trait-computed-keys.md b/.changeset/fix-schema-trait-computed-keys.md new file mode 100644 index 00000000000..3ac6d02f034 --- /dev/null +++ b/.changeset/fix-schema-trait-computed-keys.md @@ -0,0 +1,5 @@ +--- +"@smithy/core": patch +--- + +fix(codegen): use literal string keys in SchemaTraitWriter to fix esbuild tree-shaking diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriter.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriter.java index f7e3951345f..c6e9bbf6361 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriter.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriter.java @@ -86,8 +86,8 @@ private void writeTraitsObject() { } buffer.append( """ - [%s]: %s,\s""".formatted( - stringStore.var(shapeId.getName()), + "%s": %s,\s""".formatted( + shapeId.getName(), traitGenerator.serializeTraitData(trait, stringStore) ) ); diff --git a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriterTest.java b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriterTest.java index 36b2566d0d0..929d91524b1 100644 --- a/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriterTest.java +++ b/smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/schema/SchemaTraitWriterTest.java @@ -40,7 +40,7 @@ void testToString() { String codeGeneration = subject.toString(); assertEquals( """ - { [_s]: 1 }""", + { "streaming": 1 }""", codeGeneration ); }