diff --git a/core/misc/autocomplete.es6.js b/core/misc/autocomplete.es6.js
index c747986d14..a9c4000e93 100644
--- a/core/misc/autocomplete.es6.js
+++ b/core/misc/autocomplete.es6.js
@@ -5,6 +5,9 @@
 
 (function ($, Drupal) {
   let autocomplete;
+  const inBrowser = typeof window !== 'undefined';
+  const UA = inBrowser && window.navigator.userAgent.toLowerCase();
+  const isAndroid = UA && UA.indexOf('android') > 0;
 
   /**
    * Helper splitting terms from the autocomplete value.
@@ -228,14 +231,24 @@
           $(this).data('ui-autocomplete')._renderItem =
             autocomplete.options.renderItem;
         });
-
-        // Use CompositionEvent to handle IME inputs. It requests remote server on "compositionend" event only.
-        $autocomplete.on('compositionstart.autocomplete', () => {
-          autocomplete.options.isComposing = true;
-        });
-        $autocomplete.on('compositionend.autocomplete', () => {
+        // Use CompositionEvent to handle IME inputs. It requests remote server
+        // on "compositionend" event only.
+        // Safari < 10.2 & UIWebView doesn't fire compositionend when
+        // switching focus before confirming composition choice
+        // this also fixes the issue where some browsers e.g. iOS Chrome
+        // fires "change" instead of "input" on autocomplete.
+        // @see: https://github.com/vuejs/vue/blob/v2.4.4/src/platforms/web/runtime/directives/model.js
+        $autocomplete.on('change.autocomplete', function () {
           autocomplete.options.isComposing = false;
         });
+        if (!isAndroid) {
+          $autocomplete.on('compositionstart.autocomplete', function () {
+            autocomplete.options.isComposing = true;
+          });
+          $autocomplete.on('compositionend.autocomplete', function () {
+            autocomplete.options.isComposing = false;
+          });
+        }
       }
     },
     detach(context, settings, trigger) {
diff --git a/core/misc/autocomplete.js b/core/misc/autocomplete.js
index acfaf7c787..56738803c1 100644
--- a/core/misc/autocomplete.js
+++ b/core/misc/autocomplete.js
@@ -1,12 +1,15 @@
 /**
-* DO NOT EDIT THIS FILE.
-* See the following change record for more information,
-* https://www.drupal.org/node/2815083
-* @preserve
-**/
+ * DO NOT EDIT THIS FILE.
+ * See the following change record for more information,
+ * https://www.drupal.org/node/2815083
+ * @preserve
+ **/
 
 (function ($, Drupal) {
   var autocomplete;
+  var inBrowser = typeof window !== 'undefined';
+  var UA = inBrowser && window.navigator.userAgent.toLowerCase();
+  var isAndroid = UA && UA.indexOf('android') > 0;
 
   function autocompleteSplitValues(value) {
     var result = [];
@@ -126,12 +129,17 @@
         $autocomplete.autocomplete(autocomplete.options).each(function () {
           $(this).data('ui-autocomplete')._renderItem = autocomplete.options.renderItem;
         });
-        $autocomplete.on('compositionstart.autocomplete', function () {
-          autocomplete.options.isComposing = true;
-        });
-        $autocomplete.on('compositionend.autocomplete', function () {
+        $autocomplete.on('change.autocomplete', function () {
           autocomplete.options.isComposing = false;
         });
+        if (!isAndroid) {
+          $autocomplete.on('compositionstart.autocomplete', function () {
+            autocomplete.options.isComposing = true;
+          });
+          $autocomplete.on('compositionend.autocomplete', function () {
+            autocomplete.options.isComposing = false;
+          });
+        }
       }
     },
     detach: function detach(context, settings, trigger) {
@@ -160,4 +168,4 @@
     }
   };
   Drupal.autocomplete = autocomplete;
-})(jQuery, Drupal);
\ No newline at end of file
+})(jQuery, Drupal);
