{"record":{"id":"a30eb9d5d1a88bf5","repo":"facebook/relay","slug":"not-implemented","errorCode":null,"errorMessage":"Not Implemented","messagePattern":"Not Implemented","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/relay-runtime/multi-actor-environment/ActorIdentifier.js","lineNumber":39,"sourceCode":"const INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE: ActorIdentifier =\n  'INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE';\n\nfunction assertInternalActorIdentifier(actorIdentifier: ActorIdentifier): void {\n  invariant(\n    actorIdentifier === INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,\n    'Expected to use only internal version of the `actorIdentifier`. \"%s\" was provided.',\n    actorIdentifier,\n  );\n}\n\nmodule.exports = {\n  INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,\n  assertInternalActorIdentifier,\n  getActorIdentifier(actorID: string): ActorIdentifier {\n    return actorID as ActorIdentifier;\n  },\n  getDefaultActorIdentifier(): ActorIdentifier {\n    throw new Error('Not Implemented');\n  },\n};\n","sourceCodeStart":21,"sourceCodeEnd":42,"githubUrl":"https://github.com/facebook/relay/blob/668b1b85e06261aa3b58dabfc51f8b5524a70955/packages/relay-runtime/multi-actor-environment/ActorIdentifier.js#L21-L42","documentation":"getDefaultActorIdentifier in the multi-actor-environment API is intentionally unimplemented; the module only provides utilities to build/split actor identifiers. Calling this method throws 'Not Implemented' — multi-actor environments require you to supply your own actor-identifier resolution.","triggerScenarios":"Calling MultiActorEnvironment's default actor resolution path, i.e. using a multi-actor setup (getActorIdentifier / actor-conditional queries) without providing a custom default actor identifier implementation.","commonSituations":"Adopting the experimental multi-actor-environment API (e.g. per-actor GraphQL fragments in fed-style schemas) and relying on the default implementation instead of overriding actor identification.","solutions":["Provide your own actor identifier resolution when constructing the multi-actor environment instead of calling getDefaultActorIdentifier","Only call getActorIdentifier(actorID) to construct explicit actor identifiers, or use assertInternalActorIdentifier for internal ids","Avoid multi-actor APIs if you don't need them; use a standard RelayModernEnvironment"],"exampleFix":"// before\nconst id = env.getDefaultActorIdentifier();\n// after\nconst id = getActorIdentifier('user:123'); // build an explicit ActorIdentifier","handlingStrategy":"validation","validationCode":"if (typeof env.getDefaultActorIdentifier === 'function') {\n  // multi-actor default resolution is not implemented; never call it\n  throw new Error('Provide explicit actor identifiers via getActorIdentifier(actorID)');\n}","typeGuard":null,"tryCatchPattern":"try {\n  env.getDefaultActorIdentifier();\n} catch (e) {\n  if (e.message === 'Not Implemented') {\n    // fall back to an explicit actor id derived from your session\n  }\n}","preventionTips":["Always construct ActorIdentifiers explicitly with getActorIdentifier(actorID)","Treat multi-actor-environment APIs as experimental and pin versions","Wrap unimplemented APIs behind your own resolution layer"],"tags":["multi-actor-environment","not-implemented","experimental-api"],"backgroundTag":"api-not-implemented","analyzedSha":"668b1b85e06261aa3b58dabfc51f8b5524a70955","analyzedAt":"2026-09-02T19:57:20.783Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}