There are times in React development when things don’t update the way you expect. I’ve been building React applications for over a decade, and I can tell you this: most of the time, React does a great job of updating the UI automatically when state or props change.
But sometimes, you hit a scenario where the UI just won’t refresh. Maybe you’re working with third-party libraries, external APIs, or browser events, and the component simply doesn’t re-render.
In those cases, you need a way to force a React component to re-render. In this tutorial, I’ll walk you through four simple methods I’ve personally used in real-world projects.
Method 1 – Update State with a Dummy Value
The most common way I force a re-render is by updating a piece of state that doesn’t really matter.
Here’s a simple example:
import React, { useState } from "react";
export default function ForceRenderExample() {
const [count, setCount] = useState(0);
const forceRender = () => {
setCount(prev => prev + 1);
};
return (
<div>
<h2>Force Re-render with Dummy State</h2>
<p>Render count: {count}</p>
<button onClick={forceRender}>Force Re-render</button>
</div>
);
}You can see the output in the screenshot below.

In this code, I’m not using count for any logic. I just increment it to trick React into re-rendering. This method is simple and works well when you just need a quick refresh.
Method 2 – Use a Custom Hook (useForceUpdate)
When I need to force re-renders in multiple places, I prefer creating a custom hook.
Here’s the code:
import React, { useState, useCallback } from "react";
function useForceUpdate() {
const [, setToggle] = useState(false);
return useCallback(() => setToggle(t => !t), []);
}
export default function HookForceRenderExample() {
const forceUpdate = useForceUpdate();
return (
<div>
<h2>Force Re-render with Custom Hook</h2>
<button onClick={forceUpdate}>Force Re-render</button>
</div>
);
}You can see the output in the screenshot below.

The hook flips a Boolean value every time you call it. I use this method when I want a reusable way to refresh components without adding extra state variables.
Method 3 – Change the key Prop
Another trick I often use is updating the key prop of a component. React treats components with different keys as completely new ones.
import React, { useState } from "react";
function UserProfile({ userId }) {
return <div>Showing profile for user: {userId}</div>;
}
export default function KeyPropExample() {
const [id, setId] = useState(1);
const refreshProfile = () => {
setId(prev => prev + 1);
};
return (
<div>
<h2>Force Re-render with Key Prop</h2>
<UserProfile key={id} userId={id} />
<button onClick={refreshProfile}>Refresh Profile</button>
</div>
);
}You can see the output in the screenshot below.

By changing the key, React destroys the old component and mounts a new one. I use this when I want to reset a component’s internal state completely.
Method 4 – Use forceUpdate in Class Components
Even though I mostly use functional components today, I still maintain some older apps with class components.
In those cases, React provides a built-in method: this.forceUpdate().
import React, { Component } from "react";
class ForceUpdateExample extends Component {
forceReRender = () => {
this.forceUpdate();
};
render() {
return (
<div>
<h2>Force Re-render in Class Component</h2>
<button onClick={this.forceReRender}>Force Re-render</button>
</div>
);
}
}
export default ForceUpdateExample;You can see the output in the screenshot below.

Calling this.forceUpdate() skips the state/props check and forces React to re-render. I only use this as a last resort because it can make debugging harder.
When Should You Force a Re-Render?
From my experience, forcing re-renders should be rare. If you find yourself doing it often, it usually means something is wrong with your state management.
Still, here are some cases where I’ve found it useful:
- Resetting forms after submission
- Refreshing third-party widgets that don’t play well with React
- Debugging UI issues quickly
- Forcing updates after localStorage or sessionStorage changes
Things to Avoid
Over the years, I’ve learned that forcing re-renders can create performance issues if abused.
Here are some best practices I follow:
- Don’t call force re-render methods inside useEffect without conditions (it can cause infinite loops).
- Avoid using it in every render cycle.
- Prefer fixing the root cause (state/props not updating) before reaching for these tricks.
Conclusion
React is designed to handle re-renders automatically, but sometimes you need to step in and trigger it yourself.
I showed you four practical methods:
- Update the state with a dummy value
- Use a custom useForceUpdate hook
- Change the key prop
- Call forceUpdate() in class components
Each method has its own use case, and now you have the full code to try them out. If you use these techniques carefully, they can save you hours of debugging when React doesn’t behave the way you expect.
You may also like to read other articles:
- Explore Pure Components in React
- Build a React JS Gantt Chart Component
- Work with React Date Picker Component
- Build a Custom Input Component in React

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.