React 19 support

I’ve spent some time trying to update the repository with our UI extensions to React 19, but have found that any test that renders anything (e.g. component and hook tests) fail with the message:

TypeError: resolveUpdatePriority is not a function
      at requestUpdateLane (node_modules/react-reconciler/cjs/react-reconciler.development.js:11826:11)
      at Object.exports.updateContainer (node_modules/react-reconciler/cjs/react-reconciler.development.js:16681:16)
      at render (node_modules/@remote-ui/react/build/cjs/render.js:64:14)
      at Object.render (node_modules/@remote-ui/react/build/cjs/render.js:18:7)
      at tests/utils/rendering.tsx:10:10
      at node_modules/@remote-ui/testing/build/cjs/mount.js:17:5
      at act (node_modules/@remote-ui/testing/build/cjs/mount.js:144:20)
      at mount (node_modules/@remote-ui/testing/build/cjs/mount.js:16:3)

This was happening with these versions:

@remote-ui/testing: 1.4.4
@testing-library/react: 16.2.0
react-reconciler: 0.31.0
@shopify/ui-extensions-react: 2025.1.3

This seems to be something relating to react-reconciler; however, downgrading that package to 0.29.0 results in the error changing to

TypeError: Cannot read properties of undefined (reading 'ReactCurrentOwner')
     at Object.$$$reconciler [as default] (node_modules/react-reconciler/cjs/react-reconciler.development.js:491:46)
      at Object.createReconciler (node_modules/@remote-ui/react/build/cjs/reconciler.js:14:45)
      at Object.<anonymous> (node_modules/@remote-ui/react/build/cjs/render.js:14:38)
      at Object.<anonymous> (node_modules/@remote-ui/react/build/cjs/index.js:6:14)
      at Object.<anonymous> (node_modules/@remote-ui/react/index.js:1:120)
      at Object.<anonymous> (node_modules/@shopify/ui-extensions-react/build/cjs/surfaces/checkout/render.js:6:13)
      at Object.<anonymous> (node_modules/@shopify/ui-extensions-react/build/cjs/surfaces/checkout.js:6:14)

I imagine this is down to the @shopify/ui-extensions-react package not having a release that’s compatible with React 19 – is this the case? If so, when can we expect a new release that unblocks the update to React 19? Thanks! :folded_hands:

1 Like

Hey @AndyPye - I suspect you’re right on this one - just checking the UI Extensions package itself it seems like we support :

"react": ">=17.0.0 <18.0.0"

I’m going to touch base with our developers directly on my end here to confirm and see if we can share any updates when it comes to React 19 support though - I’ll loop back with you here when I have some more info to share on my end.

1 Like

Hey folks :waving_hand: - just following up on this. @AndyPye - you were correct here. Currently, we don’t have support for React 19. I was able to touch base with our developers and they did let me know that we also don’t currently have any updates to share when it comes to supporting it.

I would say just to keep an eye on our change logs here for any updates: Recent changes to Shopify’s platform or on the repo itself to get the most up to date info on React versioning there.

1 Like

Hi @Alan_G! Thanks so much for looking into this :person_bowing: For some context, some developers set restrictions on how much libyear drift they consider to be acceptable as a means of ensuring that their code’s dependencies are fresh (and therefore secure, amongst other benefits). Being dependent on Shopify’s UI extension packages, and not being able to update other dependencies because of those packages being incompatible, results in an accumulation of drift, nudging us towards a breach on that metric (and even without “formalising” that measurement, the outcome of being blocked on updating packages is still the same). If Shopify wants to support app developers to have the best experience and be able keep their apps up to date, it’d be super-helpful if they stayed on top of their own updates. React 19 has been considered stable for 4 months now so it’d be great if Shopify could make their packages compatible with it :folded_hands:

1 Like

No worries @AndyPye - happy to clarify here a little bit at least. I’m still not able to guarantee when an update will be pushed to bring the library up to date with React 19, but I’ll pass your feedback on to our developers directly - it’s really appreciated!

1 Like

That’s great, thanks @Alan_G! :person_bowing:

1 Like

+1, having React 19 support would be really appreciated