There is no difference. There in no performance difference or functionality difference. In fact they both reference the same exact function.

import React, { useEffect } from 'react'
React.useEffect === useEffect // true

So which to use is entirely down to your preferences.

Some people like to have an namespace for React stuff so you can type React.use and have your IDE's autocomplete give you nice suggestions.

Some people like to keep line length shorter by importing the functions directly.

It's up to you. Neither is obviously wrong.


One thing that maybe matters is that a smart bundler may be able to tree shake things you aren't using, which makes the code you are shipping to the user smaller.

If you do import React from 'react'; React.useState() then the bundler must include the entire React object. But if you import { useState } from 'react', then the bundle may be able to include only the useState function in the final bundle.

I say may because bundling is complicated. And not all modules that you import may be tree shaken in this way. And for React, you probably are including all of React in your bundle anyway.

But for these reasons, I'd argue it's a reasonable habit to get into when the module you are importing supports it.


And for what it's worth, the react docs import each function individually.

Answer from Alex Wayne on Stack Overflow
🌐
DIO
dio.me › articles › understanding-use-vs-useeffect-in-react-19
Understanding use vs. useEffect in React 19 | Eric Ricielle | DIO
July 15, 2024 - - Purpose: useEffect is versatile for various side effects including data fetching, while "use" is focused on integrating asynchronous data fetching directly within the component's render logic.
Discussions

Tried explaining how React 19 reduces useEffect usage — would appreciate feedback
Change the headline to “how react useEffect causes pre-mature aging”. That will get everyone’s attention. Trust me. More on reddit.com
🌐 r/reactjs
8
8
March 1, 2026
reactjs - Is there a difference between: e.g. useEffect() & React.useEffect() - Stack Overflow
This imports only the specified members from "react". In this case only the useEffect and useState. More on stackoverflow.com
🌐 stackoverflow.com
reactjs - With introduction of React 19, how would you implement a refetch on some value change - Stack Overflow
The React 19 will introduce a use hook, which will allow us to avoid all the useEffects with state setting, but what if we want to refetch the same value on some state change, button click? For exa... More on stackoverflow.com
🌐 stackoverflow.com
Goodbye, useEffect - Reactathon 2022
TLDW? In general it's good to summarise longer videos. More on reddit.com
🌐 r/reactjs
104
191
June 6, 2022
🌐
Medium
medium.com › @ademyalcin27 › the-new-use-hook-in-react-19-a-game-changer-for-simpler-data-fetching-and-context-management-cc45cc5ebd28
The New use() Api React 19: A Game Changer for Simpler Data Fetching and Context Management | by Ademyalcin | Medium
November 10, 2025 - Let’s dive into how this hook works and explore it with custom examples to show just how much it simplifies our React applications. ... Traditionally, developers relied on useEffect to perform data fetching, coupled with state hooks like useState to manage loading, error, and data states.
🌐
React
react.dev › reference › react › useEffect
useEffect – React
If your Effect wasn’t caused by an interaction (like a click), React will generally let the browser paint the updated screen first before running your Effect. If your Effect is doing something visual (for example, positioning a tooltip), and the delay is noticeable (for example, it flickers), replace useEffect with useLayoutEffect.
🌐
Reddit
reddit.com › r/reactjs › tried explaining how react 19 reduces useeffect usage — would appreciate feedback
r/reactjs on Reddit: Tried explaining how React 19 reduces useEffect usage — would appreciate feedback
March 1, 2026 -

I’ve been trying to understand how React 19 changes async logic, especially around reducing the need for useEffect in data fetching and form actions.

I put together a short 9-minute explanation covering use(), Server Actions, useOptimistic and useFormStatus, mainly focusing on how they simplify common async patterns.

Would really appreciate any feedback on whether the explanation makes sense or if I’ve misunderstood anything.

Video link: https://youtu.be/H8RTMU5tVmU

Top answer
1 of 3
1

There is no difference. There in no performance difference or functionality difference. In fact they both reference the same exact function.

import React, { useEffect } from 'react'
React.useEffect === useEffect // true

So which to use is entirely down to your preferences.

Some people like to have an namespace for React stuff so you can type React.use and have your IDE's autocomplete give you nice suggestions.

Some people like to keep line length shorter by importing the functions directly.

It's up to you. Neither is obviously wrong.


One thing that maybe matters is that a smart bundler may be able to tree shake things you aren't using, which makes the code you are shipping to the user smaller.

If you do import React from 'react'; React.useState() then the bundler must include the entire React object. But if you import { useState } from 'react', then the bundle may be able to include only the useState function in the final bundle.

I say may because bundling is complicated. And not all modules that you import may be tree shaken in this way. And for React, you probably are including all of React in your bundle anyway.

But for these reasons, I'd argue it's a reasonable habit to get into when the module you are importing supports it.


And for what it's worth, the react docs import each function individually.

2 of 3
0

Question is not specific to react, but any ES module where we can either destructure imports or use dot notation.

Might be a slightly better to extract the property once instead of reading it from the object.

Also, the fact that the minified bundle will include something of the form r.u instead of u if we plan on not destructing.

Here is the babel playground

