<?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: Hardik Gohil</title>
    <description>The latest articles on DEV Community by Hardik Gohil (@hardikgohilhlr).</description>
    <link>https://dev.to/hardikgohilhlr</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%2F977807%2Fd83a0f62-990f-4b95-b759-89e02b111060.jpeg</url>
      <title>DEV Community: Hardik Gohil</title>
      <link>https://dev.to/hardikgohilhlr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hardikgohilhlr"/>
    <language>en</language>
    <item>
      <title>2 Months of Startups Lab: The Journey So Far</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sun, 06 Jul 2025 08:05:22 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/2-months-of-startups-lab-the-journey-so-far-ch0</link>
      <guid>https://dev.to/hardikgohilhlr/2-months-of-startups-lab-the-journey-so-far-ch0</guid>
      <description>&lt;p&gt;Two months ago, I hit &lt;strong&gt;launch&lt;/strong&gt; on Startups Lab with a simple mission:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 Give every builder a fair shot at visibility.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No gatekeeping. No expensive ad budgets. Just a place to showcase great products. Since then, &lt;a href="https://startupslab.site" rel="noopener noreferrer"&gt;&lt;strong&gt;Startups Lab&lt;/strong&gt;&lt;/a&gt; has become a little hub for indie makers, early-stage founders, and side project enthusiasts.&lt;/p&gt;

&lt;p&gt;Here's what the first 60 days looked like and where we're headed.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ What We've Achieved So Far
&lt;/h2&gt;

&lt;p&gt;-- 200+ &lt;a href="https://startupslab.site/products" rel="noopener noreferrer"&gt;products&lt;/a&gt; submitted&lt;br&gt;
-- 7000+ page views from around the world&lt;br&gt;
-- 200+ active founders sharing their work&lt;br&gt;
-- 100+ total products live on the platform&lt;br&gt;
-- Countless connections and collaborations started in DMs&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Every week, I get messages from founders saying things like:&lt;br&gt;
"Someone discovered us here and became a paying customer",&lt;br&gt;
or&lt;br&gt;
"This is the first platform where I felt like my product wasn't just lost in a sea of noise".&lt;/p&gt;

&lt;p&gt;That's exactly why I built &lt;a href="https://startupslab.site" rel="noopener noreferrer"&gt;Startups Lab&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 Features That Make It Work
&lt;/h2&gt;

&lt;p&gt;Here's what you can use today:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Product Listings&lt;/strong&gt;&lt;br&gt;
Publish your startup, side project, or SaaS. Each listing includes screenshots, links, and a short pitch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Spotlight Section&lt;/strong&gt;&lt;br&gt;
If you want to get extra attention, you can feature your product at the top of the homepage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧭 Categories &amp;amp; Filters&lt;/strong&gt;&lt;br&gt;
Browse products by &lt;a href="https://startupslab.site/categories" rel="noopener noreferrer"&gt;category&lt;/a&gt; (AI, SaaS, Marketing, Productivity) and discover hidden gems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👤 Founder Profiles&lt;/strong&gt;&lt;br&gt;
Add your profile so visitors know who is behind each product - building trust and authenticity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📨 Weekly Newsletter&lt;/strong&gt;&lt;br&gt;
Subscribers get updates about new launches, featured tools, and useful resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📈 Metrics&lt;/strong&gt;&lt;br&gt;
See how many views your product gets and track interest over time.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💸 Transparent Pricing
&lt;/h2&gt;

&lt;p&gt;I always wanted Startups Lab to be accessible. Here's how it works:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Free Plan&lt;/strong&gt; &lt;br&gt;
-- Anyone can submit and get listed.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Premium Spotlight&lt;/strong&gt;&lt;br&gt;
-- Your product stays pinned in the Spotlight carousel.&lt;br&gt;
-- Featured in the newsletter.&lt;br&gt;
-- Shared on Startups Lab social channels.&lt;br&gt;
-- Perfect for teams who want maximum visibility from day one.&lt;/p&gt;

&lt;p&gt;No hidden fees. No complicated tiers. Just clear, upfront &lt;a href="https://startupslab.site/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt; that even bootstrapped founders can afford.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Why I Started This
&lt;/h2&gt;

&lt;p&gt;I've been in your shoes - building things alone, trying to get traction, wondering if anyone will care. Most directories are either outdated or charge crazy fees just to list your product.&lt;/p&gt;

&lt;p&gt;I wanted to build something different:&lt;br&gt;
✅ &lt;strong&gt;Modern&lt;/strong&gt;&lt;br&gt;
✅ &lt;strong&gt;Supportive&lt;/strong&gt;&lt;br&gt;
✅ &lt;strong&gt;Community - driven&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A place where you don't have to beg to be seen.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌱 The Road Ahead
&lt;/h2&gt;

&lt;p&gt;I believe that small makers, indie hackers, and solopreneurs are shaping the future of tech.&lt;/p&gt;

&lt;p&gt;If Startups Lab can help you get your first users or your first bit of recognition, that's a win.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Ready to List Your Product?
&lt;/h2&gt;

&lt;p&gt;If you haven't yet, this is your sign:&lt;br&gt;
👉 &lt;a href="https://startupslab.site/submit-product" rel="noopener noreferrer"&gt;Submit Your Product&lt;/a&gt; Now&lt;/p&gt;

&lt;p&gt;Let's keep building. Let's keep supporting each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The next two months will be even better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I would love to hear your feedback! Let me know what you think, and if there's something you would like to see added, feel free to reach out.&lt;/p&gt;




&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;

</description>
      <category>marketing</category>
      <category>saas</category>
      <category>javascript</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Startups Lab - Your Product Launchpad for Visibility and Growth</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Mon, 19 May 2025 16:42:20 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/startups-lab-your-product-launchpad-for-visibility-and-growth-8k1</link>
      <guid>https://dev.to/hardikgohilhlr/startups-lab-your-product-launchpad-for-visibility-and-growth-8k1</guid>
      <description>&lt;p&gt;Hey Devs, SaaS Builders, and Indie Hackers 👋&lt;/p&gt;

&lt;p&gt;Are you building something awesome?&lt;/p&gt;

