Hot Reload: हॉट रीलोड और यह डेवलपमेंट को कैसे तेज़ करता है

लेखक: IT Sectr प्रकाशित: 2026-07-03 पढ़ने का समय: 10 मिनट

Hot Reload एक ऐसी तकनीक है जिसमें स्रोत कोड में बदलाव बिना पूर्ण पेज रीलोड और बिना वर्तमान स्थिति खोए चल रहे एप्लिकेशन पर लागू होते हैं। Live Reload के विपरीत, जो पूरे पेज को रीफ्रेश करता है, हॉट रीलोड केवल बदले गए मॉड्यूल को तुरंत बदलता है। Webpack, 2024 के अनुसार, Hot Module Replacement (HMR) कंपोनेंट स्थिति को संरक्षित करके डेवलपमेंट चक्र समय को 80% तक कम करता है।

मुख्य बिंदु

  • Hot Reload बिना एप्लिकेशन रीलोड किए या स्थिति खोए कोड परिवर्तनों को तुरंत लागू करने की तकनीक है।
  • कंपोनेंट की स्थिति हॉट रीलोड के दौरान संरक्षित रहती है — फॉर्म डेटा, स्क्रॉल, खुली मॉडल विंडो।
  • HMR (Hot Module Replacement) Webpack, Vite और अन्य बंडलर्स में Hot Reload का कार्यान्वयन है।
  • React Fast Refresh React के लिए आधिकारिक कार्यान्वयन है, जो फंक्शनल कंपोनेंट और हुक्स को सपोर्ट करता है।
  • डेवलपमेंट उत्पादकता कोड बदलने और परिणाम देखने के बीच के समय को कम करके बढ़ती है।

Hot Reload क्या है?

Hot Reload एक डेवलपमेंट तंत्र है जिसमें स्रोत फ़ाइलों में बदलाव बिना एप्लिकेशन को पुनरारंभ किए चल रहे एप्लिकेशन में तुरंत दिखाई देते हैं। डेवलपर एडिटर में कोड संपादित करता है, फ़ाइल सहेजता है, और परिणाम तुरंत ब्राउज़र या एमुलेटर में दिखाई देता है।

इस तकनीक की मुख्य विशेषता एप्लिकेशन स्थिति का संरक्षण है। मेमोरी में वेरिएबल, फॉर्म में डेटा, वर्तमान नेविगेशन — सब कुछ अपनी जगह पर रहता है। डेवलपर को आवश्यक स्क्रीन पर वापस जाने के लिए क्रियाओं के क्रम को दोहराने की आवश्यकता नहीं है।

वेब डेवलपमेंट में, Hot Reload Hot Module Replacement (HMR) तंत्र के माध्यम से कार्यान्वित किया जाता है। बंडलर फ़ाइल परिवर्तनों की निगरानी करता है, प्रभावित मॉड्यूल निर्धारित करता है, और WebSocket के माध्यम से ब्राउज़र को अपडेटेड कोड भेजता है। ब्राउज़र बिना पेज रीलोड किए केवल उन मॉड्यूल को बदलता है।

Hot Reload की लोकप्रियता सिंगल-पेज एप्लिकेशन (SPA) के प्रसार के साथ बढ़ी, जहां पूर्ण पेज रीलोड क्लाइंट एप्लिकेशन की सभी स्थिति को नष्ट कर देता है। React, Vue, Angular और अन्य फ्रेमवर्क HMR को प्राथमिक डेवलपमेंट मोड के रूप में सुझाते हैं।

बंडलर के अंदर HMR कैसे काम करता है

HMR तंत्र चार चरणों से बना है। सर्वर साइड पर बंडलर बदले गए मॉड्यूल को कंपाइल करता है, कोड के नए संस्करण के साथ JSON पैच बनाता है, और इसे WebSocket कनेक्शन के माध्यम से ब्राउज़र को भेजता है। ब्राउज़र-साइड HMR रनटाइम पैच प्राप्त करता है, पुराने मॉड्यूल को नए से बदलता है, और मॉड्यूल के सब्सक्राइबर्स को सूचित करता है।

