HMR with Fast Refresh
HMR (Hot Module Replacement) allows you update an Aleph.js application without refreshing the page, when in development. Any change instantly updates the page.
How It Works
Aleph.js's built-in HMR module creates a WS connection to the dev server on the client during development, and the server listens for file changes. Once the HMR client gets an update signal from the server, Aleph.js will re-import the updated module.
For a CSS module, the old style will be removed after the new one is applied. For a React Component, Fast Refresh will re-render the component view without losing component state.
Aleph.js supports full HMR out-of-the-box for the following served files:
- JSX/TSX in
pages
andcomponents
directory - Markdown in
pages
directory - CSS/Less
- Sass, CSS Modules, etc (in the planning)
What Is Fast Refresh
It's a reimplementation of "hot reloading" with full support from React. It's originally shipped for React Native, but most of the implementation is platform-independent. The plan is to use it across the board, as a replacement for purely userland solutions (like react-hot-loader). ยน
Limits
- Fast Refresh only supports functional components with hooks.
- Functional components using default exports must be named:
export default function ComponentName() { ... }
.