&lt;p&gt;Whether it's a dev tool, a micro-SaaS, or the next big agency solution - launching it is half the battle. Getting the right visibility, backlinks, and users is the real challenge.&lt;/p&gt;

&lt;p&gt;Enter &lt;a href="https://startupslab.site" rel="noopener noreferrer"&gt;Startups Lab&lt;/a&gt; - a product launch platform crafted by a creator, for creators.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 Why Startups Lab?
&lt;/h2&gt;

&lt;p&gt;We built Startups Lab to help devs and indie founders like you:&lt;/p&gt;

&lt;p&gt;🚀 &lt;a href="https://startupslab.site/submit-product" rel="noopener noreferrer"&gt;Launch your product&lt;/a&gt; with ease&lt;br&gt;
🌐 Reach your ideal audience&lt;br&gt;
🔗 Gain SEO boosting backlinks&lt;br&gt;
💬 Get feedback from fellow makers&lt;br&gt;
📈 Grow faster with structured visibility&lt;/p&gt;

&lt;p&gt;It's more than a launch platform - it's a visibility engine.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What Makes Us Different?
&lt;/h2&gt;

&lt;p&gt;✨ &lt;strong&gt;Homepage Spotlight&lt;/strong&gt;&lt;br&gt;
Shine on our homepage and get discovered by the right crowd.&lt;/p&gt;

&lt;p&gt;💌 &lt;strong&gt;Newsletter Feature&lt;/strong&gt;&lt;br&gt;
Land in the inboxes of 100+ engaged subscribers looking for new tools every week.&lt;/p&gt;

&lt;p&gt;📊 &lt;strong&gt;Tiers That Fit You&lt;/strong&gt;&lt;br&gt;
From free launches to pinned top spots - pick what fits your budget and goals.&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Built for Speed&lt;/strong&gt;&lt;br&gt;
Submit your product in minutes. Get reviewed within 10-12 hours. Go live faster.&lt;/p&gt;

&lt;p&gt;🔧 &lt;strong&gt;Tech-Driven&lt;/strong&gt;&lt;br&gt;
Powered by Next.js, Supabase, and Tailwind CSS - designed for scale and performance.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Perks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;Homepage for 7 days, direct traffic, basic support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Premium&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$3-$5&lt;/td&gt;
&lt;td&gt;+ Email newsletter, priority support, dedicated product page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Top Rank&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$5-$9&lt;/td&gt;
&lt;td&gt;+ Pinned homepage slot, dofollow backlinks, VIP support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;👉 View Full &lt;a href="https://startupslab.site/pricing" rel="noopener noreferrer"&gt;Pricing Breakdown&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧭 How It Works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Submit Your Product&lt;/strong&gt;&lt;br&gt;
Add your logo, website, description, category, and plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Review &amp;amp; Approve&lt;/strong&gt;&lt;br&gt;
We review it manually (within 10-12 hours).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go Live!&lt;/strong&gt;&lt;br&gt;
Your product launches with all selected perks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grow &amp;amp; Engage&lt;/strong&gt;&lt;br&gt;
Attract users, collect feedback, and scale.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://startupslab.site/submit-product" rel="noopener noreferrer"&gt;Submit Your Product Now&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💥 Boost Visibility with Ads
&lt;/h2&gt;

&lt;p&gt;Want to dominate attention?&lt;/p&gt;

&lt;p&gt;$3/day (All Pages) – Homepage + &lt;a href="https://startupslab.site/products" rel="noopener noreferrer"&gt;product listings&lt;/a&gt; + detail pages&lt;br&gt;
$2/day (Targeted Reach) - Only on product detail pages&lt;br&gt;
3-5 exclusive ad slots available per day for max visibility&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🗳 How Voting Works
&lt;/h2&gt;

&lt;p&gt;We keep it fair and fun:&lt;/p&gt;

&lt;p&gt;Votes reset at the end of each launch cycle&lt;br&gt;
Top Ranking products keep their votes during renewals (up to 3x)&lt;br&gt;
Your product earns visibility as it earns love from the community&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ Our Vision
&lt;/h2&gt;

&lt;p&gt;We're building &lt;a href="https://startupslab.site/" rel="noopener noreferrer"&gt;Startups Lab&lt;/a&gt; to empower creators around the world.&lt;/p&gt;

&lt;p&gt;Whether you're a weekend hacker or a full-time founder, you deserve a launchpad that cares.&lt;/p&gt;

&lt;p&gt;We don't just host links - we give your product a stage.&lt;/p&gt;



&lt;br&gt;
🔗 Ready to share your product with the world?&lt;br&gt;
👉 &lt;a href="https://startupslab.site/submit-product" rel="noopener noreferrer"&gt;Submit it now&lt;/a&gt; at Startups Lab and let your work shine.&lt;br&gt;
&lt;br&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I'd love to hear your feedback! Let me know what you think, and if there's something you'd like to see added, feel free to reach out.&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;X (Twitter): &lt;a href="https://x.com/GohilHardy" rel="noopener noreferrer"&gt;https://x.com/GohilHardy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>startup</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>StackSync: The Open-Source Tech Stack Explorer</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sun, 02 Mar 2025 06:17:40 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/stacksync-the-open-source-tech-stack-explorer-4j9f</link>
      <guid>https://dev.to/hardikgohilhlr/stacksync-the-open-source-tech-stack-explorer-4j9f</guid>
      <description>&lt;p&gt;Ah, tech stacks! They’re the secret sauce behind every app, the magic combo of frameworks, languages, and libraries that make the digital world tick. But let’s be real-keeping up with the latest versions, dependencies, and compatibility issues can feel like trying to juggle flaming torches while riding a unicycle.&lt;/p&gt;

&lt;p&gt;Enter StackSync your new best friend for managing and exploring tech stacks effortlessly! 🚀&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why StackSync?
&lt;/h2&gt;



&lt;h3&gt;
  
  
  Ever found yourself wondering:
&lt;/h3&gt;

