<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mahesh Galange</title>
    <description>The latest articles on DEV Community by Mahesh Galange (@maheshg_11).</description>
    <link>https://dev.to/maheshg_11</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2764216%2Fd4845d32-2d07-48b7-99c1-21c23c674cfe.jpg</url>
      <title>DEV Community: Mahesh Galange</title>
      <link>https://dev.to/maheshg_11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maheshg_11"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Mahesh Galange</dc:creator>
      <pubDate>Thu, 26 Mar 2026 07:26:41 +0000</pubDate>
      <link>https://dev.to/maheshg_11/-oek</link>
      <guid>https://dev.to/maheshg_11/-oek</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f" class="crayons-story__hidden-navigation-link"&gt;🚀 DevScope — Understanding Your Codebase Dependencies Like Never Before&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/maheshg_11" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2764216%2Fd4845d32-2d07-48b7-99c1-21c23c674cfe.jpg" alt="maheshg_11 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/maheshg_11" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Mahesh Galange
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Mahesh Galange
                
              
              &lt;div id="story-author-preview-content-3407375" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/maheshg_11" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2764216%2Fd4845d32-2d07-48b7-99c1-21c23c674cfe.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Mahesh Galange&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f" id="article-link-3407375"&gt;
          🚀 DevScope — Understanding Your Codebase Dependencies Like Never Before
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/npm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;npm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cli"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cli&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>npm</category>
      <category>cli</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🚀 DevScope — Understanding Your Codebase Dependencies Like Never Before</title>
      <dc:creator>Mahesh Galange</dc:creator>
      <pubDate>Thu, 26 Mar 2026 07:14:21 +0000</pubDate>
      <link>https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f</link>
      <guid>https://dev.to/maheshg_11/devscope-understanding-your-codebase-dependencies-like-never-before-4j4f</guid>
      <description>&lt;p&gt;In large projects, dependencies grow quickly.&lt;/p&gt;

&lt;p&gt;Because of reusable components, shared utilities, and modular architecture, it becomes hard to answer a simple question:&lt;/p&gt;

&lt;p&gt;👉 “If I change this file, what else will it affect?”&lt;/p&gt;

&lt;p&gt;I faced this problem multiple times while working on real projects.&lt;br&gt;
So I decided to build something to solve it.&lt;/p&gt;

&lt;p&gt;That’s how DevScope was born.&lt;/p&gt;

&lt;p&gt;🧩 The Problem&lt;/p&gt;

&lt;p&gt;As projects scale:&lt;/p&gt;

&lt;p&gt;Files become interconnected&lt;br&gt;
Imports grow complex&lt;br&gt;
Refactoring becomes risky&lt;/p&gt;

&lt;p&gt;Even a small change can break multiple parts of the application—and you may not even realize it.&lt;/p&gt;

&lt;p&gt;💡 The Solution&lt;/p&gt;

&lt;p&gt;DevScope is a lightweight CLI tool that:&lt;/p&gt;

&lt;p&gt;Builds a dependency graph of your project&lt;br&gt;
Tracks relationships between files&lt;br&gt;
Identifies impacted files instantly&lt;br&gt;
⚡ Getting Started&lt;/p&gt;

&lt;p&gt;Install globally:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g @maheshdev/dev-scope&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Run inside your project:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dev-scope analyze&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This generates a clean dependency tree:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/index.ts
  ├── src/commands/overview.ts
  ├── src/commands/impact.ts
  └── src/commands/analyze.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔍 Impact Analysis&lt;/p&gt;

&lt;p&gt;Want to know what breaks if you change a file?&lt;br&gt;
&lt;code&gt;dev-scope impact &amp;lt;file_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dev-scope impact src/graph/buildGraph.ts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Affected:
  ├── src/commands/analyze.ts
  ├── src/index.ts
  ├── src/commands/impact.ts
  └── src/commands/overview.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is extremely useful before refactoring.&lt;/p&gt;

&lt;p&gt;📊 Project Insights&lt;/p&gt;

&lt;p&gt;You can also run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dev-scope overview&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This gives insights like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total files &amp;amp; dependencies
Leaf files (no dependencies)
Most used files
Unused files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 How It Works (Simplified)&lt;/p&gt;

&lt;p&gt;At its core, DevScope uses two main ideas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dependency Graph&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each file is treated as a node.&lt;br&gt;
Imports between files create edges.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;A → B → C&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;p&gt;A depends on B&lt;br&gt;
B depends on C&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reverse Traversal (DFS)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To find impacted files:&lt;/p&gt;

&lt;p&gt;Start from the changed file&lt;br&gt;
Traverse backwards through dependencies&lt;br&gt;
Collect all files that depend on it&lt;/p&gt;

&lt;p&gt;This is done using Depth First Search (DFS).&lt;/p&gt;

&lt;p&gt;🎯 Why I Built This&lt;/p&gt;

&lt;p&gt;While working on projects, I often struggled with:&lt;/p&gt;

&lt;p&gt;Understanding large codebases quickly&lt;br&gt;
Safe refactoring&lt;br&gt;
Identifying unused files&lt;/p&gt;

&lt;p&gt;I wanted something:&lt;/p&gt;

