Smooth Transitions and Loading States with React’s useTransition

Ibrahim Haouari
2 min readMar 2, 2023

--

React’s useTransition hook is a powerful tool that enables developers to create smooth transitions and loading states in their applications. It’s particularly useful for handling slow or asynchronous updates to the UI. In this article, we’ll explore what useTransition is and how to use it with some examples.

What is useTransition?

useTransition is a React hook that allows developers to add a loading state to asynchronous updates in their applications. It was introduced in React 18, and it’s designed to be used with React’s concurrent mode. When you use useTransition, your component can display a temporary loading state while waiting for data to be fetched or updated.

The useTransition hook takes two arguments: a configuration object and a timeout duration. The configuration object contains two properties: a boolean called “isPending” and a function called “startTransition”. When “isPending” is set to true, the component will display a loading state. When “startTransition” is called, React will start a new “transition” state, during which updates to the UI will be suspended until the timeout duration has elapsed or the transition is complete.

Here’s an example of how to use useTransition:

import React, { useState, useTransition } from 'react';

function MyComponent() {
const [data, setData] = useState(null);
const [isPending, startTransition] = useTransition({
timeoutMs: 3000,
});

const handleClick = () => {
startTransition(() => {
fetch('/api/data')
.then(response => response.json())
.then(json => setData(json))
});
};

return (
<div>
<button onClick={handleClick}>Fetch Data</button>
{isPending ? (
<p>Loading...</p>
) : (
<ul>
{data.map(item => (
<li key={item.id}>{item.name}</li>
))}
</ul>
)}
</div>
);
}

In this example, we have a component that displays a list of data fetched from an API. When the user clicks the “Fetch Data” button, the component calls startTransition and fetches data from the API. While the data is being fetched, the component displays a loading state.

Notice that we pass a configuration object to useTransition with a timeout duration of 3000ms. This means that if the data is not fetched within 3 seconds, React will cancel the transition and display an error message.

When the data is fetched, we update the component’s state using setData. This causes React to exit the transition state and render the new data.

React’s useTransition hook is a powerful tool that enables developers to add loading states to asynchronous updates in their applications. With useTransition, you can create smooth transitions and improve the user experience of your application. In this article, we’ve explored what useTransition is and how to use it with some examples.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response