&lt;p&gt;-- “What’s the latest version of React?”&lt;br&gt;
-- “Which version of Node.js is compatible with Next.js 15?”&lt;br&gt;
-- “Is Tailwind CSS 4 supported by the latest version of Svelte?”&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;StackSync&lt;/strong&gt; takes all that confusion away by providing a simple interface to browse, compare, and track the latest versions of popular technologies—all in one place.&lt;/p&gt;

&lt;p&gt;It’s open-source, fast, and built for developers like you who want to stay ahead without diving into endless documentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Key Features
&lt;/h2&gt;

&lt;h4&gt;
  
  
  🔍 Explore the Latest Versions
&lt;/h4&gt;

&lt;p&gt;No more Googling “latest Angular version” every few weeks. &lt;strong&gt;StackSync&lt;/strong&gt; keeps track of the most recent updates for frontend, backend, databases, and utilities.&lt;/p&gt;

&lt;h4&gt;
  
  
  🔄 Version History &amp;amp; Compatibility
&lt;/h4&gt;

&lt;p&gt;Ever tried updating a package only to break everything? &lt;strong&gt;StackSync&lt;/strong&gt; helps you check version histories and compatibility, so you know what works with what.&lt;/p&gt;

&lt;h4&gt;
  
  
  📊 Categorized by Tech Stacks
&lt;/h4&gt;

&lt;p&gt;Frontend, backend, databases, and utilities—all neatly organized so you can find what you need in seconds.&lt;/p&gt;

&lt;h4&gt;
  
  
  🛠 Built by Developers, for Developers
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;StackSync&lt;/strong&gt; is fully open-source, which means you can contribute, request features, or even fork it to build your own custom version.&lt;/p&gt;

&lt;h4&gt;
  
  
  ⚙️ Built With
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;StackSync&lt;/strong&gt; itself is a powerhouse, built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 15 (for a lightning-fast frontend)&lt;/li&gt;
&lt;li&gt;Tailwind CSS 4 (for sleek, responsive design)&lt;/li&gt;
&lt;li&gt;ShadCN UI (for a modern and elegant interface)&lt;/li&gt;
&lt;li&gt;Open-source APIs (for real-time version tracking)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  👀 Try It Live
&lt;/h3&gt;

&lt;p&gt;Why read about it when you can see it in action? Check out the live demo here: &lt;br&gt;
🔗 &lt;a href="https://stacksync-app.netlify.app" rel="noopener noreferrer"&gt;StackSync Live&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you want to peek under the hood, here’s the GitHub repo:&lt;br&gt;
🛠 &lt;a href="https://github.com/HardikGohilHLR/stacksync" rel="noopener noreferrer"&gt;StackSync on GitHub&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 How Can You Contribute?
&lt;/h2&gt;

&lt;p&gt;Love &lt;strong&gt;open-source&lt;/strong&gt;? We do too! &lt;strong&gt;StackSync&lt;/strong&gt; is open for contributions. You can:&lt;/p&gt;

&lt;p&gt;✅ Report bugs 🐛&lt;br&gt;
✅ Request new features ✨&lt;br&gt;
✅ Improve UI/UX 🎨&lt;br&gt;
✅ Help with API integrations 🔗&lt;/p&gt;

&lt;p&gt;Just fork the repo, make your changes, and submit a pull request. Let’s build something awesome together!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Tech evolves fast, but StackSync helps you keep up without the hassle. Whether you’re a developer, tech lead, or just someone who loves staying updated, this tool is here to make your life easier.&lt;/p&gt;

&lt;p&gt;Give it a spin, contribute if you can, and let’s make tech stack management a breeze. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I’d love to hear your feedback! Let me know what you think, and if there’s something you’d like to see added, feel free to reach out.&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Introducing LetterLens: A Powerful Open-Source Word Counter</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Mon, 17 Feb 2025 16:36:49 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/introducing-letterlens-a-powerful-open-source-word-counter-4fcm</link>
      <guid>https://dev.to/hardikgohilhlr/introducing-letterlens-a-powerful-open-source-word-counter-4fcm</guid>
      <description>&lt;h2&gt;
  
  
  🚀 What is LetterLens?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://letter-lens.netlify.app/" rel="noopener noreferrer"&gt;LetterLens&lt;/a&gt;&lt;/strong&gt; is an open-source, feature-rich text analysis tool designed to help writers, developers, and content creators analyze their text efficiently. It provides instant insights into character count, word count, sentence count, paragraph count, reading time, and letter density.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ Features
&lt;/h2&gt;

&lt;p&gt;-- Character &amp;amp; Word Count: Instantly see the total number of characters and words.&lt;br&gt;
-- Sentence &amp;amp; Paragraph Count: Get structured insights into your text.&lt;br&gt;
-- Reading Time Estimation: Know how long it takes to read your content.&lt;br&gt;
-- Letter Density Analysis: Discover the frequency of letter usage in your text.&lt;br&gt;
-- Toggle Exclude Spaces: Choose whether to count spaces in character -- analysis.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Tech Stack
&lt;/h2&gt;

&lt;p&gt;--- Next.js - React-based framework for fast and efficient rendering.&lt;br&gt;
--- Tailwind CSS - Utility-first CSS for responsive UI.&lt;br&gt;
--- ShadCN UI - Elegant and customizable UI components.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📖 How to Use LetterLens
&lt;/h2&gt;

&lt;p&gt;Simply paste or type your text into the editor, and the tool will instantly analyze it. Toggle the "Exclude Spaces" option if needed. The tool is designed to be lightweight, efficient, and user-friendly.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Open Source &amp;amp; Contributions
&lt;/h2&gt;

&lt;p&gt;LetterLens is open-source, and we welcome contributions! If you have ideas for improvements or want to fix a bug, feel free to contribute.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Setting Up Locally
&lt;/h2&gt;



&lt;h4&gt;
  
  
  Clone the repository
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/HardikGohilHLR/letter-lens.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Navigate into the project
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd letterlens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Install dependencies
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Start development server
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  📝 Get Involved
&lt;/h3&gt;

