Nuxt 3 reached end of life on 31 July 2026. Your app still runs, but it no longer gets security patches or bug fixes, and new module releases are moving to Nuxt 4.
The good news is that the Nuxt 3 β 4 upgrade is much smaller than Nuxt 2 β 3 was. The bad news is that most of the breaking changes don't throw errors. They change behaviour quietly, so things look fine until a user notices.
After going through the official upgrade guide line by line, these are the seven changes I'd check first.
data and error are now undefined, not null
const { data } = await useFetch ( '/api/product' ) if ( data . value === null ) showEmptyState ( ) // never true in Nuxt 4
Enter fullscreen mode
Exit fullscreen mode
Anything that checks for null quietly stops working. Use data.value == null, a falsy check, or compare with undefined.
data is a shallowRef
data.value.title = 'New title' // no longer re-renders
Changing a nested property no longer triggers reactivity.β¦