<?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: Tahir Rafique</title>
    <description>The latest articles on DEV Community by Tahir Rafique (@tahir_rafique).</description>
    <link>https://dev.to/tahir_rafique</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%2F2889818%2F3d1984d6-6f75-423f-acfc-af7e9495981f.png</url>
      <title>DEV Community: Tahir Rafique</title>
      <link>https://dev.to/tahir_rafique</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tahir_rafique"/>
    <language>en</language>
    <item>
      <title>Website/webApp Speed Optimization!</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Tue, 17 Feb 2026 17:48:45 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/0-to-hero-website-optimization-no-one-tells-you-4oah</link>
      <guid>https://dev.to/tahir_rafique/0-to-hero-website-optimization-no-one-tells-you-4oah</guid>
      <description>&lt;p&gt;Coming Soon!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>what is memory? need answers form You</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Thu, 15 Jan 2026 06:14:13 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/what-is-memory-need-answers-form-you-138c</link>
      <guid>https://dev.to/tahir_rafique/what-is-memory-need-answers-form-you-138c</guid>
      <description>&lt;p&gt;?????&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Fix Hydration Errors in Next.js</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Thu, 01 Jan 2026 09:45:52 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/fix-hydration-errors-in-nextjs-3976</link>
      <guid>https://dev.to/tahir_rafique/fix-hydration-errors-in-nextjs-3976</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Common Causes of Hydration Errors:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser/Environment Issues:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Browser extensions injecting attributes (password managers, ad blockers, accessibility tools)&lt;br&gt;