&lt;p&gt;⭐ Star the repository on GitHub&lt;br&gt;
🛠 Open issues or feature requests&lt;br&gt;
✨ Submit pull requests with enhancements&lt;br&gt;
📢 Share LetterLens with your network&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Try &lt;strong&gt;&lt;a href="https://letter-lens.netlify.app/" rel="noopener noreferrer"&gt;LetterLens&lt;/a&gt;&lt;/strong&gt; LetterLens today and make text analysis effortless! 🚀&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I’d love to hear your feedback! Let me know what you think, and if there’s something you’d like to see added, feel free to reach out.&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Mastering Git: Essential Commands Every Developer Should Know</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sat, 21 Dec 2024 13:26:07 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/mastering-git-essential-commands-every-developer-should-know-397n</link>
      <guid>https://dev.to/hardikgohilhlr/mastering-git-essential-commands-every-developer-should-know-397n</guid>
      <description>&lt;p&gt;Git! Our trusty sidekick in the world of version control. It’s the superhero that saves our code from chaos and keeps our projects running smoothly—until we forget that one command and panic sets in.&lt;/p&gt;

&lt;p&gt;Fear not! Whether you’re a Git newbie or a seasoned developer who occasionally Googles "how to undo last commit," this guide has your back. We’ll walk through essential Git commands that every developer should have in their toolkit, so you can navigate your next project with confidence.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Getting Started with Git: Set the Stage
&lt;/h3&gt;

&lt;p&gt;Before jumping into the nitty-gritty, let’s make sure your Git environment is ready to roll.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initialize a Repository&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command creates a new Git repository in your project folder. Think of it as opening a fresh notebook for your code adventure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure Your Identity&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;  
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your.email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why it matters: Every commit you make is tagged with your name and email, so your teammates know who to high-five (or blame).&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Tracking Changes: Write the Story of Your Code
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;See What’s Happening&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is like asking, "Hey Git, what’s up?" It shows the current state of your repo—what’s staged, modified, or still a wild card.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Files to the Stage&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;  
git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think of git add as picking ingredients for your recipe. Whether it’s a single file or everything at once, this prepares your changes for the next step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commit Your Changes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Describe your changes"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This saves your progress, like hitting "&lt;strong&gt;Save Game&lt;/strong&gt;" in your favorite RPG.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Branches: Your Code’s Parallel Universes
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Create a New Branch&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to experiment without messing up the main storyline? Branches are your playground.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Switch to a Branch&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hop between branches like a time traveler moving through alternate dimensions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merge a Branch&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git merge &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ready to bring your experiment into the main timeline? Merging makes it official.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Collaborating with Remotes: Teamwork Made Easy
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Clone a Repository&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;repository-url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy a remote repo to your local machine. It’s like downloading your favorite playlist to jam offline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fetch and Pull Changes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch  
git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stay in sync with your team by fetching or pulling updates from the remote repo. Think of it as syncing your group chat before responding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Push Your Changes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once your code is ready, push it to the remote repo for everyone to see (and hopefully applaud).&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Fixing Mistakes: We’ve All Been There
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Undo Last Commit (but Keep Changes)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Oops? No worries. This undoes the last commit but keeps your changes for a quick redo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discard Uncommitted Changes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;--&lt;/span&gt; &amp;lt;file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Changed your mind? This reverts a file to its last committed state.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Keeping Things Clean: Avoid the Mess
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Stash Changes Temporarily&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need to switch gears but don’t want to lose your current work? Stashing saves it for later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apply Stashed Changes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick up where you left off. Your code will thank you for the breather.&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Review and Reflect: Look Back to Move Forward
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;View Commit History&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is like scrolling through your photo album—it shows every commit and its story.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;View Changes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to see what’s different? Git diff is your detective tool for tracking changes.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion: Git Good, Git Confident&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Mastering &lt;strong&gt;Git&lt;/strong&gt; isn’t just about memorizing commands—it’s about understanding the flow of your code’s journey. From setting up a repository to collaborating with your team, these commands are your map to navigating the Git universe.&lt;/p&gt;

&lt;p&gt;So, next time you’re in the middle of a merge conflict or trying to undo a mistake, remember: you’ve got this. &lt;strong&gt;Git&lt;/strong&gt; is your ally, and with a little practice, you’ll be the version control wizard your team looks up to.&lt;/p&gt;

&lt;p&gt;Happy coding, and may your merges always be &lt;strong&gt;conflict-free&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I’d love to hear your feedback! Let me know what you think, and if there’s something you’d like to see added, feel free to reach out.&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>git</category>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Unlock the Power of Tailwind CSS with This Cheatsheet</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sat, 23 Nov 2024 13:23:53 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/unlock-the-power-of-tailwind-css-with-this-cheatsheet-4ljh</link>
      <guid>https://dev.to/hardikgohilhlr/unlock-the-power-of-tailwind-css-with-this-cheatsheet-4ljh</guid>
      <description>&lt;p&gt;Ah, Tailwind CSS! The utility-first framework that’s like the Swiss Army knife for developers. Whether you’re crafting a sleek UI or just tweaking margins for the 100th time (we’ve all been there), Tailwind has your back. But let’s face it, with thousands of utility classes, keeping track of them all can feel like learning a new language. &lt;/p&gt;

&lt;p&gt;That’s where I swoop in with a game-changer: &lt;strong&gt;&lt;a href="https://cs.hardikgohilhlr.tech" rel="noopener noreferrer"&gt;The Tailwind CSS Cheatsheet&lt;/a&gt;&lt;/strong&gt;. 🛠️&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Need This Cheatsheet
&lt;/h2&gt;

&lt;p&gt;If you’ve ever caught yourself scrolling through Tailwind’s documentation for what feels like hours, this is for you. Imagine a single page that has every class, neatly categorized, and easy to navigate. No fluff, no rabbit holes—just pure utility.&lt;/p&gt;

&lt;p&gt;Here’s why this cheatsheet is your new best friend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Save Time&lt;/strong&gt;: No more switching tabs or digging through docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick Learning&lt;/strong&gt;: Perfect for beginners to get up to speed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boost Efficiency&lt;/strong&gt;: Even pros will appreciate the streamlined workflow.&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;
  
  
  What Makes This Cheatsheet Special?
&lt;/h3&gt;