कंपाइलेशन और भेजने का चरण

Webpack Dev Server क्लाइंट के साथ संवाद करने के लिए WebSocket का उपयोग करता है। जब कोई फ़ाइल बदलती है, बंडलर परिवर्तनों के मेनिफेस्ट के साथ hot-update.js और hot-update.json बनाता है। क्लाइंट JSONP के माध्यम से इन फ़ाइलों को स्वचालित रूप से लोड करता है।

js
// webpack.config.js - HMR सेटअप
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'development',
  devServer: {
    hot: true,
    liveReload: false
  },
  plugins: [new HtmlWebpackPlugin()]
};

क्लाइंट पर मॉड्यूल लागू करना

ब्राउज़र में HMR रनटाइम जांचता है कि बदला जा रहा मॉड्यूल accept का समर्थन करता है या नहीं। यदि मॉड्यूल ने module.hot.accept() घोषित किया है, रनटाइम इसे इन-प्लेस बदलता है और अपडेट कॉलबैक चलाता है। यदि accept घोषित नहीं है, HMR पैरेंट मॉड्यूल स्तर पर वापस आ जाता है।

React Fast Refresh में, यह तर्क फ्रेमवर्क स्तर पर निर्मित है — हर फ़ाइल में मैन्युअल रूप से module.hot.accept लिखने की आवश्यकता नहीं है। Babel प्लगइन react-refresh/babel ऐसा कोड जोड़ता है जो बिना स्थिति खोए सुरक्षित रूप से कंपोनेंट बदलता है।

Hot Reload, Live Reload और Full Reload में अंतर

इन तीन शब्दों को अक्सर भ्रमित किया जाता है, लेकिन ये व्यवहार में मौलिक रूप से भिन्न हैं। Live Reload किसी भी बदलाव पर पूरे पेज को रीलोड करता है — सारी स्थिति खो जाती है। Full Reload तब होता है जब डेवलपमेंट सर्वर पूरी तरह से पुनरारंभ होता है, न केवल क्लाइंट बल्कि सर्वर स्थिति भी खो जाती है।

प्रकारपेज रीलोडस्थिति संरक्षणगति
Hot Reload (HMR)नहींहाँतत्काल
Live Reloadहाँनहीं1-3 सेकंड
Full Reloadहाँनहीं3-10 सेकंड

Hot और Live के बीच चुनाव सीधे डेवलपमेंट गति को प्रभावित करता है। HMR के साथ, “कोड संपादित करें → परिणाम देखें” चक्र में 50-200 मिलीसेकंड लगते हैं। Live Reload के साथ — 1-3 सेकंड और संदर्भ बहाली का समय। कार्य दिवस के दौरान, अंतर दसियों मिनट के बचत समय के बराबर होता है।

React Fast Refresh: React के लिए विशेषताएं

React Fast Refresh React कंपोनेंट के लिए अनुकूलित आधिकारिक Hot Reload कार्यान्वयन है। इसने पुराने React Hot Loader तंत्र को बदल दिया, जो अस्थिर था और मैन्युअल कॉन्फ़िगरेशन की आवश्यकता थी। Fast Refresh react-refresh/babel के माध्यम से Create React App, Next.js, Vite और Webpack में निर्मित है।

फंक्शनल कंपोनेंट सपोर्ट

Fast Refresh फंक्शनल कंपोनेंट की स्थिति को सही ढंग से संरक्षित करता है जब उनका कोड बदलता है। यदि आप केवल JSX मार्कअप बदलते हैं, useState और अन्य हुक अपने मान बनाए रखते हैं। यदि हुक का तर्क बदलता है, तो कंपोनेंट पुनः माउंट होता है।

js
// उदाहरण - JSX बदलने पर स्थिति संरक्षित
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>+</button>
    </div>
  );
}

सुरक्षित प्रतिस्थापन नियम

