🤔 useMemo and useCallback confuse almost every React developer. Here’s the clearest way to think about it 👇 🧠 Core idea: → useMemo = cache a VALUE → useCallback = cache a FUNCTION REFERENCE 💻 Example: // useMemo — don't recalculate unless deps change const total = useMemo(() => cart.reduce((sum, item) => sum + item.price, 0), [cart] ); // useCallback — don't recreate unless deps change const handleClick = useCallback(() => { doSomething(id); }, [id]); 🎯 When to use useCallback: When you pass a function to a React.memo’d child Without it 👇 ➡️ A new function is created every render ➡️ React.memo becomes useless ⚠️ Common mistake: Wrapping everything in useMemo / useCallback “just in case” 💡 Reality check: Both hooks have a cost Use them only when: ✔️ You’ve identified a real performance issue ✔️ You’ve actually measured it 📌 Rule: Premature optimization ≠ good engineering #ReactJS #Hooks #JavaScript #FrontendDev
Rahul Jha’s Post
More Relevant Posts
-
React isn’t just a library—it’s a mindset. From breaking down complex UIs into reusable components to managing state with precision, React teaches you how to think in systems, not just screens. What looks like simple code on the surface is actually layers of logic, structure, and scalability working together behind the scenes. Just like any powerful tool, the real value of React isn’t in writing code—it’s in how you architect experiences. Build components. Think in flows. Design for scale. #ReactJS #FrontendDevelopment #WebDevelopment #JavaScript #SoftwareEngineering
To view or add a comment, sign in
-
-
Starting My React.js Journey – Basics with Code! Today, I revisited the fundamentals of React.js, and I believe mastering the basics is the key to building powerful applications. Sharing a quick snippet that demonstrates how simple and clean React can be import React from "react"; function Welcome() { const name = "Developer"; return ( <div> <h1>Hello, {name} </h1> <p>Welcome to React Basics!</p> </div> ); } export default Welcome; What this covers: - Functional Components - JSX (JavaScript + HTML) - Dynamic Data Rendering using variables Key Learning: React is not just a library — it's a mindset of building reusable and maintainable UI components. Next Steps: - Props & State - Event Handling - Component Lifecycle Consistency beats intensity. Small steps every day = Big growth #ReactJS #WebDevelopment #JavaScript #Frontend #CodingJourney #100DaysOfCode
To view or add a comment, sign in
-
most React developers have too many useEffects. i did too. until i read this rule and couldn't unsee it: if you're using useEffect to sync state with another state you don't need useEffect. here's what i mean. (the pattern 1 .. i see everywhere) but pattern 2 give same result . no effect. no extra render cycle. useEffect is for syncing React with something outside React. - fetching data from an API - setting up a subscription - manually touching the DOM not for calculating values you could just... calculate. every unnecessary useEffect is a hidden render cycle your users pay for. before you write useEffect ask one question: am i syncing with something outside React, or am i just doing math? if it's math delete the effect. #reactjs #typescript #webdevelopment #buildinpublic #javascript
To view or add a comment, sign in
-
-
I made React slower trying to optimize it. Wrapped everything in useMemo. Added useCallback everywhere. Felt productive. Performance got worse. Here's what I didn't understand about re-renders 👇 4 things that trigger a re-render: > State change > Prop change > Parent re-renders (even if YOUR props didn't change) > Context update That third one is responsible of unnecessary re-renders I've seen in real codebases. The fix isn't memorizing APIs. It's this order: 1. Profile first Open React DevTools Profiler. Find the actual problem. Takes 2 minutes. 2. Wrap the right components in React.memo Not all of them. Only components that are expensive AND receive stable props. 3. Stabilise your functions with useCallback Without it - new function reference every render --> child always re-renders. Doesn't matter if you have React.memo. 4. useMemo for heavy calculations only Not for "this array map looks expensive." Only when Profiler proves it. The rule I follow now: Don't optimise what you haven't measured. One change in the right place beats 10 changes in the wrong ones. What's the most unnecessary useMemo you've ever written? 😄 #React #JavaScript #Frontend #WebDev
To view or add a comment, sign in
-
A small mistake I used to make in React: Re-rendering components more than needed. At first, I didn’t think much about it — everything was “working fine.” But as components grew, I started noticing: • Unnecessary re-renders • Slower UI updates • Harder debugging What helped me improve: • Using React.memo for pure components • Avoiding inline functions/objects where not needed • Proper use of useCallback and useMemo • Avoiding unnecessary useEffect usage • Managing dependency arrays correctly • Keeping state as minimal as possible Big learning: 👉 Just because it works doesn’t mean it’s efficient. Performance issues often come from small habits, not big mistakes. Still learning, but being mindful of re-renders and side effects has made a noticeable difference. What’s one React mistake you fixed that improved performance? #reactjs #javascript #webdevelopment #frontend #fullstackdeveloper
To view or add a comment, sign in
-
-
🚀 Built a Simple React Form with Controlled Components Today I practiced building a simple form in React using useState and a single handleChange function. 🔹 Managed multiple inputs (text + checkbox) using one state object 🔹 Used dynamic updates with name attribute 🔹 Handled checkbox with checked and other inputs with value 🔹 Implemented form submission using preventDefault() 🔹 Reset form fields after submission 💡 Key takeaway: “Use one state and one function to manage the entire form efficiently.” This helped me better understand how React handles form data and state updates in a clean and scalable way. #ReactJS #WebDevelopment #Frontend #JavaScript #Learning #CodingJourney
To view or add a comment, sign in
-
Mastering useState: The Most Important Hook in React If you're working with React, useState is one of the first hooks you learn — and also one you’ll use in almost every component you build. Yet many developers still use it incorrectly and run into stale state or unnecessary re-renders. useState allows you to add state to functional components. It returns an array with two values: the current state and a setter function. const [count, setCount] = useState(0); The real power (and common pitfall) comes when your new state depends on the previous state. Correct way: Using the functional updater (prev) => guarantees you always get the latest state, even when multiple updates happen quickly. A few best practices I always follow: Never mutate state directly. Always create a new object/array using the spread operator (...prev). Use computed property names [dynamicKey] when your key comes from a variable. Keep state as simple as possible. If your state object gets too complex, consider useReducer. I’ve seen many bugs disappear simply by switching from setState(newValue) to the functional form when the update relies on previous values. Whether you’re building a small UI or a complex audio/video player like the one I was recently working on, mastering useState patterns makes your code more predictable, cleaner, and easier to debug. What’s one useState trick or gotcha you’ve learned? Drop it in the comments #React #JavaScript #WebDevelopment #Frontend #CodingTips
To view or add a comment, sign in
-
-
🚨 Small React mistake… big headache 👇 I used to write code like this without even thinking: if (condition) return null; useEffect(() => { // logic }, []); It looks completely fine, right? I thought the same ❌ Then suddenly this error shows up: 👉 "Rendered fewer hooks than expected" Took me some time to realize what was actually wrong. React expects hooks to run in the same order every single render. But in this case: • First render → component returns early → useEffect doesn’t run • Next render → useEffect runs And boom 💥 React gets confused because the order changed. The fix is simple (but easy to forget): useEffect(() => { // logic }, []); if (condition) return null; Now hooks always run first, no matter what 👍 💡 Lesson learned: Never put hooks after a condition or inside it. Always keep them at the top. Have you ever hit this error? It’s one of those bugs that looks small but wastes a lot of time 😅 #react #nextjs #javascript #frontend #webdev
To view or add a comment, sign in
-
-
Day 26 #100DaysOfCode 💻 Today I learned about Function, Component, State & Event in Next.js. 🔹 Function Functions are reusable blocks of code used to perform specific tasks. 🔹 Component In Next.js, everything is a component. It helps to break UI into reusable pieces. 🔹 State State is used to store dynamic data inside a component and re-render UI when data changes. 🔹 Event Events handle user interactions like clicks, input, form submission, etc. 💻 Code Snippet: "use client"; import { useState } from "react"; export default function Counter() { const [count, setCount] = useState(0); const handleClick = () => { setCount(count + 1); }; return ( <div> <h2>Count: {count}</h2> <button onClick={handleClick}>Increase</button> </div> ); } 🚀 Small reflection: Understanding these core concepts makes building dynamic and interactive apps much easier. #NextJS #ReactJS #WebDevelopment #JavaScript #Frontend #CodingJourney #Akbiplob
To view or add a comment, sign in
-
https://lnkd.in/dhXuQdTD — I used to think a Length Converter was the "Hello World" of apps. As a Senior Frontend Engineer working with TypeScript, I quickly realized that "simple" tools are where the devil is in the details. Building this for my platform, calculator-all.com, taught me a hard lesson about floating-point math and user trust. 📏 I was using React 19 and Tailwind CSS for the UI, keeping things snappy and responsive. ⚡ But a few users pointed out tiny precision errors when converting between obscure units. I had to dive deep into decimal logic to ensure a carpenter and a physicist could both trust the output. 💻 I used Cursor to iterate through edge cases and Vitest to write a suite of tests for over 20 different units. 🤖 Running everything on Bun and Vite made the development cycle incredibly fast, but the real work was in the logic. 🚀 I even had to account for how different locales format their numbers—something many basic tutorials skip. 🛠️ It’s funny how the tools we take for granted often require the most care behind the scenes. ✨ What’s the most "basic" feature you've built that turned out to be surprisingly complex? 📐 #LengthConverter #FrontendEngineer #TypeScript #ReactJS #WebDevelopment #SoftwareEngineering #Bun #Vite #TailwindCSS #React19 #Testing #Coding #JavaScript #UnitTesting #CalculatorAll
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development