&lt;p&gt;I created this resource while working on an agency website where Tailwind became my go-to tool. I noticed I kept googling the same classes repeatedly. It hit me—why not make a resource for myself and the entire developer community?&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Search-Friendly&lt;/strong&gt;: Instantly find any class you need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organized by Categories&lt;/strong&gt;: Spacing, typography, grids, flexbox—you name it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design Previews&lt;/strong&gt;: See how classes behave across breakpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Interface&lt;/strong&gt;: Minimalist design, maximum usability.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Why I Love Tailwind CSS ❤️
&lt;/h3&gt;

&lt;p&gt;Working with Tailwind feels like building with Lego blocks—each utility class snaps perfectly into place. It’s simple, flexible, and gives you complete control over your designs. With Tailwind, I focus less on writing custom CSS and more on creating great user experiences.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A Sneak Peek 👀
&lt;/h3&gt;

&lt;p&gt;Here’s how my cheatsheet looks in action:&lt;/p&gt;

&lt;p&gt;🧰 Want to adjust spacing? Boom, there’s the exact class.&lt;br&gt;
🎨 Need to fine-tune typography? It’s all there, at your fingertips.&lt;br&gt;
📱 Responsive breakpoints? Consider it handled.  &lt;/p&gt;

&lt;p&gt;Check it out yourself: &lt;strong&gt;&lt;a href="https://cs.hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Tailwind CSS Cheatsheet&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Let’s Make Tailwind Even More Fun
&lt;/h3&gt;

&lt;p&gt;If you’ve ever thought, &lt;em&gt;“Why does Tailwind make me feel like a superhero?”&lt;/em&gt;, this cheatsheet will amplify that feeling. It’s more than a resource—it’s a productivity booster. Whether you’re a frontend wizard or just starting your Tailwind journey, this is the tool you didn’t know you needed.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ready to Supercharge Your Workflow?
&lt;/h3&gt;

&lt;p&gt;Head over to &lt;strong&gt;&lt;a href="https://cs.hardikgohilhlr.tech" rel="noopener noreferrer"&gt;cs.hardikgohilhlr.tech&lt;/a&gt;&lt;/strong&gt; now. Bookmark it, share it, and make your Tailwind projects smoother, faster, and more fun than ever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I’d love to hear your feedback! Let me know what you think, and if there’s something you’d like to see added, feel free to reach out.&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tailwindcss</category>
      <category>frontend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Announcing My Portfolio Site: A Digital Playground for Projects, Growth, and Coding Resources</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sun, 27 Oct 2024 06:22:47 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/announcing-my-portfolio-site-a-digital-playground-for-projects-growth-and-coding-resources-29o3</link>
      <guid>https://dev.to/hardikgohilhlr/announcing-my-portfolio-site-a-digital-playground-for-projects-growth-and-coding-resources-29o3</guid>
      <description>&lt;p&gt;Ah, the thrill of a new project! After weeks of coding, styling, and refining, I’m excited to launch my portfolio site: &lt;strong&gt;&lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;hardikgohilhlr.tech&lt;/a&gt;&lt;/strong&gt;. Think of it as my personal slice of the web where I share projects, tech insights, and a bit about the journey. Built with Next.js, Firebase, and custom CSS, this site is ready to showcase my work—and it’s just getting started!&lt;/p&gt;

&lt;p&gt;So, let me walk you through what’s on my portfolio today, the tech I used, and a few big plans I have in store to make it even better.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ What’s Under the Hood? A Peek at the Tech Stack
&lt;/h2&gt;



&lt;h3&gt;
  
  
  ⚡ Next.js: The Backbone of a Fast User Experience
&lt;/h3&gt;

&lt;p&gt;Next.js was an easy choice for me, offering server-side rendering and static site generation for lightning-fast performance. It’s like the high-octane engine that keeps everything smooth and seamless, especially when loading project-heavy pages.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔥 Firebase: Seamless Data Management
&lt;/h3&gt;

&lt;p&gt;Firebase takes the hassle out of handling and storing data, allowing me to focus on building rather than backend setup. Plus, its real-time capabilities mean any new additions or updates on the site are a breeze to manage.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 Custom CSS: Crafting a Unique Look
&lt;/h3&gt;

&lt;p&gt;A site that represents me needs a design that’s just as personal. With custom CSS, I could style each element to fit my vision, resulting in a site that’s clean, responsive, and visually my own.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ What’s Coming Next? Building Out the Vision
&lt;/h2&gt;

&lt;p&gt;But here’s the fun part—my portfolio is just getting started. I’ve got a few key upgrades planned, so stay tuned!&lt;/p&gt;

&lt;p&gt;🌞🌜 &lt;strong&gt;Light and Dark Mode&lt;/strong&gt;: Soon, the site will adapt to users’ preferences with light and dark modes for a custom viewing experience.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;📂 &lt;strong&gt;Expanded Project Showcase&lt;/strong&gt;: With more projects in the pipeline, I’m gearing up to add a range of new work to reflect my evolving skill set.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;📚 &lt;strong&gt;Resources for Coders&lt;/strong&gt;: This part’s especially close to my heart. I’ll be including coding guides, resources, and tips that I’ve found valuable, making this site a go-to for anyone learning or growing in tech.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🌐 Take a Look and Connect with Me
&lt;/h4&gt;

&lt;p&gt;Head over to &lt;strong&gt;&lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;hardikgohilhlr.tech&lt;/a&gt;&lt;/strong&gt; to explore, or just drop by to say hello! If you have a moment, I’d love to hear your feedback—let me know what you think and how I can improve. And if you have a portfolio of your own, feel free to share it and get review from devs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Looking forward to seeing where this digital journey takes me next—thanks for being a part of it!&lt;/strong&gt;&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>portfolio</category>
      <category>react</category>
    </item>
    <item>
      <title>How to Install NGINX on Ubuntu: Quick and Easy!</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sun, 29 Sep 2024 10:03:55 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/how-to-install-nginx-on-ubuntu-quick-and-easy-3cb6</link>
      <guid>https://dev.to/hardikgohilhlr/how-to-install-nginx-on-ubuntu-quick-and-easy-3cb6</guid>
      <description>&lt;p&gt;NGINX is the go-to web server for many developers—whether you need to serve web pages, act as a reverse proxy, or handle load balancing. It’s fast, reliable, and gets the job done without breaking a sweat. But before NGINX can work its magic, we need to get it installed. Let’s go through the steps of setting it up on your Ubuntu system.&lt;/p&gt;

