diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 001a22e98da6f6b9223c7c64556d8a3daf24cf65..f4c3479c7d6c3abaf3c079bd9b3484df22e3688b 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -147,7 +147,7 @@ const EmojiInput = {
     input.elm.addEventListener('keydown', this.onKeyDown)
     input.elm.addEventListener('click', this.onClickInput)
     input.elm.addEventListener('transitionend', this.onTransition)
-    input.elm.addEventListener('compositionupdate', this.onCompositionUpdate)
+    input.elm.addEventListener('input', this.onInput)
   },
   unmounted () {
     const { input } = this
@@ -159,7 +159,7 @@ const EmojiInput = {
       input.elm.removeEventListener('keydown', this.onKeyDown)
       input.elm.removeEventListener('click', this.onClickInput)
       input.elm.removeEventListener('transitionend', this.onTransition)
-      input.elm.removeEventListener('compositionupdate', this.onCompositionUpdate)
+      input.elm.removeEventListener('input', this.onInput)
     }
   },
   methods: {
@@ -406,12 +406,6 @@ const EmojiInput = {
       this.resize()
       this.$emit('input', e.target.value)
     },
-    onCompositionUpdate (e) {
-      this.showPicker = false
-      this.setCaret(e)
-      this.resize()
-      this.$emit('input', e.target.value)
-    },
     onClickInput (e) {
       this.showPicker = false
     },
diff --git a/test/unit/specs/components/emoji_input.spec.js b/test/unit/specs/components/emoji_input.spec.js
index b1b988021ea292d09d325947c164a7aa52e57212..045b47fdde998e514b74fd1170de31680ccf0dab 100644
--- a/test/unit/specs/components/emoji_input.spec.js
+++ b/test/unit/specs/components/emoji_input.spec.js
@@ -36,7 +36,8 @@ describe('EmojiInput', () => {
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
       wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
-      expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
+      const inputEvents = wrapper.emitted().input
+      expect(inputEvents[inputEvents.length - 1][0]).to.eql('Testing (test) ')
     })
 
     it('inserts string at the end with trailing space (source has a trailing space)', () => {
@@ -46,7 +47,8 @@ describe('EmojiInput', () => {
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
       wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
-      expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
+      const inputEvents = wrapper.emitted().input
+      expect(inputEvents[inputEvents.length - 1][0]).to.eql('Testing (test) ')
     })
 
     it('inserts string at the begginning without leading space', () => {
@@ -56,7 +58,8 @@ describe('EmojiInput', () => {
       input.setValue(initialString)
       wrapper.setData({ caret: 0 })
       wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
-      expect(wrapper.emitted().input[0][0]).to.eql('(test) Testing')
+      const inputEvents = wrapper.emitted().input
+      expect(inputEvents[inputEvents.length - 1][0]).to.eql('(test) Testing')
     })
 
     it('inserts string between words without creating extra spaces', () => {
@@ -66,7 +69,8 @@ describe('EmojiInput', () => {
       input.setValue(initialString)
       wrapper.setData({ caret: 6 })
       wrapper.vm.insert({ insertion: ':ebin:', keepOpen: false })
-      expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
+      const inputEvents = wrapper.emitted().input
+      expect(inputEvents[inputEvents.length - 1][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
     it('inserts string between words without creating extra spaces (other caret)', () => {
@@ -76,7 +80,8 @@ describe('EmojiInput', () => {
       input.setValue(initialString)
       wrapper.setData({ caret: 7 })
       wrapper.vm.insert({ insertion: ':ebin:', keepOpen: false })
-      expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
+      const inputEvents = wrapper.emitted().input
+      expect(inputEvents[inputEvents.length - 1][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
     it('inserts string without any padding if padEmoji setting is set to false', () => {
@@ -86,7 +91,8 @@ describe('EmojiInput', () => {
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length, keepOpen: false })
       wrapper.vm.insert({ insertion: ':spam:' })
-      expect(wrapper.emitted().input[0][0]).to.eql('Eat some spam!:spam:')
+      const inputEvents = wrapper.emitted().input
+      expect(inputEvents[inputEvents.length - 1][0]).to.eql('Eat some spam!:spam:')
     })
 
     it('correctly sets caret after insertion at beginning', (done) => {