<Link href="#hash"> hashchange </Link>
というリンクをクリックしてhashを変化させた時、
window.addEventListener('hashchange', () => { console.log('hashchange!'); });
と、設定したハッシュチェンジイベントが発火せずにとても困っていました。
※ next 10.1.3にて確認
手っ取り早い解決策として、
<a href="#hash">hashchange</a>
か、
<a onClick={ () => location.hash = 'hash' }> hashchange </a>
という感じでaタグに置き換えたら無事に動作するようになりました。
Nuxt.jsでも同じことが起こったので、そういう仕様なのかもしれないです。
そもそも、内部的にはpushStateを使ってそうですし。
このissueをみるに、やはりpushStateを使っているのでhashchangeイベントは使えないみたいですね。