&lt;p&gt;Let’s dive in!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;1. Update Your System First (Always! 🍀)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We all know that updating is the developer's equivalent of stretching before a run. Before installing NGINX, make sure your system is up to date. Open your terminal and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;apt&lt;/span&gt; &lt;span class="s"&gt;update&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;apt&lt;/span&gt; &lt;span class="s"&gt;upgrade&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures you’re installing everything fresh and avoiding any version clashes.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;2. Installing NGINX Like a Pro 💻&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;With the system updated, it’s time to install NGINX! Lucky for us, NGINX is in Ubuntu’s package manager. Just one simple command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;apt&lt;/span&gt; &lt;span class="s"&gt;install&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it! NGINX is now on your system, ready to serve content and handle your web requests.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;3. Start and Enable NGINX 🚀&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After installation, let’s get NGINX running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;systemctl&lt;/span&gt; &lt;span class="s"&gt;start&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want NGINX to start automatically after every reboot? Let’s enable it too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;systemctl&lt;/span&gt; &lt;span class="s"&gt;enable&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With these commands, NGINX will stay running even after your server reboots—super handy for a web server!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;4. Check if NGINX is Running Smoothly ✅&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You might want to check if NGINX is working fine. To verify its status, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;systemctl&lt;/span&gt; &lt;span class="s"&gt;status&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see something like active (running) in green, which means everything is A-OK!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;5. Firewall Settings (Optional but Wise) 🔥&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you have a firewall running (and you should!), make sure it allows web traffic. For HTTP (port 80), use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;ufw&lt;/span&gt; &lt;span class="s"&gt;allow&lt;/span&gt; &lt;span class="s"&gt;'Nginx&lt;/span&gt; &lt;span class="s"&gt;HTTP'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To allow both HTTP and HTTPS (ports 80 and 443):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;sudo&lt;/span&gt; &lt;span class="s"&gt;ufw&lt;/span&gt; &lt;span class="s"&gt;allow&lt;/span&gt; &lt;span class="s"&gt;'Nginx&lt;/span&gt; &lt;span class="s"&gt;Full'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will let NGINX do its thing without getting blocked by your firewall.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;6. Test It! (The Fun Part) 🌍&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The final step is to see NGINX in action. Open your browser and type in your server's IP address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="err"&gt;http://your_server_ip&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the default NGINX welcome page, confirming that your web server is up and running!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: &lt;br&gt;
Boom! 🎉 NGINX is now up and running on your Ubuntu system. Whether you're building a simple static site or setting up a complex reverse proxy, you've got a powerful tool at your fingertips.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading, If you liked the post please share it and leave suggestions.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>aws</category>
      <category>nginx</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>GraphQL vs. REST: Best Practices for API Development</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sat, 21 Sep 2024 13:53:09 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/graphql-vs-rest-best-practices-for-api-development-507h</link>
      <guid>https://dev.to/hardikgohilhlr/graphql-vs-rest-best-practices-for-api-development-507h</guid>
      <description>&lt;p&gt;Ah, the eternal debate: GraphQL or REST? It’s like choosing between two beloved superheroes in the world of APIs. Both come with their own set of powers and quirks, but the choice can be a game-changer for your web application. Let’s break down the differences and figure out when to wield each of these mighty tools!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Understanding REST: The Classic Sidekick&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt; (Representational State Transfer) is the reliable sidekick in our API adventures. It’s been around for ages, providing a structured way to interact with resources via standard HTTP methods like GET, POST, PUT, and DELETE. It’s like having a trusty map that guides you to every resource you need.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Key Features of REST:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Resource-Oriented&lt;/strong&gt;: Each resource has a unique URI—think of it as a treasure map that leads you to the data you need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless&lt;/strong&gt;: Every request is a fresh start! REST doesn’t remember past requests, which simplifies server design but can be tricky if you’re looking for context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cacheable&lt;/strong&gt;: With built-in HTTP caching, REST can speed up your app like a well-brewed cup of coffee—quick and efficient!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Data&lt;/strong&gt;: Responses typically come in JSON or XML, making it easy for developers to parse and use.

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;When to Use REST:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simple Applications&lt;/strong&gt;: If your app is straightforward and doesn’t require complex interactions, REST is your go-to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching Needs&lt;/strong&gt;: For applications where performance is key, REST’s caching capabilities can give your app a much-needed boost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Widespread Adoption&lt;/strong&gt;: With its long-standing presence in the API universe, REST is widely supported, making it easy to find libraries and resources.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;GraphQL: The Flexible Innovator&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Enter GraphQL, the exciting newcomer that has taken the API world by storm! Developed by Facebook, GraphQL allows clients to request exactly what they need—nothing more, nothing less. It’s like having a magic wand that conjures only the data you want, precisely how you want it.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Key Features of GraphQL:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Queries&lt;/strong&gt;: Clients can define the shape of the response, avoiding the over-fetching and under-fetching pitfalls that often plague REST. It’s like ordering exactly what you want at your favorite restaurant!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single Endpoint&lt;/strong&gt;: Forget about juggling multiple endpoints; GraphQL operates on a single endpoint, simplifying your API interactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strongly Typed Schema&lt;/strong&gt;: With a well-defined schema, GraphQL enforces data structure and types, making it easier to understand what’s available—like a well-organized library!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Capabilities&lt;/strong&gt;: With subscriptions, GraphQL can handle real-time data updates, keeping your app as fresh as your morning brew.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;When to Use GraphQL:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complex Data Requirements&lt;/strong&gt;: If your application needs to fetch multiple resources at once, GraphQL is the superhero for the job.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapid Development&lt;/strong&gt;: GraphQL empowers frontend teams to evolve independently, speeding up development and allowing for quick iterations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Applications&lt;/strong&gt;: For mobile apps that demand performance, GraphQL’s efficiency in fetching only necessary data can be a game changer.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Showdown: GraphQL vs. REST&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;REST&lt;/th&gt;
&lt;th&gt;GraphQL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Structure&lt;/td&gt;
&lt;td&gt;Multiple endpoints for resources&lt;/td&gt;
&lt;td&gt;Single endpoint with flexible queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Fetching&lt;/td&gt;
&lt;td&gt;Fixed responses; often over/under-fetching&lt;/td&gt;
&lt;td&gt;Exact data requested, reducing waste&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Versioning&lt;/td&gt;
&lt;td&gt;Requires versioning for changes&lt;/td&gt;
&lt;td&gt;Evolving schema without versioning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caching&lt;/td&gt;
&lt;td&gt;Built-in HTTP caching&lt;/td&gt;
&lt;td&gt;Custom caching needed, less intuitive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time Updates&lt;/td&gt;
&lt;td&gt;Not natively supported&lt;/td&gt;
&lt;td&gt;Supports subscriptions for real-time updates&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Choose Your API Adventure! In the end, the choice between GraphQL and REST comes down to your project’s unique needs. For simpler applications, REST remains a reliable companion, celebrated for its ease of use. On the flip side, if your project demands flexibility and real-time capabilities, GraphQL is your best bet.&lt;/p&gt;

