{"record":{"id":"9548b47bd7618f05","repo":"facebook/react","slug":"no-server-callback-has-been-registered-call-setse","errorCode":null,"errorMessage":"No server callback has been registered. Call setServerCallback to register one.","messagePattern":"No server callback has been registered\\. Call setServerCallback to register one\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js","lineNumber":65,"sourceCode":"    qs.set('env', environmentName);\n    return devServer + '/__parcel_source_map?' + qs.toString();\n  }\n  return null;\n}\n\ntype CallServerCallback = <A, T>(id: string, args: A) => Promise<T>;\n\nlet callServer: CallServerCallback | null = null;\nexport function setServerCallback(fn: CallServerCallback) {\n  callServer = fn;\n}\n\nfunction callCurrentServerCallback<A, T>(\n  id: ServerReferenceId,\n  args: A,\n): Promise<T> {\n  if (!callServer) {\n    throw new Error(\n      'No server callback has been registered. Call setServerCallback to register one.',\n    );\n  }\n  return callServer(id, args);\n}\n\nexport function createServerReference<A: Iterable<any>, T>(\n  id: string,\n  exportName: string,\n): (...A) => Promise<T> {\n  return createServerReferenceImpl(\n    id + '#' + exportName,\n    callCurrentServerCallback,\n    undefined,\n    findSourceMapURL,\n    exportName,\n  );\n}","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/facebook/react/blob/eafeac097ba51e1eab809c07102126bd5f8e5425/packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js#L47-L83","documentation":"react-server-dom-parcel's browser client ships no default transport for invoking Server Functions — the host framework supplies one via setServerCallback(fn). Every server reference decoded from a Flight payload routes through callCurrentServerCallback; if no callback was registered before the first invocation, it throws.","triggerScenarios":"Calling any server function before setServerCallback(...) has run: an action invoked at module scope or during first render before the bootstrap executed; an SSR entry hitting an action; the bootstrap script missing entirely.","commonSituations":"Custom Parcel-based RSC frameworks wiring their own POST endpoint; script-ordering issues where the component bundle executes before the bootstrap; copying a minimal example and omitting the setup step.","solutions":["Call setServerCallback once at the very top of the client entry, before rendering anything that can invoke actions","Implement the callback as a POST of {id, args} that decodes the returned Flight payload using createFrom*","If an action can slip through early, queue or defer it until the callback is registered"],"exampleFix":"// before — no transport registered\nimport {createFromFetch} from 'react-server-dom-parcel/client';\n// later: saveNote() throws\n\n// after — bootstrap first\nimport {setServerCallback, createFromFetch} from 'react-server-dom-parcel/client';\nsetServerCallback(async (id, args) => {\n  const payload = fetch('/server-endpoint', {\n    method: 'POST',\n    body: JSON.stringify({id, args}),\n  });\n  return createFromFetch(payload, window.__serverManifest);\n});","handlingStrategy":"validation","validationCode":"import {setServerCallback} from 'react-server-dom-parcel/client';\nlet installed = false;\nexport function installServerCallback(fn) {\n  setServerCallback(fn);\n  installed = true;\n}\nexport function canCallServer() {\n  return installed;\n}\n// gate action call sites: if (!canCallServer()) queue or disable the action","typeGuard":null,"tryCatchPattern":"try {\n  await action(...args);\n} catch (e) {\n  if (/No server callback has been registered/.test(e.message)) {\n    // bootstrap ordering bug — register the callback, then surface a retry prompt\n  }\n  throw e;\n}","preventionTips":["Call setServerCallback as the first statement of the client entry","Keep bootstrap ordering deterministic (callback before any component bundle runs)","Expose a canCallServer() flag and gate action UI on it"],"tags":["react-server-components","server-actions","parcel","bootstrap"],"backgroundTag":"call-server-not-configured","analyzedSha":"eafeac097ba51e1eab809c07102126bd5f8e5425","analyzedAt":"2026-08-21T22:01:08.818Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}