{"record":{"id":"c7a4d55f7c1525fd","repo":"ReactiveX/rxjs","slug":"scheduler-backed-generate-is-not-supported-by-this","errorCode":null,"errorMessage":"Scheduler-backed generate is not supported by this Symbol contract.","messagePattern":"Scheduler-backed generate is not supported by this Symbol contract\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/rxjs/src/generate.ts","lineNumber":43,"sourceCode":"  }\n}\n\nObservable[generate] = function generateImpl<T, S>(\n  this: ObservableCtor,\n  initialStateOrOptions: S | GenerateOptions<T, S>,\n  condition?: (state: S) => boolean,\n  iterate?: (state: S) => S,\n  resultSelector?: (state: S) => T\n): Observable<T | S> {\n  let initialState: S;\n  let selectedCondition: ((state: S) => boolean) | undefined;\n  let selectedIterate: (state: S) => S;\n  let selectedResult: (state: S) => T | S;\n\n  if (arguments.length === 1) {\n    const options = initialStateOrOptions as GenerateOptions<T, S>;\n    if ('scheduler' in (options as object) && (options as GenerateOptions<T, S> & { scheduler?: unknown }).scheduler !== undefined) {\n      throw new Error('Scheduler-backed generate is not supported by this Symbol contract.');\n    }\n    initialState = options.initialState;\n    selectedCondition = options.condition;\n    selectedIterate = options.iterate;\n    selectedResult = options.resultSelector ?? ((state) => state);\n  } else {\n    if (arguments.length > 4) {\n      throw new Error('Scheduler-backed generate is not supported by this Symbol contract.');\n    }\n    initialState = initialStateOrOptions as S;\n    selectedCondition = condition;\n    selectedIterate = iterate as (state: S) => S;\n    selectedResult = resultSelector ?? ((state) => state);\n  }\n\n  return this[create]((subscriber) => {\n    let state = initialState;\n","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/ReactiveX/rxjs/blob/54796b38a57e6309f9861e174737479bb3f63f61/packages/rxjs/src/generate.ts#L25-L61","documentation":"generate() in RxJS Next has no scheduler support. When called with a single options object, presence of a 'scheduler' property with a non-undefined value throws, because scheduler-backed timing is outside the Symbol contract.","triggerScenarios":"generate({ initialState: 0, condition: s => s < 5, iterate: s => s + 1, scheduler: asyncScheduler }).","commonSituations":"RxJS 7 code that used generate with a scheduler (common in tests and polling) running unchanged against RxJS Next, or copy-pasted options including scheduler: null from docs.","solutions":["Delete the scheduler property from the options object","Apply scheduling after generation: generate({...}).pipe(observeOn-like operator) or in the testing layer use the TestScheduler marble harness"],"exampleFix":"// before\ngenerate({ initialState: 0, iterate: s => s + 1, scheduler: asyncScheduler });\n// after\ngenerate({ initialState: 0, iterate: s => s + 1 });","handlingStrategy":"validation","validationCode":"const { scheduler: _ignored, ...opts } = options; // strip legacy key\nobs ?? generate(opts);","typeGuard":"const hasScheduler = (o: object) => 'scheduler' in o && (o as any).scheduler !== undefined;","tryCatchPattern":null,"preventionTips":["Destructure out scheduler when reusing legacy option objects","Move timing to the pipeline or the test scheduler"],"tags":["generate","scheduler","rxjs-next","migration","removed-api"],"backgroundTag":"removed-scheduler-argument","analyzedSha":"54796b38a57e6309f9861e174737479bb3f63f61","analyzedAt":"2026-08-28T10:21:27.410Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}