diff --git a/src/client/components/autocomplete.vue b/src/client/components/autocomplete.vue
index 7f4b565723..476be8ae78 100644
--- a/src/client/components/autocomplete.vue
+++ b/src/client/components/autocomplete.vue
@@ -122,6 +122,7 @@ export default defineComponent({
 			users: [],
 			hashtags: [],
 			emojis: [],
+			items: [],
 			select: -1,
 			emojilist,
 			emojiDb: [] as EmojiDef[]
@@ -129,10 +130,6 @@ export default defineComponent({
 	},
 
 	computed: {
-		items(): HTMLCollection {
-			return (this.$refs.suggests as Element).children;
-		},
-
 		useOsNativeEmojis(): boolean {
 			return this.$store.state.device.useOsNativeEmojis;
 		}
@@ -148,6 +145,7 @@ export default defineComponent({
 
 	updated() {
 		this.setPosition();
+		this.items = (this.$refs.suggests as Element | undefined)?.children || [];
 	},
 
 	mounted() {
@@ -371,6 +369,7 @@ export default defineComponent({
 
 		selectNext() {
 			if (++this.select >= this.items.length) this.select = 0;
+			if (this.items.length === 0) this.select = -1;
 			this.applySelect();
 		},
 
@@ -384,8 +383,10 @@ export default defineComponent({
 				el.removeAttribute('data-selected');
 			}
 
-			this.items[this.select].setAttribute('data-selected', 'true');
-			(this.items[this.select] as any).focus();
+			if (this.select !== -1) {
+				this.items[this.select].setAttribute('data-selected', 'true');
+				(this.items[this.select] as any).focus();
+			}
 		},
 
 		chooseUser() {