diff --git a/.eslintignore b/.eslintignore
index 4a8a795d..0d0b9694 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,2 +1,3 @@
.eslintrc*.js
-out/
\ No newline at end of file
+out/
+coverage/
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
index 89f9ac04..2ce3d7c5 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1 +1,2 @@
out/
+coverage/
\ No newline at end of file
diff --git a/src/panel/App.tsx b/src/panel/App.tsx
index c296e5cf..0189de2c 100644
--- a/src/panel/App.tsx
+++ b/src/panel/App.tsx
@@ -1,6 +1,6 @@
import { Box, Stack } from '@mui/material'
import * as React from 'react'
-import { useEffect, useReducer } from 'react'
+import { useLayoutEffect, useReducer } from 'react'
import * as Requests from './requests'
@@ -10,7 +10,7 @@ const App = () => {
[]
)
- useEffect(() => {
+ useLayoutEffect(() => {
Requests.listen()
const unsubscribe = Requests.subscribe((req) => {
pushRequest(req)
diff --git a/src/panel/index.tsx b/src/panel/index.tsx
index bd3aa2c9..8963310e 100644
--- a/src/panel/index.tsx
+++ b/src/panel/index.tsx
@@ -3,8 +3,17 @@ import '@fontsource/roboto/400.css'
import '@fontsource/roboto/500.css'
import '@fontsource/roboto/700.css'
import * as React from 'react'
-import * as ReactDOM from 'react-dom'
+import { render, unmountComponentAtNode } from 'react-dom'
import App from './App'
-ReactDOM.render(, document.getElementById('app'))
+const container = document.getElementById('app')
+if (container === null) {
+ throw new Error('could not find #app container element')
+}
+
+render(, container)
+
+window.addEventListener('beforeunload', () => {
+ unmountComponentAtNode(container)
+})