From f12c34ee0c132f882a6f413828c764d85ae2b853 Mon Sep 17 00:00:00 2001 From: Guillaume Roux Date: Mon, 3 Nov 2025 17:07:25 +0100 Subject: [PATCH 1/3] allow `null` in `InputChangeEvent` value field --- .../src/types/handlers/user-input.test.ts | 13 +++++++++++++ .../snaps-sdk/src/types/handlers/user-input.ts | 14 ++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/snaps-sdk/src/types/handlers/user-input.test.ts b/packages/snaps-sdk/src/types/handlers/user-input.test.ts index f1a9a120d6..cc6d2a5474 100644 --- a/packages/snaps-sdk/src/types/handlers/user-input.test.ts +++ b/packages/snaps-sdk/src/types/handlers/user-input.test.ts @@ -66,4 +66,17 @@ describe('InputChangeEventStruct', () => { ), ).toBe(true); }); + + it('accepts null values', () => { + expect( + is( + { + type: 'InputChangeEvent', + name: 'foo', + value: null, + }, + InputChangeEventStruct, + ), + ).toBe(true); + }); }); diff --git a/packages/snaps-sdk/src/types/handlers/user-input.ts b/packages/snaps-sdk/src/types/handlers/user-input.ts index 66db395d68..26aa604c01 100644 --- a/packages/snaps-sdk/src/types/handlers/user-input.ts +++ b/packages/snaps-sdk/src/types/handlers/user-input.ts @@ -141,12 +141,14 @@ export const InputChangeEventStruct = assign( object({ type: literal(UserInputEventType.InputChangeEvent), name: string(), - value: union([ - string(), - boolean(), - AccountSelectorStateStruct, - AssetSelectorStateStruct, - ]), + value: nullable( + union([ + string(), + boolean(), + AccountSelectorStateStruct, + AssetSelectorStateStruct, + ]), + ), }), ); From b8c7600b76dfda97eb2daded3ca5bce929cf2941 Mon Sep 17 00:00:00 2001 From: Guillaume Roux Date: Mon, 3 Nov 2025 17:14:50 +0100 Subject: [PATCH 2/3] update changelogs --- packages/snaps-execution-environments/CHANGELOG.md | 4 ++++ packages/snaps-sdk/CHANGELOG.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/snaps-execution-environments/CHANGELOG.md b/packages/snaps-execution-environments/CHANGELOG.md index a25a82ff30..bc466acf30 100644 --- a/packages/snaps-execution-environments/CHANGELOG.md +++ b/packages/snaps-execution-environments/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Input change events in `onUserInput` now accepts `null` values ([#3722](https://github.com/MetaMask/snaps/pull/3722)) + ## [10.2.2] ### Changed diff --git a/packages/snaps-sdk/CHANGELOG.md b/packages/snaps-sdk/CHANGELOG.md index 03b9a45c2c..7b008153dd 100644 --- a/packages/snaps-sdk/CHANGELOG.md +++ b/packages/snaps-sdk/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Input change events in `onUserInput` now accepts `null` values ([#3722](https://github.com/MetaMask/snaps/pull/3722)) + ## [10.0.0] ### Changed From c698209cc2b13e2553348b60ae9665c50a93df5b Mon Sep 17 00:00:00 2001 From: Guillaume Roux Date: Mon, 3 Nov 2025 17:19:22 +0100 Subject: [PATCH 3/3] update manifests --- packages/examples/packages/dialogs/snap.manifest.json | 2 +- packages/examples/packages/file-upload/snap.manifest.json | 2 +- packages/examples/packages/home-page/snap.manifest.json | 2 +- packages/examples/packages/interactive-ui/snap.manifest.json | 2 +- packages/examples/packages/jsx/snap.manifest.json | 2 +- packages/examples/packages/preinstalled/snap.manifest.json | 2 +- packages/examples/packages/send-flow/snap.manifest.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/examples/packages/dialogs/snap.manifest.json b/packages/examples/packages/dialogs/snap.manifest.json index e82786c2f1..fc8bdc7591 100644 --- a/packages/examples/packages/dialogs/snap.manifest.json +++ b/packages/examples/packages/dialogs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "RT3QK/Bl2XW8O93eTzxm4kkhbWU2YLNgl0wIpQtA+Rw=", + "shasum": "tPhKkcndt1BKiNffSxTpxGae+N0L8dqtbsWuMPtgwXY=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/file-upload/snap.manifest.json b/packages/examples/packages/file-upload/snap.manifest.json index 92a4a652e6..7fe8ea9893 100644 --- a/packages/examples/packages/file-upload/snap.manifest.json +++ b/packages/examples/packages/file-upload/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "xn5ZLnAqlgmHjAQ6k8/otZ3fxZsFXtt+gW4wcGPMkRk=", + "shasum": "34pGPXChz9MhZtvuhbA3mr3iJRRtf5BZuchUOppsFz8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/home-page/snap.manifest.json b/packages/examples/packages/home-page/snap.manifest.json index 01062ffc6d..60845b9834 100644 --- a/packages/examples/packages/home-page/snap.manifest.json +++ b/packages/examples/packages/home-page/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "O1/68sw9rGYH31FRWjjEs2nSWiH3uKJIE/CcWGDylCs=", + "shasum": "phEuQysVh6vKuOES3NkeN22l5/YcycRVdm10adIH7b8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/interactive-ui/snap.manifest.json b/packages/examples/packages/interactive-ui/snap.manifest.json index 3f21d471d3..6c5b19b960 100644 --- a/packages/examples/packages/interactive-ui/snap.manifest.json +++ b/packages/examples/packages/interactive-ui/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "Ov0Ar65MX7lo2uYyp3Ib4ewVnK/HenJye0xb7uTC9E8=", + "shasum": "UrhDVNzx7t2w36ORy5WsywNkZQvHXcR6Sl7jPZRvG4o=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/jsx/snap.manifest.json b/packages/examples/packages/jsx/snap.manifest.json index 28cf1e5ec1..78a24c69fd 100644 --- a/packages/examples/packages/jsx/snap.manifest.json +++ b/packages/examples/packages/jsx/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "2yd5MwUprX+3XNKZERiNu6IONA4kAtYIE76fEel23aQ=", + "shasum": "ts/r1Ab8K2GVa0X8oqiDlmiyKlN/fLyBHS+uljXrhhM=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/preinstalled/snap.manifest.json b/packages/examples/packages/preinstalled/snap.manifest.json index 1364727a2b..776dea1239 100644 --- a/packages/examples/packages/preinstalled/snap.manifest.json +++ b/packages/examples/packages/preinstalled/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "JqzNl7ziMGzb/5CkbdCNzBhcagAdRVo+q7VoLlYNut8=", + "shasum": "5GjC5OYTtXLw1aHztViZ2Xf1dZIgvqP4xCgw4gPT1JY=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/send-flow/snap.manifest.json b/packages/examples/packages/send-flow/snap.manifest.json index 8059323176..d091a7c96a 100644 --- a/packages/examples/packages/send-flow/snap.manifest.json +++ b/packages/examples/packages/send-flow/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "yEqB3AAMpEz6knhYbegfL699DkfGcq+akyyPmSjILSg=", + "shasum": "P0uud2dk/a0PvybjWdaOPXzWlhQkUP4aHlxy8KUu4Wk=", "location": { "npm": { "filePath": "dist/bundle.js",