Skip to content

fix(tags-input): sync hidden input on value change for native form submit#3194

Merged
segunadebayo merged 2 commits into
mainfrom
fix/tags-input-hidden-input-stale-value
Jun 26, 2026
Merged

fix(tags-input): sync hidden input on value change for native form submit#3194
segunadebayo merged 2 commits into
mainfrom
fix/tags-input-hidden-input-stale-value

Conversation

@segunadebayo

@segunadebayo segunadebayo commented Jun 26, 2026

Copy link
Copy Markdown
Member

Fixes #3193

Summary

Native <form> submit now sends the current tags from TagsInput.

After adding, removing, or clearing tags, FormData.get("tags") stayed at the initial value. With defaultValue={["a"]}, adding "b" and submitting sent "a" instead of "a, b". The hidden input's DOM .value never updated even though React refreshed the value attribute.

This wires the existing dispatchChangeEvent action into a valueAsString watcher (same pattern as select), syncing the hidden input via the native value setter on every tag change.

Test plan

  • E2E: tags-input / form add, remove, and clear tags then assert submitted value
  • Verified against reporter's @ark-ui/react@5.37.2 repro: stale .value before fix, "a, b" after

…bmit

Wire dispatchChangeEvent when tags change so FormData reflects the current
value instead of staying frozen at mount time (fixes #3193). Adds a form
example, e2e coverage, and shared clickButton/seeTextValue model helpers.
@changeset-bot

changeset-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 280b37f

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 86 packages
Name Type
@zag-js/tags-input Patch
@zag-js/anatomy-icons Patch
@zag-js/anatomy Patch
@zag-js/core Patch
@zag-js/docs Patch
@zag-js/preact Patch
@zag-js/react Patch
@zag-js/solid Patch
@zag-js/svelte Patch
@zag-js/vanilla Patch
@zag-js/vue Patch
@zag-js/accordion Patch
@zag-js/angle-slider Patch
@zag-js/async-list Patch
@zag-js/avatar Patch
@zag-js/carousel Patch
@zag-js/cascade-select Patch
@zag-js/checkbox Patch
@zag-js/clipboard Patch
@zag-js/collapsible Patch
@zag-js/color-picker Patch
@zag-js/combobox Patch
@zag-js/date-input Patch
@zag-js/date-picker Patch
@zag-js/dialog Patch
@zag-js/drawer Patch
@zag-js/editable Patch
@zag-js/file-upload Patch
@zag-js/floating-panel Patch
@zag-js/hover-card Patch
@zag-js/image-cropper Patch
@zag-js/listbox Patch
@zag-js/marquee Patch
@zag-js/menu Patch
@zag-js/navigation-menu Patch
@zag-js/number-input Patch
@zag-js/pagination Patch
@zag-js/password-input Patch
@zag-js/pin-input Patch
@zag-js/popover Patch
@zag-js/presence Patch
@zag-js/progress Patch
@zag-js/qr-code Patch
@zag-js/radio-group Patch
@zag-js/rating-group Patch
@zag-js/scroll-area Patch
@zag-js/select Patch
@zag-js/signature-pad Patch
@zag-js/slider Patch
@zag-js/splitter Patch
@zag-js/steps Patch
@zag-js/switch Patch
@zag-js/tabs Patch
@zag-js/timer Patch
@zag-js/toast Patch
@zag-js/toc Patch
@zag-js/toggle-group Patch
@zag-js/toggle Patch
@zag-js/tooltip Patch
@zag-js/tour Patch
@zag-js/tree-view Patch
@zag-js/store Patch
@zag-js/types Patch
@zag-js/aria-hidden Patch
@zag-js/auto-resize Patch
@zag-js/collection Patch
@zag-js/color-utils Patch
@zag-js/utils Patch
@zag-js/date-utils Patch
@zag-js/dismissable Patch
@zag-js/dom-query Patch
@zag-js/file-utils Patch
@zag-js/focus-trap Patch
@zag-js/focus-visible Patch
@zag-js/highlight-word Patch
@zag-js/hotkeys Patch
@zag-js/i18n-utils Patch
@zag-js/interact-outside Patch
@zag-js/json-tree-utils Patch
@zag-js/live-region Patch
@zag-js/popper Patch
@zag-js/rect-utils Patch
@zag-js/remove-scroll Patch
@zag-js/scroll-snap Patch
@zag-js/stringify-state Patch
svelte-kit-starter Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Jun 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
zag-nextjs Ready Ready Preview Jun 26, 2026 10:38am
zag-solid Ready Ready Preview Jun 26, 2026 10:38am
zag-svelte Ready Ready Preview Jun 26, 2026 10:38am
zag-vue Ready Ready Preview Jun 26, 2026 10:38am
zag-website Ready Ready Preview Jun 26, 2026 10:38am

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[tags-input] HiddenInput value frozen after mount, native form submit sends stale value

1 participant