&lt;p&gt;Simple&lt;br&gt;
Fast&lt;br&gt;
No UI overhead&lt;br&gt;
Just works in terminal&lt;br&gt;
⚙️ Tech Stack&lt;br&gt;
TypeScript&lt;br&gt;
Node.js&lt;br&gt;
Commander (CLI)&lt;br&gt;
🚀 Try It Yourself&lt;br&gt;
&lt;code&gt;npm install -g @maheshdev/dev-scope&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start exploring your codebase:&lt;/p&gt;

&lt;p&gt;dev-scope analyze&lt;br&gt;
dev-scope impact &lt;br&gt;
🔮 What’s Next&lt;/p&gt;

&lt;p&gt;I’m planning to improve:&lt;/p&gt;

&lt;p&gt;More language support&lt;br&gt;
Better visualization&lt;br&gt;
Performance optimizations&lt;br&gt;
🤝 Feedback&lt;/p&gt;

&lt;p&gt;This is just the beginning.&lt;br&gt;
If you try it, I’d love to hear your thoughts!&lt;/p&gt;

</description>
      <category>npm</category>
      <category>cli</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Mahesh Galange</dc:creator>
      <pubDate>Fri, 02 May 2025 05:21:58 +0000</pubDate>
      <link>https://dev.to/maheshg_11/-3mga</link>
      <guid>https://dev.to/maheshg_11/-3mga</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn" class="crayons-story__hidden-navigation-link"&gt;Mastering Custom Hooks in React – A Beginner’s Guide 🪝&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/maheshg_11" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2764216%2Fd4845d32-2d07-48b7-99c1-21c23c674cfe.jpg" alt="maheshg_11 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/maheshg_11" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Mahesh Galange
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Mahesh Galange
                
              
              &lt;div id="story-author-preview-content-2386260" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/maheshg_11" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2764216%2Fd4845d32-2d07-48b7-99c1-21c23c674cfe.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Mahesh Galange&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 6 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn" id="article-link-2386260"&gt;
          Mastering Custom Hooks in React – A Beginner’s Guide 🪝
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/frontend"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;frontend&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/customhooks"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;customhooks&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>react</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>customhooks</category>
    </item>
    <item>
      <title>Mastering Custom Hooks in React – A Beginner’s Guide 🪝</title>
      <dc:creator>Mahesh Galange</dc:creator>
      <pubDate>Sun, 06 Apr 2025 15:03:55 +0000</pubDate>
      <link>https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn</link>
      <guid>https://dev.to/maheshg_11/mastering-custom-hooks-in-react-a-beginners-guide-26nn</guid>
      <description>&lt;p&gt;&lt;strong&gt;📌 Table of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What Are Custom Hooks?&lt;/li&gt;
&lt;li&gt;Why Use Custom Hooks?&lt;/li&gt;
&lt;li&gt;How to Create One – Example&lt;/li&gt;
&lt;li&gt;Best Practices &amp;amp; Common Mistakes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;🧠 What Are Custom Hooks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Hooks&lt;/strong&gt; are JavaScript functions that start with the word &lt;strong&gt;use&lt;/strong&gt; and &lt;strong&gt;allow you to extract component logic into reusable functions&lt;/strong&gt;. They use React’s built-in hooks (like useState, useEffect) under the hood and follow the same rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍 Why Use Custom Hooks?&lt;/strong&gt;&lt;br&gt;
Here’s what you gain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;♻️ &lt;strong&gt;Reusability&lt;/strong&gt;: Share logic across multiple components&lt;/li&gt;
&lt;li&gt;🧼 &lt;strong&gt;Cleaner Code&lt;/strong&gt;: Keep your components focused on UI&lt;/li&gt;
&lt;li&gt;🧩 &lt;strong&gt;Composability&lt;/strong&gt;: Combine multiple hooks into one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💡 How to Create One – Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s create a custom hook called useLocalStorage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useState, useEffect } from 'react';

function useLocalStorage(key, initialValue) {
  const [value, setValue] = useState(() =&amp;gt; {
    const stored = localStorage.getItem(key);
    return stored ? JSON.parse(stored) : initialValue;
  });

  useEffect(() =&amp;gt; {
    localStorage.setItem(key, JSON.stringify(value));
  }, [key, value]);

  return [value, setValue];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;✅ Usage:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function ThemeToggle() {
  const [theme, setTheme] = useLocalStorage('theme', 'light');

  return (
    &amp;lt;button onClick={() =&amp;gt; setTheme(theme === 'light' ? 'dark' : 'light')}&amp;gt;
      Switch to {theme === 'light' ? 'dark' : 'light'} mode
    &amp;lt;/button&amp;gt;
  );
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;✨ Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s a wrap on custom hooks! They’re powerful, reusable, and help keep your code clean and modular. I hope this guide helps you create your own and apply them confidently in your React projects.&lt;/p&gt;

&lt;p&gt;This was &lt;strong&gt;&lt;em&gt;my first blog&lt;/em&gt;&lt;/strong&gt;—if you liked it or found it helpful, feel free to connect or share your feedback! &lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>customhooks</category>
    </item>
  </channel>
</rss>