Find elsewhere
🌐
LogRocket
blog.logrocket.com › home › react has finally solved its biggest problem: the joys of useeffectevent
React has finally solved its biggest problem: The joys of useEffectEvent - LogRocket Blog
January 7, 2026 - With new tools like the compiler and enhancements like useEffectEvent we are able to write far more reliable and resilient React code. React sure ain’t dead, and it’s getting better with each release! You should definitely check out React 19.2 to try out useEffectEvent for yourself to see how much cleaner and safer your useEffect Hooks can be by using useEffectEvent.
🌐
Medium
vageeshawihangi.medium.com › new-features-in-react-19-new-react-hooks-af9c05d0d284
New Features in React 19 — New React Hooks | by VageeshaW | Medium
May 10, 2024 - We are using the use hook to execute the fetchUsers instead of using the useEffect or useState hooks. The return of the useState hook is users which will have the response of the GET request (users).
🌐
JavaScript in Plain English
javascript.plainenglish.io › my-thoughts-on-the-use-hook-a-deep-dive-into-react-19s-latest-experimental-feature-4cc9de30e71b
My thoughts on the use() hook — A deep dive into React 19’s latest experimental feature | by Ifeanyi Aladi | JavaScript in Plain English
November 21, 2024 - Here’s how we’d do the same thing with far less lines of code with the use() hook, eliminating the need of the useState and useEffect hooks for data fetching, loading state and error state while still implementing resource caching for improved performance.
🌐
DEV Community
dev.to › hasunnilupul › react-19s-use-hook-a-practical-guide-with-examples-beb
⚛️ React 19's `use()` Hook: A Practical Guide with Examples - DEV Community
May 27, 2025 - Why it matters in React 19 · Real-world examples with async data fetching and server components · How to migrate from traditional patterns · use() is a new hook that lets you read the value of a promise directly inside a component — mostly ...
🌐
DEV Community
dev.to › vishnusatheesh › react-19-hooks-explained-everything-you-need-to-know-4il6
React 19 Hooks Explained: Everything You Need to Know - DEV Community
March 1, 2025 - With React 19, the new use hook simplifies this process by allowing you to directly await a promise inside components. This eliminates the need for extra useEffect and useState code, making data fetching feel more like synchronous code.
🌐
DEV Community
dev.to › smartterss › you-might-not-need-useeffect-anymore-in-react-3dih
You Might Not Need useEffect Anymore in React - DEV Community
June 23, 2025 - A. Yes, but only for specific use ... like Server Components and Server Actions, many common useEffect patterns can now be replaced with cleaner, more declarative solutions....
🌐
Reddit
reddit.com › r/reactjs › goodbye, useeffect - reactathon 2022
r/reactjs on Reddit: Goodbye, useEffect - Reactathon 2022
June 6, 2022 - Don't most people use useEffect for fetching some initial state from a server? The only event to move that do is onDomContentLoaded or similar, which in turn what useEffect was built to replace from class components. Also maybe I'm dumb but what is synchronization? that's a broad term. ... Long term, React is going to push you towards using Suspense for data fetching.
🌐
React
react.dev › learn › you-might-not-need-an-effect
You Might Not Need an Effect – React
In general, whenever you have to resort to writing Effects, keep an eye out for when you can extract a piece of functionality into a custom Hook with a more declarative and purpose-built API like useData above. The fewer raw useEffect calls you have in your components, the easier you will find ...
🌐
DEV Community
dev.to › hash01 › react-192s-useeffectevent-vs-our-custom-useeventcallback-i45
React 19.2's useEffectEvent vs our Custom useEventCallback - DEV Community
January 26, 2026 - Adopt useEffectEvent specifically for functions called within effects · They serve different purposes, even though they solve similar problems. If you're on React 19.2+, start migrating effect-specific uses:
🌐
Marmelab
marmelab.com › blog › 2024 › 01 › 23 › react-19-new-hooks.html
New client-side hooks coming to React 19
January 23, 2024 - Well, it’s no longer true for React 19. This new use hook has a hidden power: Unlike all other React Hooks, use can be called within loops and conditional statements like if.
🌐
Medium
medium.com › @ignatovich.dm › react-19-2-useeffectevent-hook-f8eb2348553e
React 19.2 useEffectEvent hook. React 19.2 introduces useEffectEvent, a… | by Frontend Highlights | Medium
October 16, 2025 - Not a magic dependency skip: Don’t use useEffectEvent to hide legitimate dependencies. If your logic is truly reactive (needs to re-run when something changes), include it as a dependency, or use useEffect normally.
🌐
Fireup
fireup.pro › home › news › goodbye useeffect exploring use in react
Goodbye useEffect: Exploring use() in React 19 : fireup.pro
May 20, 2025 - With traditional methods, orchestrating ... loading states, and careful error handling. With use(), the component simply expresses its data requirements, and React handles the rest....
🌐
Reddit
reddit.com › r/reactjs › react 19: is usecontext obsolete? what are the differences between use?
r/reactjs on Reddit: React 19: Is useContext obsolete? What are the differences between use?
December 8, 2024 -

I was reading up on the React 19 changes and one of them is the use keyword.

On the React docs, it says:

When a context is passed to use, it works similarly to useContext [...] use is preferred over useContext because it is more flexible

From what I understand, use is just useContext but you have the flexibility to call it conditionally and in code blocks.

Which is why I'm confused. Why didn't the developers just change useContext's functionality instead of creating a new hook if they work similarly? If use just adds features, it doesn't break any compatibility, right?

Please let me know if I am missing something.