&lt;p&gt;We want to hear from you! What has been your experience with GraphQL or REST? Share your thoughts in the comments below, and let’s create a vibrant discussion! And don’t forget to vote in our poll at the top of this article and share it with your fellow developers. Your insights could spark the next great API debate!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading, and may your APIs always be efficient! 🚀&lt;/strong&gt;&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>backend</category>
      <category>graphql</category>
    </item>
    <item>
      <title>How to Make Your React App Faster: 6 Performance Tips and Best Practices</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sat, 14 Sep 2024 15:14:27 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/how-to-make-your-react-app-faster-6-performance-tips-and-best-practices-4hd3</link>
      <guid>https://dev.to/hardikgohilhlr/how-to-make-your-react-app-faster-6-performance-tips-and-best-practices-4hd3</guid>
      <description>&lt;p&gt;Ah, React! Our beloved library for building UIs. It’s the magic potion that makes our web apps feel interactive and fast—until one day, it doesn’t. Suddenly, you notice things slowing down. Clicking a button feels like sending a letter by carrier pigeon. Your app goes from lightning-fast to coffee-break slow, and users start giving you "the look."&lt;/p&gt;

&lt;p&gt;But don’t worry! Just like coffee can fix most of life’s problems (or so we’d like to think), a few key techniques can turbocharge your React app and bring it back to top speed. Let’s explore 6 simple ways to optimize your React app, so it’s faster than your daily caffeine boost.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;1. Code-Splitting: Loading Only What You Need&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ever walked into a room, turned on all the lights, and then realized you only needed one? That’s what your React app does when you bundle everything into one big chunk. Instead, with code-splitting, you only load the parts of your app that are needed at the moment. It’s like turning on lights room by room!&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;React.lazy()&lt;/code&gt; and &lt;code&gt;Suspense&lt;/code&gt;is a perfect way to implement this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Suspense&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;LazyComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lazy&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./LazyComponent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Suspense&lt;/span&gt; &lt;span class="nx"&gt;fallback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Loading&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;}&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;LazyComponent&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Suspense&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it helps&lt;/strong&gt;: Code-splitting reduces your app's initial load time by deferring loading of unused code until necessary. Users won't have to wait for the whole app to load before seeing something on the screen.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;2. Lazy Loading Images: Don’t Load All the Snacks at Once&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Imagine ordering a pizza and receiving a year’s worth of groceries instead. Sounds ridiculous, right? Well, that’s what happens when you load all your images upfront. Instead, lazy-load images, so you’re only fetching what’s necessary, just like ordering one pizza at a time.&lt;/p&gt;

&lt;p&gt;Using a library like &lt;code&gt;react-lazyload&lt;/code&gt; is a quick fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;LazyLoad&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-lazyload&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;LazyLoad&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;offset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;large-image.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lazy Loaded Image&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/LazyLoad&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it helps&lt;/strong&gt;: By lazy-loading images, you reduce the initial page load time and only download images when they’re needed—improving both performance and user experience.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;3. useCallback and useMemo: Memory Boost for React&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Just like how you keep reusing that same coffee mug to save time on washing, React can reuse values and functions if you let it! &lt;strong&gt;useCallback&lt;/strong&gt; and &lt;strong&gt;useMemo&lt;/strong&gt; are hooks that help you store expensive computations or functions, so they don’t get recalculated on every render.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;useMemo&lt;/code&gt; Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expensiveCalculation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MyComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;squaredNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useMemo&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;expensiveCalculation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;squaredNumber&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;useCallback&lt;/code&gt; Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleClick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Clicked&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it helps&lt;/strong&gt;: With &lt;code&gt;useMemo&lt;/code&gt;, React won’t have to redo expensive calculations unnecessarily. And useCallback stops you from creating a new function every render. This keeps React running smoothly—like upgrading its RAM!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;4. Memoization with React.memo: Stop Unnecessary Re-renders&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Do you have that one friend who repeats the same story over and over? React can be like that too—re-rendering components even when it doesn’t need to! This is where React.memo comes in, preventing React from re-rendering components unless their props change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MyComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;memo&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it helps&lt;/strong&gt;: React.memo is like telling React, “Hey, you’ve heard this one before! Don’t repeat yourself unless there’s something new.” It avoids unnecessary re-renders, saving time and resources.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;5. Efficiently Managing State: Lift It Only When Needed&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Lifting state up is a common pattern in React, but sometimes we’re guilty of lifting it too high or managing too much state in the wrong places. This can cause excessive re-renders. Keep state local to components whenever possible, and avoid unnecessary re-renders by lifting state only when truly necessary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ParentComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;sharedState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setSharedState&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ChildComponent&lt;/span&gt; &lt;span class="nx"&gt;sharedState&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;sharedState&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;AnotherChild&lt;/span&gt; &lt;span class="nx"&gt;setSharedState&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;setSharedState&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ChildComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;sharedState&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;sharedState&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Active&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Inactive&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AnotherChild&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;setSharedState&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setSharedState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Activate&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it helps&lt;/strong&gt;: By managing state more carefully and lifting it only when needed, you can avoid unnecessary re-renders of sibling components. This keeps your app focused and efficient.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;6. Debouncing User Input: Calm Down, React!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Imagine someone frantically typing into a search bar and your app trying to process every single keystroke. Poor React is probably sweating bullets! Enter debouncing—the process of only handling input after a user pauses, instead of on every single key press.&lt;/p&gt;

