diff --git a/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js b/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js
index 235c201b880898..c41218e0648d4b 100644
--- a/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js
+++ b/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js
@@ -470,7 +470,8 @@ export default function useAutocomplete(props) {
previousProps.filteredOptions &&
previousProps.filteredOptions.length !== filteredOptions.length &&
(multiple
- ? previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val))
+ ? value.length === previousProps.value.length &&
+ previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val))
: getOptionLabel(previousProps.value ?? '') === getOptionLabel(value ?? ''))
) {
const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];
diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.test.js b/packages/mui-material/src/Autocomplete/Autocomplete.test.js
index 64543292803ba1..8558f47410902c 100644
--- a/packages/mui-material/src/Autocomplete/Autocomplete.test.js
+++ b/packages/mui-material/src/Autocomplete/Autocomplete.test.js
@@ -2822,4 +2822,57 @@ describe('', () => {
expect(container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(2);
});
});
+
+ // https://github.com/mui/material-ui/issues/36114
+ describe('deleting a tag immediately after adding it while the listbox is still open', () => {
+ it('should allow it, given that options are primitive values', () => {
+ const { container } = render(
+ }
+ />,
+ );
+
+ const textbox = screen.getByRole('combobox');
+
+ fireEvent.keyDown(textbox, { key: 'ArrowDown' });
+ fireEvent.keyDown(textbox, { key: 'ArrowDown' }); // highlight the first option...
+ fireEvent.keyDown(textbox, { key: 'Enter' }); // ...and select it
+
+ fireEvent.keyDown(textbox, { key: 'ArrowDown' }); // highlight another option
+
+ expect(container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(1);
+
+ fireEvent.keyDown(textbox, { key: 'Backspace' });
+ expect(container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(0);
+ });
+
+ it('should allow it, given that options are objects', () => {
+ const { container } = render(
+ }
+ />,
+ );
+
+ const textbox = screen.getByRole('combobox');
+
+ fireEvent.keyDown(textbox, { key: 'ArrowDown' });
+ fireEvent.keyDown(textbox, { key: 'ArrowDown' }); // highlight the first option...
+ fireEvent.keyDown(textbox, { key: 'Enter' }); // ...and select it
+
+ fireEvent.keyDown(textbox, { key: 'ArrowDown' }); // highlight another option
+
+ expect(container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(1);
+
+ fireEvent.keyDown(textbox, { key: 'Backspace' });
+ expect(container.querySelectorAll(`.${chipClasses.root}`)).to.have.length(0);
+ });
+ });
});