Recoil: recoil-sync window is not defined in NextJS using SSR

Hello!

I’m seeing this error when trying to use recoil-sync with NextJS. I assume it’s something to do with SSR.

index.js?46cb:352 Uncaught at getURL (file:///sites/node_modules/recoil-sync/cjs/index.js:2001:33)
    at <unknown> (file:///sites/node_modules/recoil-sync/cjs/index.js:2031:36)
    at useRecoilURLSync (file:///sites/node_modules/recoil-sync/cjs/index.js:2036:26)
    at useRecoilURLSyncJSON (file:///sites/node_modules/recoil-sync/cjs/index.js:2178:3)
    at RecoilURLSyncJSON (file:///sites/node_modules/recoil-sync/cjs/index.js:2185:3)
    at processChild (file:///sites/node_modules/react-dom/cjs/react-dom-server.node.development.js:3353:14)
    at resolve (file:///sites/node_modules/react-dom/cjs/react-dom-server.node.development.js:3270:5)
    at ReactDOMServerRenderer.render (file:///sites/node_modules/react-dom/cjs/react-dom-server.node.development.js:3753:22)
    at ReactDOMServerRenderer.read (file:///sites/node_modules/react-dom/cjs/react-dom-server.node.development.js:3690:29)
    at Object.renderToString (file:///sites/node_modules/react-dom/cjs/react-dom-server.node.development.js:4298:27)

Recoil 7.2 Recoil-sync 0.0.1-alpha.1 NextJS 12.1.0 React 17.0.2

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 4
  • Comments: 16 (9 by maintainers)

Most upvoted comments

Ah, my mistake!

Confirmed this is working

getURL: () => {
  return `http://localhost:3000${router.route}`;
},

Thank you for your patience in helping me with this.

currently the usage of refine should be

import {refine} from 'recoil-sync';
const {string} = refine;