Browser auto-fill adding attributes to form elements&lt;br&gt;
Third-party scripts modifying the DOM before React hydrates&lt;br&gt;
Different timezones causing date/time mismatches between server and client&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Issues:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using browser-only APIs during SSR (window, localStorage, document)&lt;br&gt;
Random values or Math.random() in render (server generates different value than client)&lt;br&gt;
Date objects using new Date() without consistent formatting&lt;br&gt;
Using useEffect or useState that modifies content on initial render&lt;br&gt;
Inconsistent whitespace in template literals (extra spaces, newlines)&lt;br&gt;
Conditional rendering based on client-only values (window.innerWidth, user agent detection)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Issues:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Server and client fetching different data or at different times&lt;br&gt;
Missing key props in lists causing reordering issues&lt;br&gt;
Using non-serializable data in server components (functions, symbols)&lt;br&gt;
Inconsistent data formatting between server and client (dates, numbers, locales)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS/Styling Issues:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CSS-in-JS libraries that generate different class names on server vs client&lt;br&gt;
CSS modules with inconsistent hash generation&lt;br&gt;
Media queries that apply different styles on server vs client&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component Issues:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nesting block elements inside inline elements&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(&amp;lt;div&amp;gt; inside &amp;lt;p&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Invalid HTML structure (SSR might render differently than browser parses)&lt;br&gt;
Third-party components that aren't SSR-compatible&lt;br&gt;
Portals rendering in different locations&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Practice:&lt;/strong&gt; Always check if code relies on client-only APIs and wrap them in useEffect or use 'use client' directive appropriately.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🧠 Clean folder structure = Clean code = Happy developer's</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Sun, 07 Dec 2025 12:35:11 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/clean-folder-structure-clean-code-happy-developers-4gjp</link>
      <guid>https://dev.to/tahir_rafique/clean-folder-structure-clean-code-happy-developers-4gjp</guid>
      <description>&lt;p&gt;🗂️ “𝗠𝗮𝘀𝘁𝗲𝗿 𝗥𝗲𝗮𝗰𝘁 𝗣𝗿𝗼𝗷𝗲𝗰𝘁 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲 𝗟𝗶𝗸𝗲 𝗮 𝗣𝗿𝗼!” 💻&lt;/p&gt;

&lt;p&gt;When your app grows 📈, a messy structure slows you down 🐌. That’s why using a clean, scalable folder structure is the secret to high-performance React development! &lt;/p&gt;

&lt;p&gt;Check out this modern React JS project layout👇&lt;/p&gt;

&lt;p&gt;✨ Highlights of this structure:&lt;/p&gt;

&lt;p&gt;Feature-Based Modules – Keep code modular with features/ like products/ and users/&lt;/p&gt;

&lt;p&gt;📁 src/ – React JS Project Structure&lt;br&gt;
&lt;/p&gt;

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


src/
│
├── assets/ # Static files (images, fonts, icons)
│ ├── images/
│ ├── fonts/
│ └── icons/
│
├── components/ # Shared/reusable UI components
│ └── common/
│ ├── Button/
│ │ ├── Button.js
│ │ ├── Button.module.css
│ │ └── index.js
│ └── Modal/
│ ├── Modal.js
│ ├── Modal.module.css
│ └── index.js
│
├── layouts/ # Layouts for different pages
│ ├── MainLayout/
│ │ ├── MainLayout.js
│ │ └── MainLayout.module.css
│ ├── AuthLayout/
│ │ ├── AuthLayout.js
│ │ └── AuthLayout.module.css
│ └── index.js
│
├── features/ # Feature-specific modules
│ ├── products/
│ │ ├── components/
│ │ │ └── ProductList.js
│ │ ├── hooks/
│ │ │ └── useProducts.js
│ │ ├── services/
│ │ │ └── productService.js
│ │ └── types/
│ │ └── product.js
│ │
│ └── users/
│ ├── components/
│ │ └── UserProfile.js
│ ├── hooks/
│ │ └── useUser.js
│ ├── services/
│ │ └── userService.js
│ └── types/
│ └── user.js
│
├── hooks/ # Global custom hooks
│ ├── useAuth.js
│ ├── useDebounce.js
│ └── index.js
│
├── routes/ # Route and navigation configs
│ ├── AppRoutes.js
│ ├── ProtectedRoute.js
│ └── index.js
│
├── services/ # Global service files (e.g., axios client)
│ ├── apiClient.js
│ └── errorHandler.js
│
├── store/ # Redux or context-based store
│ ├── slices/
│ │ ├── authSlice.js
│ │ └── productSlice.js
│ ├── hooks.js
│ └── store.js
│
├── styles/ # Global CSS or SCSS files
│ ├── variables.css
│ ├── global.css
│ └── mixins.css
│
├── utils/ # Utility/helper functions
│ ├── constants.js
│ ├── formatters.js
 |
│
├── pages/ # Page components for routing
│ ├── HomePage.js
│ ├── LoginPage.js
 |
│
└── App.js # Main app component


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

&lt;/div&gt;



&lt;p&gt;🔸 Reusable Components – Organized in components/common/ for easy UI reuse 🔁&lt;/p&gt;

&lt;p&gt;🔸 Layouts &amp;amp; Routes – Centralized layouts and routing logic for better navigation 🔐&lt;/p&gt;

&lt;p&gt;🔸 Hooks &amp;amp; Services – Smart separation of custom logic and API calls 🤯&lt;/p&gt;

&lt;p&gt;🔸 State Management – Scalable structure with store/ and slices/ for Redux 💾&lt;/p&gt;

&lt;p&gt;🔸 Assets, Utils, Styles – Clean up the mess and boost your productivity 🧹&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Custom Select-File in react...???</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Tue, 14 Oct 2025 19:45:19 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/custom-select-file-in-react-2756</link>
      <guid>https://dev.to/tahir_rafique/custom-select-file-in-react-2756</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useState } from 'react';

const FileUpload = () =&amp;gt; {
  const [file, setFile] = useState(null);

  const handleFileChange = (e) =&amp;gt; {
    const selectedFile = e.target.files[0];  // Get the selected file
    setFile(selectedFile);  // Store the file in state
  };

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;input type="file" onChange={handleFileChange} /&amp;gt;

      {file &amp;amp;&amp;amp; (
        &amp;lt;div&amp;gt;
          &amp;lt;h3&amp;gt;Selected File:&amp;lt;/h3&amp;gt;
          &amp;lt;p&amp;gt;Name: {file.name}&amp;lt;/p&amp;gt;
          &amp;lt;p&amp;gt;Size: {file.size} bytes&amp;lt;/p&amp;gt;
          &amp;lt;p&amp;gt;Type: {file.type}&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
      )}
    &amp;lt;/div&amp;gt;
  );
};

export default FileUpload;

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

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>authentication VS authorization</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Wed, 17 Sep 2025 12:41:01 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/authentication-vs-authorization-51lm</link>
      <guid>https://dev.to/tahir_rafique/authentication-vs-authorization-51lm</guid>
      <description>&lt;p&gt;Authentication:(who you are)?&lt;br&gt;
