Fix submit button not restored after example click#12975
Merged
freddyaboulton merged 2 commits intomainfrom Mar 6, 2026
Merged
Fix submit button not restored after example click#12975freddyaboulton merged 2 commits intomainfrom
freddyaboulton merged 2 commits intomainfrom
Conversation
Collaborator
🪼 branch checks and previews
Install Gradio from this PR pip install https://gradio-pypi-previews.s3.amazonaws.com/79a84efc85967adda7e6e4f7cba46bfa36d8250e/gradio-6.8.0-py3-none-any.whlInstall Gradio Python Client from this PR pip install "gradio-client @ git+https://github.com/gradio-app/gradio@79a84efc85967adda7e6e4f7cba46bfa36d8250e#subdirectory=client/python"Install Gradio JS Client from this PR npm install https://gradio-npm-previews.s3.amazonaws.com/79a84efc85967adda7e6e4f7cba46bfa36d8250e/gradio-client-2.1.0.tgz |
Collaborator
🦄 change detectedThis Pull Request includes changes to the following packages.
✅ Changeset approved by @freddyaboulton
|
freddyaboulton
approved these changes
Mar 6, 2026
Collaborator
freddyaboulton
left a comment
There was a problem hiding this comment.
Clean fix @hysts ! tysm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Closes: #12974
Fix submit/stop button display not being restored after clicking an example in
ChatInterfacewithrun_examples_on_click=False.The reported issue was with
run_examples_on_click=False, but the root cause is a race condition in the event handler structure that is independent of that setting. The fix addresses the underlying race for all cases.Root cause
_setup_stop_events()registered a separate handler onchatbot.example_selectthat setsubmit_btn=Falseon the textbox. The frontenddispatchloop processes multiple handlers for the same event sequentially, so:.then()as an async fire-and-forget callsubmit_btn=Falsefrom_setup_stop_events) starts immediately after in the next loop iterationWith
run_examples_on_click=False, the race consistently resulted insubmit_btn=Falsewinning (the textbox should never enter processing state at all in this case). Withrun_examples_on_click=True, the race was less likely to manifest in practice because the longer-runningsubmit_fnshifted timing, but the same structural issue existed.Changes
self.chatbot.example_selectfromevent_triggers— eliminates the separate handler, eliminating the racesubmit_btn=Falseas a.then()step in the chain (only whenrun_examples_on_click=Trueandcache_examples=False) — placed afterexample_clickedand beforesubmit_fn, keeping it in a single sequential chain so the restore always fires strictly after itevents_to_cancelfor populate-only examples (run_examples_on_click=False) — no inference runs, so no stop/cancel behavior is neededAI Disclosure
We encourage the use of AI tooling in creating PRs, but the any non-trivial use of AI needs be disclosed. E.g. if you used Claude to write a first draft, you should mention that. Trivial tab-completion doesn't need to be disclosed. You should self-review all PRs, especially if they were generated with AI.
🎯 PRs Should Target Issues
Before your create a PR, please check to see if there is an existing issue for this change. If not, please create an issue before you create this PR, unless the fix is very small.
Not adhering to this guideline will result in the PR being closed.
Testing and Formatting Your Code
PRs will only be merged if tests pass on CI. We recommend at least running the backend tests locally, please set up your Gradio environment locally and run the backed tests:
bash scripts/run_backend_tests.shPlease run these bash scripts to automatically format your code:
bash scripts/format_backend.sh, and (if you made any changes to non-Python files)bash scripts/format_frontend.sh