Urgent.News

600+ sources. One page. See who else covered it.

Editions โ–พ

Tech

๐Ÿฅˆ React Performance Tips: 12 Ways to Make Your App Faster

React is fast by default. But as an application grows, unnecessary renders, large lists, too much JavaScript, and excessive API requests can make it slower. The good news is that you don't need complicated tricks everywhere. Let's look at 12 practical ways to improve React performance, from simple improvements to more advanced techniques. 1. Stop Rendering What You Don't Need Every time aโ€ฆ

1. Minimize Unnecessary Renders

React's re-rendering process can slow down large applications. To avoid unnecessary rendering, keep components focused on their specific tasks. For instance, don't mix unrelated states in a single component with a vast UI. This way, updates will only affect the necessary parts of the UI.

2. Organize State Appropriately

Don't centralize all state at the top level of your application. Instead, assign state to the component that utilizes it. For example, consider this simple search bar component:

```jsx

function SearchBox() {

const [query, setQuery] = useState("");

return (

<input

value={query}

onChange={(e) => setQuery(e.target.value)}

/>

);

}

```

Keeping state local to its component reduces unnecessary updates in other parts of the app.

3. Calculate Values Instead of Storing Unnecessary State

Sometimes, you may store large or derived values in state unnecessarily. For example, if you already have `firstName` and `lastName`, there's no need to maintain a separate `fullName` state variable:

```jsx

const fullName = `${firstName} ${lastName}`;

```

Calculating values at render time avoids unnecessary state and state updates.

4. Implement List Virtualization

Rendering thousands of elements can be inefficient. Virtualization can help by only keeping visible items and a small buffer in the DOM. Libraries like react-window can aid with this optimization. However, virtualization isn't necessary for small lists (e.g., lists with fewer than 50 items).

5. Lazy Load Heavy Components

Heavy components or rarely used features should be loaded only when needed, rather than included in the initial bundle. React supports lazy loading using the `lazy` function along with `Suspense`:

```jsx

const Settings = lazy(() => import("./Settings"));

```

This approach helps keep the initial bundle small, resulting in faster load times.

6. Manage UI Responsiveness

Some updates don't require immediate execution. For example, a search input should react instantly, while processing thousands of results can occur at a lower priority. React's `useTransition` and `useDeferredValue` functions can manage such asynchronous tasks:

```jsx

const debouncedSearch = useDebounce(search, 500);

```

This technique can be applied to search input, filtering, large lists, and complex dashboards to maintain a responsive UI.

7. Reduce API Requests

API requests contribute to an application's overall performance. Consider implementing strategies such as caching, request deduplication, pagination, or debouncing to reduce unnecessary network requests:

```jsx

// Caching example

if (cache.has(url)) {

return cache.get(url);

}

```

8. Use Memoization Wisely

Memoization tools like `useMemo`, `useCallback`, and `React.memo` can improve performance by caching calculations, function references, or components. However, they should be used judiciously. Opt for memoization only when dealing with expensive calculations or when a component renders unnecessarily:

```jsx

const filteredUsers = useMemo(() => {

return users.filter(user => user.name.includes(search));

}, [users, search]);

```

9. Leverage React's Compiler

The React Compiler can automatically optimize components, values, and functions, reducing the need for manual optimizations. If the Compiler is enabled in your project, let it handle optimization whenever possible. Only manually memoize when necessary, after assessing whether manual optimization is truly required.

10. Use Stable Keys and References

Keys are essential for React to identify items in a list. Always use stable keys like unique identifiers (e.g., `item.id`) instead of stable references. This maintains efficient list rendering and minimizes unnecessary re-renders:

```jsx

items.map(item => (

<Item key={item.id} />

));

```

By following these twelve performance tips, developers can significantly enhance their React applications, even on a large scale.

Written by urgent.news from Dev.to's reporting โ€” not their text. Machine-written โ€” may contain errors; check the original before relying on it.

Read the original at dev.to โ†’

More in Tech

More from Wednesday 5 August โ†’