Check if this system/user is really who they claim to be? (Whenever you login to an App/web, whether with a password, Google login, or a token. that's authentication. &lt;/p&gt;

&lt;p&gt;Authorization: (What you can do)?&lt;br&gt;
Once you're &lt;strong&gt;authenticated&lt;/strong&gt;, Authorization decides you can read your email, upload files, or access the admin dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explanation:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Basic Auth:&lt;/strong&gt;&lt;br&gt;
The simplest form is Basic Authentication.&lt;/p&gt;

&lt;p&gt;Login -----&amp;gt; base64 encoded ----&amp;gt; (Server decodes + Check for match)&lt;/p&gt;

&lt;p&gt;Client sends username and password with every request. &lt;br&gt;
These credentials are base64 encoded with an HTTP header.&lt;br&gt;
Server decodes them and checks if they match.&lt;br&gt;
This auth is easy to implement, but it is not secure if not wrapped with HTTPS.&lt;br&gt;
Base64 is not encryption.&lt;br&gt;
Anyone who intercepts it can decode it instantly.&lt;br&gt;
use case example: internal tools,  quick tests, or systems behind firewalls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bearer Tokens:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;User --------&amp;gt;  Client -------&amp;gt; Server&lt;br&gt;
1 ----login-------------access-----&amp;gt;&lt;br&gt;
2 &amp;lt;--------access granted----------- &lt;/p&gt;

&lt;p&gt;Instead of sending (username &amp;amp; password) every time, the client first authenticates once and receives a token. &lt;br&gt;
From then on, every request carries a token in the authorization header.&lt;br&gt;
Server Simple Check if the token is valid to access granted, if not access is denied.&lt;br&gt;
Stateless token instead of a password.&lt;br&gt;
Standard for APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OAuth2:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Client -------sign in with Google---------&amp;gt; App -----------&amp;gt; API&lt;/p&gt;

&lt;p&gt;OAuth2 is not a token, it's a protocol ( a framework that defines how applications can delegate authentication).&lt;br&gt;
e.g, &lt;br&gt;
If you login to an app using a Google account.&lt;br&gt;
You click on Sign in with Google.&lt;br&gt;
Google authenticates you, then issues a token to that App.&lt;br&gt;
This way App never sees your Google password. &lt;br&gt;
It just gets a secure confirmation from Google that you are you.&lt;br&gt;
OAuth2 is a foundation for modern login with X, flows like Google, GitHub, Facebook, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JWT (json web token):&lt;/strong&gt;&lt;br&gt;
JWT is not an authentication method.&lt;br&gt;
It's a token format.&lt;br&gt;
Think of JWT as the envelope that carries claims about the user. A JWT usually contains three parts:&lt;br&gt;
"Header":&lt;br&gt;
which contains the metadata.&lt;br&gt;
"Payload":&lt;br&gt;
with claims for user ID, email, expiration, roles,&lt;br&gt;
"Signature": &lt;br&gt;
Signature used to verify it hasn't been tampered with.&lt;br&gt;
Token format carrying signed claims.&lt;br&gt;
The key benefits are that they are self-contained and verifiable.&lt;br&gt;
The Server doesn't need to store session data.&lt;br&gt;
It just verifies the token &lt;strong&gt;Signature&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access + Refresh Tokens:&lt;/strong&gt;&lt;br&gt;
short-lived + long-lived combo for security.&lt;br&gt;
Modern systems rarely rely on one long-lived token. &lt;br&gt;
Instead, they use a 2-token model.&lt;br&gt;
Access: short-lived, 15min to 1hrs, used for actual API calls.&lt;br&gt;
Refresh: long-lived days or months, used only to request a new access token.&lt;br&gt;
e.g,&lt;br&gt;
You login and get both tokens.&lt;br&gt;
Then you use an Access token for API calls.&lt;br&gt;
When it expires, your App silently uses the Refresh token to get a new Access token.&lt;br&gt;
This keeps the system secure because stolen access tokens become useless quickly.&lt;br&gt;
While Refresh tokens are typically stored more securely, often on the server side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSO (Single Sign-On):&lt;/strong&gt;&lt;br&gt;
One login, multiple service access.&lt;br&gt;
One Google account has access to YouTube, Gmail, etc.&lt;br&gt;
SSO uses identity protocols like SAML on older systems but still popular in enterprises.&lt;br&gt;
OAuth2 and OpenID Connect in modern software and are used by most Apps today.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Responsive Mobile-App Desing</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Wed, 03 Sep 2025 05:50:19 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/responsive-mobile-app-desing-374a</link>
      <guid>https://dev.to/tahir_rafique/responsive-mobile-app-desing-374a</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// import { Dimensions } from 'react-native';
// const { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get('window');
// const BASE_WIDTH = 430;
// const BASE_HEIGHT = 932;

// export function responsiveFonts(fontSize: number) {
//     return fontSize * (Dimensions.get('window').width / 393);
// }
// export const scale = (size: number) =&amp;gt; (SCREEN_WIDTH / BASE_WIDTH) * size;
// export const verticalScale = (size: number) =&amp;gt;
//     (SCREEN_HEIGHT / BASE_HEIGHT) * size;
// export const moderateScale = (size: number, factor = 0.5) =&amp;gt;
//     size + (scale(size) - size) * factor;
// export const { width, height } = Dimensions.get('window');

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

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>React Native responsiveness</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Wed, 27 Aug 2025 07:40:10 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/react-native-responsiveness-3jka</link>
      <guid>https://dev.to/tahir_rafique/react-native-responsiveness-3jka</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// import { Dimensions } from 'react-native';
// const { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get('window');
// const BASE_WIDTH = 430;
// const BASE_HEIGHT = 932;

// export function responsiveFonts(fontSize: number) {
//     return fontSize * (Dimensions.get('window').width / 393);
// }
// export const scale = (size: number) =&amp;gt; (SCREEN_WIDTH / BASE_WIDTH) * size;
// export const verticalScale = (size: number) =&amp;gt;
//     (SCREEN_HEIGHT / BASE_HEIGHT) * size;
// export const moderateScale = (size: number, factor = 0.5) =&amp;gt;
//     size + (scale(size) - size) * factor;
// export const { width, height } = Dimensions.get('window');

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

&lt;/div&gt;



</description>
      <category>reactnative</category>
      <category>typescript</category>
      <category>multiplatform</category>
      <category>responsive</category>
    </item>
    <item>
      <title>How MNC React Developer</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Tue, 19 Aug 2025 20:58:31 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/how-mnc-react-developer-127l</link>
      <guid>https://dev.to/tahir_rafique/how-mnc-react-developer-127l</guid>
      <description>&lt;p&gt;How I Became a React.js Developer in a Top MNC (and How You Can Too!)&lt;/p&gt;

&lt;p&gt;When I started my journey in web development, I was fascinated by how React.js was powering modern applications across the globe. But honestly, the road wasn’t easy—I made mistakes, learned from them, and built a roadmap that finally helped me land in a top MNC.&lt;/p&gt;

&lt;p&gt;Here’s my roadmap (so you don’t repeat my mistakes):&lt;/p&gt;

&lt;p&gt;Step 1: Master the Fundamentals&lt;br&gt;
 • Solidify your knowledge of HTML, CSS, JavaScript (ES6+).&lt;br&gt;
 • Understand the “why” behind JavaScript concepts like closures, promises, and async/await.&lt;/p&gt;

&lt;p&gt;Step 2: Dive Deep into React.js&lt;br&gt;
 • Learn about components, props, state, and hooks.&lt;br&gt;
 • Understand how to manage state using Redux or Context API.&lt;br&gt;
 • Explore React Router for navigation.&lt;/p&gt;

&lt;p&gt;Step 3: Build Real Projects&lt;br&gt;
 • Don’t just learn theory—build.&lt;br&gt;
 • I created dashboards, e-commerce clones, and portfolio apps.&lt;br&gt;
 • Each project improved my problem-solving and debugging skills.&lt;/p&gt;

&lt;p&gt;Step 4: Learn Ecosystem Tools&lt;br&gt;
 • Git &amp;amp; GitHub for collaboration.&lt;br&gt;
 • REST APIs &amp;amp; GraphQL for real-world integration.&lt;br&gt;
 • Testing (Jest/React Testing Library), a skill that many skip.&lt;/p&gt;

&lt;p&gt;Step 5: Prepare for Interviews&lt;br&gt;
 • Practice DSA basics (arrays, strings, recursion, problem-solving mindset).&lt;br&gt;
 • Revise React source code level concepts (virtual DOM, reconciliation, rendering).&lt;br&gt;
 • Mock interviews helped me understand my weak spots.&lt;/p&gt;

&lt;p&gt;Mistakes I Made (That You Should Avoid):&lt;br&gt;
 • Ignoring core JavaScript early on (React is built on JS).&lt;br&gt;
 • Learning too many frameworks at once instead of focusing.&lt;br&gt;
 • Not contributing to open-source or GitHub early (it boosts your profile).&lt;br&gt;
 • Underestimating soft skills—communication is as important as coding.&lt;/p&gt;

&lt;p&gt;My Advice: Focus on clarity over speed. Don’t rush to become a “full-stack developer” on Day 1. Start small, be consistent, and your growth will compound.&lt;/p&gt;

&lt;p&gt;Today, working at an MNC, I can say one thing: It’s not luck, it’s preparation meeting opportunity.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Husky Command to fix husky error</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Wed, 06 Aug 2025 04:33:11 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/husky-command-to-fix-husky-error-3mpn</link>
      <guid>https://dev.to/tahir_rafique/husky-command-to-fix-husky-error-3mpn</guid>
      <description>&lt;p&gt;bash: ls .husky&lt;br&gt;
npx husky -v&lt;/p&gt;

&lt;p&gt;(if not installed)&lt;br&gt;
npm install husky --save-dev&lt;br&gt;
npx husky install&lt;/p&gt;

</description>
      <category>husky</category>
      <category>npm</category>
      <category>bash</category>
      <category>tooling</category>
    </item>
    <item>
      <title>React in 2 mints</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Wed, 18 Jun 2025 19:22:35 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/react-in-2-mints-1k3k</link>
      <guid>https://dev.to/tahir_rafique/react-in-2-mints-1k3k</guid>
      <description>&lt;p&gt;REACT in 2min&lt;/p&gt;

&lt;p&gt;React Basics&lt;/p&gt;

&lt;p&gt;React is a JavaScript library for building user interfaces&lt;br&gt;
 Developed and maintained by Meta (Facebook)&lt;br&gt;
 Uses component-based architecture&lt;br&gt;
 JSX is used to write HTML-like code in JavaScript&lt;br&gt;
 Components can be class-based or function-based&lt;/p&gt;

&lt;p&gt;JSX (JavaScript XML)&lt;/p&gt;

&lt;p&gt;Syntax extension for writing UI in React&lt;br&gt;
 Looks like HTML but is converted to JavaScript&lt;br&gt;
 Must return a single parent element&lt;br&gt;
 Use {} for embedding JavaScript expressions&lt;br&gt;
 Use className instead of class for CSS&lt;/p&gt;

&lt;p&gt;Components&lt;/p&gt;

&lt;p&gt;Components are reusable UI elements&lt;br&gt;
 Two types: Functional and Class components&lt;br&gt;
 Functional components are more common and support Hooks&lt;br&gt;
 Props are used to pass data to components&lt;br&gt;
 Props are read-only&lt;/p&gt;

&lt;p&gt;Props&lt;/p&gt;

&lt;p&gt;Short for "properties"&lt;br&gt;
 Passed as attributes to components&lt;br&gt;
 Accessed via props object&lt;br&gt;
 Useful for customizing component content&lt;br&gt;
 Props cannot be modified inside the child component&lt;/p&gt;

&lt;p&gt;useState Hook&lt;/p&gt;

&lt;p&gt;useState() is used to declare state in functional components&lt;br&gt;
 Returns an array: [state, setState]&lt;br&gt;
 Re-render occurs when setState is called&lt;/p&gt;

&lt;p&gt;useEffect Hook&lt;/p&gt;

&lt;p&gt;useEffect() manages side effects (like API calls, timers)&lt;br&gt;
 Accepts a function and an optional dependency array&lt;br&gt;
 Runs after every render by default&lt;br&gt;
 To run once on mount, pass an empty dependency array&lt;/p&gt;

&lt;p&gt;Conditional Rendering&lt;/p&gt;

&lt;p&gt;Use ternary or logical &amp;amp;&amp;amp; to render content conditionally&lt;br&gt;
 Example: {isLoggedIn ?  : }&lt;br&gt;
 Prevent rendering with null or short-circuiting&lt;/p&gt;

&lt;p&gt;Lists and Keys&lt;/p&gt;

&lt;p&gt;Use map() to render lists of components&lt;br&gt;
 Each item must have a unique key prop&lt;br&gt;
 Keys help React identify which items changed&lt;/p&gt;

&lt;p&gt;Forms in React&lt;/p&gt;

&lt;p&gt;Controlled components bind form inputs to state&lt;br&gt;
 Use onChange handler to update state&lt;br&gt;
 Handle form submission with onSubmit event&lt;/p&gt;

&lt;p&gt;Event Handling&lt;/p&gt;

&lt;p&gt;Events are camelCase (e.g., onClick, onChange)&lt;br&gt;
 Use functions as event handlers&lt;br&gt;
 event.preventDefault() prevents default behavior&lt;/p&gt;

&lt;p&gt;React Router&lt;/p&gt;

&lt;p&gt;Used for client-side routing&lt;br&gt;
 Install via react-router-dom&lt;br&gt;
 Key components:&lt;/p&gt;

&lt;p&gt;BrowserRouter, Routes, Route, Link, useNavigate&lt;br&gt;
 Enables single-page application navigation&lt;/p&gt;

&lt;p&gt;useRef Hook&lt;/p&gt;

&lt;p&gt;Provides a mutable ref that doesn’t cause re-renders&lt;br&gt;
 Use for DOM access or persisting values between renders&lt;/p&gt;

&lt;p&gt;Context API&lt;/p&gt;

&lt;p&gt;Used for global state management&lt;br&gt;
 Create context with createContext()&lt;br&gt;
 Provide context with Context.Provider&lt;br&gt;
 Access context with useContext()&lt;/p&gt;

&lt;p&gt;useContext Hook&lt;/p&gt;

&lt;p&gt;Consumes context values inside functional components&lt;br&gt;
 Avoids prop drilling&lt;br&gt;
 Good for theming, user auth, global data&lt;/p&gt;

&lt;p&gt;useReducer Hook&lt;/p&gt;

&lt;p&gt;Alternative to useState for complex state logic&lt;br&gt;
 Useful when managing multiple state variables or actions&lt;br&gt;
 Syntax similar to Redux&lt;/p&gt;

&lt;p&gt;Custom Hooks&lt;/p&gt;

&lt;p&gt;Functions that use React hooks inside&lt;br&gt;
 Reusable across multiple components&lt;br&gt;
 Must start with use prefix (e.g., useForm, useToggle)&lt;/p&gt;

&lt;p&gt;React Performance Tips&lt;/p&gt;

&lt;p&gt;Use React.memo() to avoid unnecessary re-renders&lt;br&gt;
 Use useCallback() to memoize functions&lt;br&gt;
 Use useMemo() to memoize expensive calculations&lt;/p&gt;

</description>
    </item>
    <item>
      <title>You don’t need 10 years of experience to be a great developer.</title>
      <dc:creator>Tahir Rafique</dc:creator>
      <pubDate>Mon, 16 Jun 2025 18:09:10 +0000</pubDate>
      <link>https://dev.to/tahir_rafique/you-dont-need-10-years-of-experience-to-be-a-great-developer-357</link>
      <guid>https://dev.to/tahir_rafique/you-dont-need-10-years-of-experience-to-be-a-great-developer-357</guid>
      <description>&lt;p&gt;You don’t need 10 years of experience to be a great developer.&lt;br&gt;
You need 2 years of the right experience.&lt;/p&gt;

&lt;p&gt;We’ve all seen it on job listings:&lt;/p&gt;

&lt;p&gt;“Senior Developer – 8+ years of experience required.”&lt;br&gt;
But let’s be honest… it’s not the years that count, it’s what you did with them.&lt;/p&gt;

&lt;p&gt;⚡️ One dev might spend 5 years copying code and avoiding complexity.&lt;br&gt;
⚡️ Another might spend 2 years solving real problems, building systems end to end, learning from failures, and asking hard questions.&lt;/p&gt;

&lt;p&gt;Experience is not just time, it’s intensity, ownership, and curiosity.&lt;/p&gt;

&lt;p&gt;I’ve seen developers with “junior” titles outperform so-called seniors, simply because they’ve been in environments that challenged them, mentored them, and pushed them beyond comfort zones.&lt;/p&gt;

&lt;p&gt;So maybe it’s time we stop using experience like a stopwatch…&lt;br&gt;
…and start asking:&lt;br&gt;
“What have you actually built?”&lt;br&gt;
“What did you learn when things broke?”&lt;br&gt;
“How did you grow when things got tough?”&lt;/p&gt;

&lt;p&gt;What’s your take on this?&lt;br&gt;
Does time still matter — or is trajectory the real measure of experience?&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