Fast Refresh स्थिति को संरक्षित नहीं करता यदि नए कोड में कंपाइलेशन त्रुटि है। यदि कंपोनेंट डिफ़ॉल्ट रूप से निर्यात नहीं किया गया है (named export), तो स्थिति भी संरक्षित नहीं हो सकती है। कंपोनेंट के लिए default export का उपयोग करने और यदि स्थिति संरक्षण की गारंटी की आवश्यकता है तो निर्यात को memo में लपेटने की अनुशंसा की जाती है।

HMR सपोर्ट वाले बिल्ड टूल्स

आधुनिक बंडलर HMR प्रदान करते हैं। Webpack devServer.hot के माध्यम से लचीले कॉन्फ़िगरेशन के साथ HMR का अग्रणी है। Vite बंडलिंग के बिना तत्काल HMR के लिए नेटिव ESM और esbuild का उपयोग करता है। Parcel जीरो-कॉन्फ़िग HMR प्रदान करता है। Turbopack Rust-आधारित HMR के साथ Vercel का नया बंडलर है।

टूलHMR प्रकारकॉन्फ़िगरेशनइकोसिस्टम
Webpack 5WebSocket के माध्यम से HMRdevServer.hot: trueReact, Vue, Angular
Viteनेटिव ESM HMRअंतर्निर्मितReact, Vue, Svelte
Parcel 2जीरो-कॉन्फ़िग HMRआवश्यक नहींReact, Vue, TS
Turbopackइंक्रीमेंटल HMRअंतर्निर्मितNext.js

Vite गति में अग्रणी है — Vite में HMR ब्राउज़र के नेटिव ES मॉड्यूल के माध्यम से काम करता है। जब कोई फ़ाइल बदलती है, Vite पूरे प्रोजेक्ट को पुनर्संकलित किए बिना केवल उस मॉड्यूल को import() के माध्यम से भेजता है। Webpack प्रत्येक मॉड्यूल को पूरी तरह से कंपाइल करता है, जो बड़े प्रोजेक्ट्स में HMR को धीमा कर देता है।

प्रोजेक्ट्स में HMR कॉन्फ़िगरेशन उदाहरण

आइए विभिन्न बंडलर्स के लिए HMR सेटअप देखें। Webpack में, devServer में hot: true सेट करना और react-refresh/babel जोड़ना आवश्यक है। Vite में, HMR किसी भी प्रीसेट के साथ अंतर्निर्मित काम करता है। Next.js में, Fast Refresh टर्बोकंपाइलर के माध्यम से डिफ़ॉल्ट रूप से सक्षम है।

React के साथ Vite

js
// vite.config.js
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  server: {
    hmr: {
      port: 3001
    }
  }
});

Fast Refresh के साथ Webpack 5

js
// webpack.config.js
const ReactRefreshWebpackPlugin =
  require('@pmmmwh/react-refresh-webpack-plugin');

module.exports = {
  mode: 'development',
  devServer: { hot: true },
  plugins: [new ReactRefreshWebpackPlugin()],
  module: {
    rules: [
      {
        test: /\.jsx?$/u,
        use: 'babel-loader'
      }
    ]
  }
};

हॉट रीलोड की सीमाएं और समस्याएं

HMR सभी परिदृश्यों में सही ढंग से काम नहीं करता है। CSS मॉड्यूल गतिशील क्लासेस के साथ लागू नहीं हो सकते हैं। ग्लोबल वेरिएबल और सिंगलटन (Redux स्टोर, राउटर) रीलोड पर रीसेट हो सकते हैं। भारी लाइब्रेरीज़ HMR पर कभी-कभी GC के बिना मॉड्यूल प्रतिस्थापन के कारण मेमोरी लीक उत्पन्न कर सकती हैं।

HMR समस्याओं का समाधान हॉट कोड को बिना साइड इफेक्ट के शुद्ध कंपोनेंट में अलग करना है। साइड इफेक्ट (WebSocket सब्सक्रिप्शन, टाइमर) को useEffect में साफ किया जाना चाहिए। Redux के लिए, sessionStorage में स्थिति सहेजने वाले persister की अनुशंसा की जाती है। CSS Modules या styled-components जैसे CSS समाधान बिना अतिरिक्त कॉन्फ़िगरेशन के HMR के साथ सही ढंग से काम करते हैं।

