diff --git a/src/history/html5.js b/src/history/html5.js
index 37163703b..17e1c5cbe 100644
--- a/src/history/html5.js
+++ b/src/history/html5.js
@@ -3,6 +3,7 @@
 import type Router from '../index'
 import { History } from './base'
 import { cleanPath } from '../util/path'
+import { START } from '../util/route'
 import { setupScroll, handleScroll } from '../util/scroll'
 import { pushState, replaceState } from '../util/push-state'
 
@@ -16,9 +17,18 @@ export class HTML5History extends History {
       setupScroll()
     }
 
+    const initLocation = getLocation(this.base)
     window.addEventListener('popstate', e => {
       const current = this.current
-      this.transitionTo(getLocation(this.base), route => {
+
+      // Avoiding first `popstate` event dispatched in some browsers but first
+      // history route not updated since async guard at the same time.
+      const location = getLocation(this.base)
+      if (this.current === START && location === initLocation) {
+        return
+      }
+
+      this.transitionTo(location, route => {
         if (expectScroll) {
           handleScroll(router, route, current, true)
         }