📖 Scenario: You are building a simple Svelte app that shows a greeting message. You want to set up a development server that automatically reloads your app when you make changes, using Hot Module Replacement (HMR).
🎯 Goal: Create a Svelte app with a development server that supports Hot Module Replacement (HMR) so that changes in your component update instantly in the browser without a full reload.
📋 What You'll Learn
Create a basic Svelte component with a greeting message
Set up a development server configuration with HMR enabled
Run the development server to see live updates on code changes
Ensure the app updates instantly without full page reload when editing
💡 Why This Matters
🌍 Real World
Developers use development servers with HMR to speed up building user interfaces by instantly seeing changes without refreshing the page.
💼 Career
Knowing how to set up and use HMR is essential for frontend developers to improve productivity and create smooth development workflows.
Progress0 / 4 steps
1
Create a basic Svelte component
Create a file named App.svelte with a <script> block that defines a variable greeting set to "Hello, Svelte!". Then add an <h1> element that displays the greeting variable.
Svelte
Hint
Use let greeting = "Hello, Svelte!"; inside the <script> block and display it inside <h1> tags.
2
Add development server configuration with HMR
Create a vite.config.js file that imports defineConfig from 'vite' and svelte from '@sveltejs/vite-plugin-svelte'. Export the default configuration using defineConfig with the svelte() plugin included to enable HMR.
Svelte
Hint
Use defineConfig to export the config and include svelte() in the plugins array.
3
Run the development server
Add a package.json script named dev that runs vite. This will start the development server with HMR enabled. Write the line "dev": "vite" inside the scripts section of package.json.
Svelte
Hint
Inside package.json, add "dev": "vite" under scripts to run the dev server.
4
Verify HMR by editing the greeting
Open App.svelte and change the greeting variable value to "Hello, Hot Module Replacement!". Save the file and observe that the browser updates the heading instantly without a full page reload.
Svelte
Hint
Update the greeting variable string and save to see live update in the browser.
Practice
(1/5)
1. What is the main purpose of the development server in a Svelte project?
easy
A. To compile the app into a production build
B. To minify the app's JavaScript files
C. To deploy the app to a web server
D. To show your app live and update it as you code
Solution
Step 1: Understand the role of the development server
The development server runs your app locally and shows live updates as you make changes.
Step 2: Differentiate from production tasks
Compiling for production, deploying, and minifying are separate steps done after development.
Final Answer:
To show your app live and update it as you code -> Option D
Quick Check:
Development server = live updates [OK]
Hint: Development server = live preview while coding [OK]
Common Mistakes:
Confusing development server with production build
Thinking it deploys the app
Assuming it minifies code automatically
2. Which command starts the Svelte development server with Hot Module Replacement (HMR)?
easy
A. npm run build
B. npm run dev
C. npm start
D. npm run serve
Solution
Step 1: Identify the standard Svelte dev command
In Svelte projects, npm run dev starts the development server with HMR enabled.
Step 2: Understand other commands
npm run build creates production files; npm start and npm run serve are not standard for Svelte dev server.
Final Answer:
npm run dev -> Option B
Quick Check:
Start dev server = npm run dev [OK]
Hint: Use npm run dev to start Svelte dev server with HMR [OK]
Common Mistakes:
Using npm run build instead of dev
Confusing npm start with npm run dev
Trying npm run serve which is not default
3. Given this Svelte component running with HMR, what happens when you change the text inside the <p> tag and save the file?
medium
A. Nothing happens until you manually refresh the browser
B. The entire page reloads and the app state resets
C. Only the changed text updates instantly without full reload
D. The app crashes due to hot reload errors
Solution
Step 1: Understand Hot Module Replacement (HMR) behavior
HMR updates only the changed parts of the app instantly without reloading the whole page.
Step 2: Apply to text change in <p> tag
Changing text inside the paragraph triggers HMR to update that text immediately, preserving app state.
Final Answer:
Only the changed text updates instantly without full reload -> Option C
Quick Check:
HMR updates changed parts instantly [OK]
Hint: HMR updates only changed parts, no full reload [OK]
Common Mistakes:
Thinking full page reload happens on every change
Believing manual refresh is needed
Assuming app crashes on text change
4. You run npm run dev but the browser does not update when you change your Svelte files. What is the most likely cause?
medium
A. The development server is not running or crashed
B. You forgot to save the file after editing
C. You used npm run build instead of npm run dev
D. Your browser cache is disabled
Solution
Step 1: Check if development server is active
If the dev server is not running or crashed, no updates or HMR can happen.
Step 2: Evaluate other options
Not saving files prevents changes but usually obvious; using build command doesn't start dev server; browser cache disabled does not stop updates.
Final Answer:
The development server is not running or crashed -> Option A
Quick Check:
Dev server running = updates work [OK]
Hint: Check if dev server is running when no updates appear [OK]
Common Mistakes:
Assuming browser cache blocks updates
Not saving files before expecting changes
Confusing build command with dev server
5. You want to keep your app state while updating styles during development. Which feature of the Svelte development server helps you achieve this?
hard
A. Hot Module Replacement (HMR)
B. Full page reload on every change
C. Production build optimization
D. Manual browser refresh
Solution
Step 1: Understand state preservation during updates
HMR updates only changed modules without reloading the whole page, preserving app state like variables and UI state.
Step 2: Contrast with other options
Full reload resets state; production build is unrelated to live updates; manual refresh loses state.
Final Answer:
Hot Module Replacement (HMR) -> Option A
Quick Check:
Keep state during updates = HMR [OK]
Hint: HMR preserves app state during live updates [OK]
Common Mistakes:
Thinking full reload keeps state
Confusing production build with dev features
Relying on manual refresh to keep state
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.