HMR / Fast Refresh caveats in popular JavaScript UI frameworks
render()
in the same file as the root component🔴 DON’T
// main.jsx
const App = () => <></>
render(<App />)
🟢 DO
// main.jsx
import App from './app'
render(<App />)
// app.jsx
const App = () => <></>
export default App
🔴 DON’T
export default () => <></>
// Or
export default function () {
return <></>
}
🟢 DO
const App = () => <></>
export default App
// Or
export default function App() {
return <></>
}
solidjs/solid-refresh#12 Feature: HMR support
@refresh granular
pragma: preserves local state in child components [2]// app.jsx
// @refresh granular
import Component from './component'
const AnotherComponent = () => <></> // [2]
const App = () => (
<>
<Component />
<AnotherComponent />
Text {/* [3] */}
</>
)
// component.jsx
const Component = () => <></> // [1]
export default Component
<!-- app.svelte -->
<script>
import Component from './component.svelte'
</script>
<div>
<Component/>
Text <!-- [2] -->
</div>
<!-- component.svelte -->
<div></div> <!-- [1] -->