&lt;p&gt;Using lodash.debounce can solve this problem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lodash&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Search&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setQuery&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;debouncedSearch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;debounce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Do your search logic&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleChange&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;debouncedSearch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;onChange&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChange&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it helps&lt;/strong&gt;: Instead of React having a panic attack with every keystroke, debouncing gives it a breather. This ensures better performance when handling real-time user input, like search or form fields.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Optimizing React applications is not rocket science—it’s more like making sure you don’t drink six coffees in one sitting! From code-splitting to lazy-loading images, these techniques will help you keep your React app fast and responsive. So next time your app starts to feel sluggish, remember: it’s not React’s fault—it just needs a little optimization love!&lt;/p&gt;

&lt;p&gt;Remember, optimizing a React app is a balance. You don’t need to throw all of these techniques in right away. Instead, identify your app’s bottlenecks, apply the appropriate optimizations, and watch your app become faster than you can finish your coffee!&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Thanks for reading, If you liked the post please share it and leave suggestions.&lt;/strong&gt;&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
    </item>
    <item>
      <title>React/Vite Starter with TypeScript</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sun, 06 Aug 2023 12:53:00 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/reactvite-starter-with-typescript-585o</link>
      <guid>https://dev.to/hardikgohilhlr/reactvite-starter-with-typescript-585o</guid>
      <description>&lt;p&gt;Hey Guys, Hope you all are doing well.&lt;/p&gt;

&lt;p&gt;Whenever starting any new project, there are many things that need to deal with such as configuring the project, adding dependencies, deciding what the project code structure should look like and what not. So instead of initializing the project from scratch a good choice will be having starter kit that includes basic configuration and a proepr folder structure. So I've made such starter kit based on the requirements that helps you fastern your development workflow, saves your time and make sure you have everything you need at start of the project.&lt;/p&gt;

&lt;p&gt;The boilerplate comes with &lt;strong&gt;React&lt;/strong&gt;, Application scaffolded with &lt;strong&gt;Vite&lt;/strong&gt;, Includes &lt;strong&gt;TypeScript&lt;/strong&gt; and Basic &lt;strong&gt;Redux&lt;/strong&gt; configuration. For styling purposes &lt;strong&gt;Sass&lt;/strong&gt; is also included with some basic folder structure and styling.&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fl9yptjgc1nsfi9ypd6m8.png" class="article-body-image-wrapper"&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%2Farticles%2Fl9yptjgc1nsfi9ypd6m8.png" alt="React/Vite Starter with TypeScript" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tech stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React.js&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;SASS&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get your starter kit
&lt;/h2&gt;

&lt;p&gt;-- &lt;a href="https://github.com/HardikGohilHLR/react-vite-ts-boilerplate" rel="noopener noreferrer"&gt;React/Vite Starter with TypeScript&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading, If you liked the post please share it and leave suggestions.&lt;/p&gt;



&lt;a href="https://www.buymeacoffee.com/hardikgohilhlr" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.buymeacoffee.com%2Fassets%2Fimg%2Fcustom_images%2Forange_img.png" alt="Buy Me A Coffee" width="170" height="37"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>react</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>6 Useful JavaScript Tips for Beginners</title>
      <dc:creator>Hardik Gohil</dc:creator>
      <pubDate>Sun, 05 Mar 2023 13:41:00 +0000</pubDate>
      <link>https://dev.to/hardikgohilhlr/6-useful-javascript-tips-for-beginners-225o</link>
      <guid>https://dev.to/hardikgohilhlr/6-useful-javascript-tips-for-beginners-225o</guid>
      <description>&lt;p&gt;Hey Guys, Hope you all are doing well. Here are some of the useful tips that can improve productivity and overall performance of JavaScript code. These tips are for beginner and intermediate programmers as well. So without further ado let's jump in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Ternary Operator
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Don't Do this&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Template Literals
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Don't Do this&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Welcome Back &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;firstName&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;successMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Your Product &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;productName&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; has been delivered on &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;orderDate&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; successfully!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Welcome Back &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;successMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Your Product &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;productName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; has been delivered on &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;orderDate&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; successfully!`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Check if the value is undefined or null - Nullish coalescing
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Don't Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User not found!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User not found!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more about Nullish Coalescing Operator from &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator" rel="noopener noreferrer"&gt;Official Docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Converting string to number
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Don't Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;parseInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;22&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;qauntity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;parseFloat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;11.02&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;22&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;qauntity&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;11.02&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Array/Object Destructuring
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Given&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dribble Shot Design&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;reporter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John Doe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;dueDate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2023-03-05&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pending&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Don't Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectReporter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reporter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectDueDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dueDate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;projectStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reporter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;dueDate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implicit Boolean Coercion
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Don't Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;orderInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;isOrderInfoAvailable&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;orderInfo&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;isOrderInfoAvailable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;isOrderInfoAvailable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Do This&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;orderInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isOrderInfoAvailable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="nx"&gt;orderInfo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isOrderInfoAvailable&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thanks for reading, If you liked the post please share it and leave suggestions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect With Me
&lt;/h2&gt;

&lt;p&gt;Website: &lt;a href="https://hardikgohilhlr.tech" rel="noopener noreferrer"&gt;Hardik Gohil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/HardikGohilHLR" rel="noopener noreferrer"&gt;https://github.com/HardikGohilHLR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Linkedin: &lt;a href="https://www.linkedin.com/in/hardikgohilhlr" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/hardikgohilhlr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks ❤️&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>angular</category>
      <category>node</category>
    </item>
  </channel>
</rss>