एक और सीमा प्रोडक्शन में डिबगिंग है: HMR जानबूझकर प्रोडक्शन बिल्ड में अक्षम किया जाता है। स्रोत कोड मिनिफ़ाइड होता है, और प्रोडक्शन में हॉट रिप्लेसमेंट असंभव है। प्रोडक्शन में त्रुटियों को डिबग करने के लिए, source maps और लॉगिंग का उपयोग करें, लेकिन HMR का नहीं।

अक्सर पूछे जाने वाले प्रश्न

Hot Reload Live Reload से कैसे अलग है?

Hot Reload बिना पेज रीलोड किए केवल बदले गए मॉड्यूल को बदलता है और स्थिति को संरक्षित करता है। Live Reload पूरे पेज को रीलोड करता है — स्थिति खो जाती है, एप्लिकेशन शुरुआती स्क्रीन से फिर से शुरू होता है।

React में Hot Reload कैसे सक्षम करें?

Create React App और Vite पर प्रोजेक्ट्स में, HMR डिफ़ॉल्ट रूप से सक्षम है। Webpack में, devServer: { hot: true } और @pmmmwh/react-refresh-webpack-plugin जोड़ना आवश्यक है। Next.js में, Fast Refresh बिना कॉन्फ़िगरेशन के काम करता है।

Hot Reload कंपोनेंट की स्थिति क्यों संरक्षित नहीं करता?

कारण है कंपाइलेशन त्रुटि नए कोड में, default के बजाय named export, हुक सिग्नेचर में बदलाव, या सीधे स्टेट म्यूटेशन। React Fast Refresh कंपोनेंट को केवल तभी सुरक्षित रूप से रीसेट करता है जब सही संचालन के लिए आवश्यक हो।

क्या Hot Reload TypeScript के साथ काम करता है?

हाँ, सभी आधुनिक बंडलर TypeScript के साथ HMR का समर्थन करते हैं। Vite TS ट्रांसपिलेशन के लिए esbuild का उपयोग करता है। Webpack ts-loader या @babel/preset-typescript के साथ babel का उपयोग करता है। Fast Refresh टाइप किए गए कंपोनेंट के साथ सही ढंग से काम करता है।

जब HMR बदलावों को अपडेट नहीं करता तो कैसे डीबग करें?

WebSocket कनेक्शन त्रुटियों के लिए ब्राउज़र कंसोल जांचें। सुनिश्चित करें कि devServer.hot: true सक्षम है। Vite के लिए, HMR पोर्ट जांचें। यदि समस्या बनी रहती है, तो पूर्ण पेज रीलोड (F5) करें और बंडलर कंसोल जांचें।

सारांश

  • Hot Reload बिना रीलोड या स्थिति खोए कोड के हॉट रिप्लेसमेंट की तकनीक है, जो आधुनिक SPA डेवलपमेंट की नींव है।
  • HMR WebSocket मॉड्यूल पैच के माध्यम से कार्यान्वित किया जाता है, बिना पूर्ण पुनर्संकलन के केवल बदली गई फ़ाइलों को बदलता है।
  • React Fast Refresh हुक और फंक्शनल कंपोनेंट के समर्थन के साथ React के लिए आधिकारिक HMR कार्यान्वयन है।
  • Vite, Webpack और Parcel HMR प्रदान करते हैं; Vite नेटिव ESM की बदौलत गति में अग्रणी है।
  • Hot Reload स्थिति को तभी संरक्षित करता है जब मॉड्यूल accept घोषित करता है या Fast Refresh का उपयोग default export के साथ किया जाता है।
  • कंपाइलेशन त्रुटियां और memo के बिना named export हॉट रिप्लेसमेंट के दौरान स्थिति रीसेट कर सकते हैं।
  • Redux और ग्लोबल स्टेट के लिए, HMR के दौरान sessionStorage में डेटा सहेजने वाले persister की अनुशंसा की जाती है।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें