main
js 40 lines 1014 Bytes
Raw
1 'use client';
2
3 import * as React from 'react';
4 import Container from './Container.js';
5
6 export function Navigate() {
7 /** Repro for https://issues.chromium.org/u/1/issues/419746417 */
8 function provokeChromeCrash() {
9 React.startTransition(async () => {
10 console.log('Default transition triggered');
11
12 await new Promise(resolve => {
13 setTimeout(
14 () => {
15 history.pushState(
16 {},
17 '',
18 `?chrome-crash-419746417=${performance.now()}`
19 );
20 },
21 // This needs to happen before React's default transition indicator
22 // is displayed but after it's scheduled.
23 100 + -50
24 );
25
26 setTimeout(() => {
27 console.log('Default transition completed');
28 resolve();
29 }, 1000);
30 });
31 });
32 }
33
34 return (
35 <Container>
36 <h2>Navigation fixture</h2>
37 <button onClick={provokeChromeCrash}>Provoke Chrome Crash (fixed)</button>
38 </Container>
39 );
40 }