Skip to content

Upgrading @angular/core 17 to 18

Unknown17.3.12 → 18.2.14

Fetching 52 releases from GitHub…0 / 52
UnknownUpgrade verdict

DepDelta is still reading the notes for this range, so breaking changes can't be ruled out yet.

  • DepDelta is still reading the release notes in this range, so it can't rule out breaking changes yet.
  • This page updates as the notes come in.
Still reading release notes

DepDelta is still reading the release notes in this range. This updates as they come in.

Node.js requirement changed in 18.1.0-next.1: ^18.13.0 || >=20.9.0 → ^18.19.1 || ^20.11.1 || >=22.0.0.

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • removed: call Predicate(value: T): boolean
  • removed: class ɵAfterRenderEventManager
  • removed: enum ɵɵInputFlags
  • removed: function ɵgetEnsureDirtyViewsAreAlwaysReachable(): boolean
  • removed: function ɵinternalAfterNextRender(callback: VoidFunction, options?: InternalAfterNextRenderOptions): void
  • removed: function ɵprovideZonelessChangeDetection(): EnvironmentProviders
  • removed: function ɵqueueStateUpdate(callback: VoidFunction, options?: { injector?: Injector }): void
  • removed: function ɵsetEnsureDirtyViewsAreAlwaysReachable(v: boolean): void
  • removed: function ɵwithI18nHydration(): EnvironmentProviders
  • removed: interface Predicate<T>
  • removed: member ɵɵInputFlags.HasDecoratorInputTransform = 2
  • removed: member ɵɵInputFlags.None = 0
  • removed: member ɵɵInputFlags.SignalBased = 1
  • removed: method Testability.decreasePendingRequestCount(): number
  • removed: method Testability.getPendingRequestCount(): number
  • removed: method Testability.increasePendingRequestCount(): number
  • removed: method ɵAfterRenderEventManager.execute(): void
  • removed: method ɵAfterRenderEventManager.executeInternalCallbacks(): void
  • removed: method ɵAfterRenderEventManager.ngOnDestroy(): void
  • removed: property InputSignalWithTransform[SIGNAL]: InputSignalNode<T, TransformT>
  • removed: property ModelSignal[SIGNAL]: InputSignalNode<T, T>
  • removed: property ModelSignal[ɵINPUT_SIGNAL_BRAND_READ_TYPE]: T
  • removed: property ModelSignal[ɵINPUT_SIGNAL_BRAND_WRITE_TYPE]: T
  • removed: property ɵRender3NgModuleRef._r3Injector: R3Injector
  • removed: static property ɵAfterRenderEventManager.ɵprov: unknown
  • removed: static property ɵPendingTasks.ɵfac: i0.ɵɵFactoryDeclaration<ɵPendingTasks, never>
  • changed: abstract get ComponentFactory.inputs(): { propName: string; templateName: string; transform?: (value: any) => any }[] → abstract get ComponentFactory.inputs(): { propName: string; templateName: string; transform?: (value: any) => any; isSignal: boolean }[]
  • changed: abstract get ɵComponentFactory.inputs(): { propName: string; templateName: string; transform?: (value: any) => any }[] → abstract get ɵComponentFactory.inputs(): { propName: string; templateName: string; transform?: (value: any) => any; isSignal: boolean }[]
  • changed: abstract method ɵChangeDetectionScheduler.notify(source?: NotificationType): void → abstract method ɵChangeDetectionScheduler.notify(source: ɵNotificationSource): void
  • changed: constructor NgZone({ enableLongStackTrace, shouldCoalesceEventChangeDetection, shouldCoalesceRunChangeDetection }: { enableLongStackTrace?: boolean | undefined; shouldCoalesceEventChangeDetection?: boolean | undefined; shouldCoalesceRunChangeDetection?: boolean | undefined }) → constructor NgZone(options: { enableLongStackTrace?: boolean; shouldCoalesceEventChangeDetection?: boolean; shouldCoalesceRunChangeDetection?: boolean })
  • changed: constructor ɵRender3NgModuleRef(ngModuleType: Type<T>, _parent: Injector | null, additionalProviders: StaticProvider[]) → constructor ɵRender3NgModuleRef(ngModuleType: Type<T>, _parent: Injector | null, additionalProviders: StaticProvider[], runInjectorInitializers?: boolean)
  • changed: constructor ɵViewRef(_lView: LView, _cdRefInjectingView?: LView<unknown> | undefined, notifyErrorHandler?: boolean) → constructor ɵViewRef(_lView: LView, _cdRefInjectingView?: LView | undefined, notifyErrorHandler?: boolean)
  • changed: function ɵannotateForHydration(appRef: ApplicationRef, doc: Document): void → function ɵannotateForHydration(appRef: ApplicationRef, doc: Document): { regular: Set<string>; capture: Set<string> }
  • changed: function ɵdetectChangesInViewIfRequired(lView: LView, isFirstPass: boolean, notifyErrorHandler: boolean): void → function ɵdetectChangesInViewIfRequired(lView: LView, notifyErrorHandler: boolean, isFirstPass: boolean, zonelessEnabled: boolean): void
  • changed: function ɵinternalCreateApplication(config: { rootComponent?: Type<unknown>; appProviders?: Array<Provider | EnvironmentProviders>; platformProviders?: Provider[] }): Promise<ApplicationRef> → function ɵinternalCreateApplication(config: { rootComponent?: Type<unknown>; appProviders?: Array<Provider | EnvironmentProviders>; platformProviders?: Provider[]; platformRef?: PlatformRef }): Promise<ApplicationRef>
  • changed: function ɵresolveComponentResources(resourceResolver: (url: string) => (Promise<string | { text(): Promise<string> }>)): Promise<void> → function ɵresolveComponentResources(resourceResolver: (url: string) => Promise<string | { text(): Promise<string> }>): Promise<void>
  • changed: function ɵɵconditional<T>(containerIndex: number, matchingTemplateIndex: number, value?: T): void → function ɵɵconditional<T>(matchingTemplateIndex: number, contextValue?: T): void
  • changed: function ɵɵdefineComponent<T>(componentDefinition: ComponentDefinition<T>): Mutable<ɵComponentDef<any>, keyof ɵComponentDef<any>> → function ɵɵdefineComponent<T>(componentDefinition: ComponentDefinition<T>): ɵComponentDef<any>
  • changed: function ɵɵdefineDirective<T>(directiveDefinition: DirectiveDefinition<T>): Mutable<ɵDirectiveDef<any>, keyof ɵDirectiveDef<any>> → function ɵɵdefineDirective<T>(directiveDefinition: DirectiveDefinition<T>): ɵDirectiveDef<any>
  • changed: function ɵɵi18nPostprocess(message: string, replacements?: { [key: string]: (string | string[]) }): string → function ɵɵi18nPostprocess(message: string, replacements?: { [key: string]: string | string[] }): string
  • changed: function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes): void → function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes, fallbackTemplateFn?: ComponentTemplate<unknown>, fallbackDecls?: number, fallbackVars?: number): void
  • changed: get ComponentMirror.inputs(): ReadonlyArray<{ readonly propName: string; readonly templateName: string; readonly transform?: (value: any) => any }> → get ComponentMirror.inputs(): ReadonlyArray<{ readonly propName: string; readonly templateName: string; readonly transform?: (value: any) => any; readonly isSignal: boolean }>
  • changed: get ɵRender3ComponentFactory.inputs(): { propName: string; templateName: string; transform?: (value: any) => any }[] → get ɵRender3ComponentFactory.inputs(): { propName: string; templateName: string; isSignal: boolean; transform?: (value: any) => any }[]
  • changed: interface ModelSignal<T> extends WritableSignal<T>, OutputRef<T> → interface ModelSignal<T> extends WritableSignal<T>, InputSignal<T>, OutputRef<T>
  • changed: member ɵRuntimeErrorCode.REQUIRED_MODEL_NO_VALUE = -952 → member ɵRuntimeErrorCode.REQUIRED_MODEL_NO_VALUE = 952
  • changed: method ɵViewRef.attachToAppRef(appRef: ViewRefTracker): void → method ɵViewRef.attachToAppRef(appRef: ApplicationRef): void
  • changed: property ɵDirectiveDef.hostDirectives: HostDirectiveDef[] | null → property ɵDirectiveDef.hostDirectives: (HostDirectiveDef | (() => HostDirectiveConfig[]))[] | null
  • changed: property ɵDirectiveDef.setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, inputSignalNode: null | InputSignalNode<unknown, unknown>, value: any, publicName: string, privateName: string) => void) | null → property ɵDirectiveDef.setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, inputSignalNode: null | ɵInputSignalNode<unknown, unknown>, value: any, publicName: string, privateName: string) => void) | null
  • changed: readonly property ɵDirectiveDef.inputConfig: { [P in keyof T]?: string | [ɵɵInputFlags, string, string?, InputTransformFunction?] } → readonly property ɵDirectiveDef.inputConfig: { [P in keyof T]?: string | [InputFlags, string, string?, InputTransformFunction?] }
  • changed: readonly property ɵDirectiveDef.inputs: { [P in keyof T]?: string | [minifiedName: string, flags: ɵɵInputFlags] } → readonly property ɵDirectiveDef.inputs: { [P in keyof T]?: string | [minifiedName: string, flags: InputFlags] }
  • changed: static property ɵPendingTasks.ɵprov: i0.ɵɵInjectableDeclaration<ɵPendingTasks> → static property ɵPendingTasks.ɵprov: unknown
  • changed: type Signal<T> = (() => T) & { [SIGNAL]: unknown } → type Signal<T> = (() => T) & { [ɵSIGNAL]: unknown }
  • added: abstract property ɵChangeDetectionScheduler.runningTick: boolean
  • added: class ExperimentalPendingTasks
  • added: class ɵAfterRenderManager
  • added: class ɵChangeDetectionSchedulerImpl implements ɵChangeDetectionScheduler
  • added: const HOST_TAG_NAME: InjectionToken<string>
  • added: const enum ɵNotificationSource
  • added: const ɵINTERNAL_APPLICATION_ERROR_HANDLER: InjectionToken<(e: any) => void>
  • added: const ɵJSACTION_EVENT_CONTRACT: InjectionToken<EventContractDetails>
  • added: const ɵPROVIDED_NG_ZONE: InjectionToken<boolean>
  • added: const ɵZONELESS_ENABLED: InjectionToken<boolean>
  • added: constructor ɵChangeDetectionSchedulerImpl()
  • added: export { ɵSIGNAL }
  • added: function afterNextRender<E = never, W = never, M = never>(spec: { earlyRead?: () => E; write?: (...args: ɵFirstAvailable<[E]>) => W; mixedReadWrite?: (...args: ɵFirstAvailable<[W, E]>) => M; read?: (...args: ɵFirstAvailable<[M, W, E]>) => void }, options?: Omit<AfterRenderOptions, 'phase'>): AfterRenderRef
  • added: function afterRender<E = never, W = never, M = never>(spec: { earlyRead?: () => E; write?: (...args: ɵFirstAvailable<[E]>) => W; mixedReadWrite?: (...args: ɵFirstAvailable<[W, E]>) => M; read?: (...args: ɵFirstAvailable<[M, W, E]>) => void }, options?: Omit<AfterRenderOptions, 'phase'>): AfterRenderRef
  • added: function provideExperimentalCheckNoChangesForDebug(options: { interval?: number; useNgZoneOnStable?: boolean; exhaustive?: boolean }): EnvironmentProviders_2
  • added: function provideExperimentalZonelessChangeDetection(): EnvironmentProviders
  • added: function ɵinternalProvideZoneChangeDetection({ ngZoneFactory, ignoreChangesOutsideZone, scheduleInRootZone }: { ngZoneFactory?: () => NgZone; ignoreChangesOutsideZone?: boolean; scheduleInRootZone?: boolean }): StaticProvider[]
  • added: function ɵwithEventReplay(): Provider[]
  • added: function ɵwithI18nSupport(): Provider[]
  • added: function ɵɵdeclareLet(index: number): typeof ɵɵdeclareLet
  • added: function ɵɵngDeclareClassMetadataAsync(decl: { type: Type<any>; resolveDeferredDeps: () => Promise<Type<unknown>>[]; resolveMetadata: (...types: Type<unknown>[]) => { decorators: any[]; ctorParameters: (() => any[]) | null; propDecorators: { [field: string]: any } | null } }): void
  • added: function ɵɵreadContextLet<T>(index: number): T
  • added: function ɵɵstoreLet<T>(value: T): T
  • added: interface ɵInputSignalNode<T, TransformT> extends SignalNode<T>
  • added: member ɵNotificationSource.AsyncAnimationsLoaded = 10
  • added: member ɵNotificationSource.DebugApplyChanges = 3
  • added: member ɵNotificationSource.DeferBlockStateUpdate = 2
  • added: member ɵNotificationSource.DeferredRenderHook = 7
  • added: member ɵNotificationSource.Listener = 5
  • added: member ɵNotificationSource.MarkAncestorsForTraversal = 0
  • added: member ɵNotificationSource.MarkForCheck = 4
  • added: member ɵNotificationSource.RenderHook = 6
  • added: member ɵNotificationSource.SetInput = 1
  • added: member ɵNotificationSource.ViewAttached = 8
  • added: member ɵNotificationSource.ViewDetachedFromDOM = 9
  • added: member ɵRuntimeErrorCode.LOOP_TRACK_DUPLICATE_KEYS = -955
  • added: member ɵRuntimeErrorCode.LOOP_TRACK_RECREATE = -956
  • added: member ɵRuntimeErrorCode.PROVIDED_BOTH_ZONE_AND_ZONELESS = 408
  • added: member ɵRuntimeErrorCode.UNEXPECTED_ZONEJS_PRESENT_IN_ZONELESS_MODE = 914
  • added: member ɵRuntimeErrorCode.UNINITIALIZED_LET_ACCESS = 314
  • added: method ApplicationRef.whenStable(): Promise<void>
  • added: method ExperimentalPendingTasks.add(): () => void
  • added: method ɵAfterRenderManager.execute(): void
  • added: method ɵChangeDetectionSchedulerImpl.ngOnDestroy(): void
  • added: method ɵChangeDetectionSchedulerImpl.notify(source: ɵNotificationSource): void
  • added: method ɵInputSignalNode.applyValueToInputSignal<T, TransformT>(node: ɵInputSignalNode<T, TransformT>, value: T): void
  • added: method ɵRender3NgModuleRef.resolveInjectorInitializers(): void
  • added: property AfterRenderOptions.manualCleanup?: boolean
  • added: property BootstrapOptions.ignoreChangesOutsideZone?: boolean
  • added: property InputSignalWithTransform[ɵSIGNAL]: ɵInputSignalNode<T, TransformT>
  • added: property ModelSignal[ɵSIGNAL]: ɵInputSignalNode<T, T>
  • added: property NgZoneOptions.ignoreChangesOutsideZone?: boolean
  • added: property ɵAfterRenderManager.impl: AfterRenderImpl | null
  • added: property ɵChangeDetectionSchedulerImpl.pendingRenderTaskId: number | null
  • added: property ɵChangeDetectionSchedulerImpl.runningTick: boolean
  • added: property ɵInputSignalNode.transformFn: ((value: TransformT) => T) | undefined
  • added: static property ExperimentalPendingTasks.ɵprov: unknown
  • added: static property ɵAfterRenderManager.ɵprov: unknown
  • added: static property ɵChangeDetectionSchedulerImpl.ɵfac: i0.ɵɵFactoryDeclaration<ɵChangeDetectionSchedulerImpl, never>
  • added: static property ɵChangeDetectionSchedulerImpl.ɵprov: i0.ɵɵInjectableDeclaration<ɵChangeDetectionSchedulerImpl>
  • added: type Predicate<T> = (value: T) => boolean
  • added: type ɵFirstAvailable<T extends unknown[]> = T extends [infer H, ...infer R] ? [H] extends [never] ? ɵFirstAvailable<R> : [H] : []
  • added: class EventContract implements UnrenamedEventContract
  • added: class EventContractContainer implements EventContractContainerManager
  • added: class EventDispatcher
  • added: class EventInfoWrapper
  • added: const Attribute: { JSACTION: 'jsaction' }
  • added: const EventPhase: { REPLAY: number }
  • added: const isCaptureEventType: (eventType: string) => boolean
  • added: const isEarlyEventType: (eventType: string) => boolean
  • added: constructor EventContract(containerManager: EventContractContainerManager)
  • added: constructor EventContractContainer(element: Element)
  • added: constructor EventDispatcher(dispatchDelegate: (event: Event, actionName: string) => void, clickModSupport?: boolean)
  • added: constructor EventInfoWrapper(eventInfo: EventInfo)
  • added: function bootstrapAppScopedEarlyEventContract(container: HTMLElement, appId: string, bubbleEventTypes: string[], captureEventTypes: string[], dataContainer?: EarlyJsactionDataContainer): void
  • added: function clearAppScopedEarlyEventContract(appId: string, dataContainer?: EarlyJsactionDataContainer): void
  • added: function getActionCache(element: Element): { [key: string]: string | undefined }
  • added: function getAppScopedQueuedEventInfos(appId: string, dataContainer?: EarlyJsactionDataContainer): EventInfo[]
  • added: function registerAppScopedDispatcher(restriction: Restriction, appId: string, dispatcher: (eventInfo: EventInfo) => void, dataContainer?: EarlyJsactionDataContainer): void
  • added: function registerDispatcher(eventContract: UnrenamedEventContract, dispatcher: EventDispatcher): void
  • added: function removeAllAppScopedEventListeners(appId: string, dataContainer?: EarlyJsactionDataContainer): void
  • added: interface EarlyJsactionDataContainer
  • added: method EventContract.addEvent(eventType: string, prefixedEventType?: string): void
  • added: method EventContract.cleanUp(): void
  • added: method EventContract.ecrd(dispatcher: Dispatcher, restriction: Restriction): void
  • added: method EventContract.handler(eventType: string): EventHandler | undefined
  • added: method EventContract.registerDispatcher(dispatcher: Dispatcher, restriction: Restriction): void
  • added: method EventContract.replayEarlyEventInfos(earlyEventInfos: eventInfoLib.EventInfo[]): void
  • added: method EventContract.replayEarlyEvents(earlyJsactionData?: EarlyJsactionData | undefined): void
  • added: method EventContractContainer.addEventListener(eventType: string, getHandler: (element: Element) => (event: Event) => void): void
  • added: method EventContractContainer.cleanUp(): void
  • added: method EventDispatcher.dispatch(eventInfo: EventInfo): void
  • added: method EventInfoWrapper.clone(): EventInfoWrapper
  • added: method EventInfoWrapper.getAction(): { name: string; element: Element } | undefined
  • added: method EventInfoWrapper.getContainer(): Element
  • added: method EventInfoWrapper.getEvent(): Event
  • added: method EventInfoWrapper.getEventType(): string
  • added: method EventInfoWrapper.getIsReplay(): boolean | undefined
  • added: method EventInfoWrapper.getResolved(): boolean | undefined
  • added: method EventInfoWrapper.getTargetElement(): Element
  • added: method EventInfoWrapper.getTimestamp(): number
  • added: method EventInfoWrapper.setAction(action: ActionInfo | undefined): void
  • added: method EventInfoWrapper.setContainer(container: Element): void
  • added: method EventInfoWrapper.setEvent(event: Event): void
  • added: method EventInfoWrapper.setEventType(eventType: string): void
  • added: method EventInfoWrapper.setIsReplay(replay: boolean): void
  • added: method EventInfoWrapper.setResolved(resolved: boolean): void
  • added: method EventInfoWrapper.setTargetElement(targetElement: Element): void
  • added: method EventInfoWrapper.setTimestamp(timestamp: number): void
  • added: property EarlyJsactionDataContainer._ejsa?: EarlyJsactionData
  • added: property EarlyJsactionDataContainer._ejsas?: { [appId: string]: EarlyJsactionData | undefined }
  • added: readonly property EventContractContainer.element: Element
  • added: readonly property EventInfoWrapper.eventInfo: EventInfo
  • added: static property EventContract.MOUSE_SPECIAL_SUPPORT: boolean
  • added: function producerIncrementEpoch(): void
  • added: function runPostSignalSetFn(): void
  • changed: function toSignal<T, const U extends T>(source: Observable<T> | Subscribable<T>, options: ToSignalOptions & { initialValue: U; requireSync?: false }): Signal<T | U> → function toSignal<T, const U extends T>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | U>> & { initialValue: U; requireSync?: false }): Signal<T | U>
  • changed: function toSignal<T>(source: Observable<T> | Subscribable<T>, options: ToSignalOptions & { initialValue?: null; requireSync?: false }): Signal<T | null> → function toSignal<T>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | null>> & { initialValue?: null; requireSync?: false }): Signal<T | null>
  • changed: function toSignal<T>(source: Observable<T> | Subscribable<T>, options: ToSignalOptions & { initialValue?: undefined; requireSync: true }): Signal<T> → function toSignal<T>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T | undefined>> & { initialValue?: undefined; requireSync?: false }): Signal<T | undefined>
  • changed: function toSignal<T>(source: Observable<T> | Subscribable<T>, options: ToSignalOptions & { initialValue?: undefined; requireSync?: false }): Signal<T | undefined> → function toSignal<T>(source: Observable<T> | Subscribable<T>, options: NoInfer<ToSignalOptions<T>> & { initialValue?: undefined; requireSync: true }): Signal<T>
  • changed: interface ToSignalOptions → interface ToSignalOptions<T>
  • added: property ToSignalOptions.equal?: ValueEqualityFn<T>
  • removed: function async(fn: Function): (done: any) => any
  • changed: abstract method ComponentFixture.isStable(): boolean → method ComponentFixture.isStable(): boolean
  • changed: abstract method ComponentFixture.whenStable(): Promise<any> → method ComponentFixture.whenStable(): Promise<any>
  • changed: function fakeAsync(fn: Function): (...args: any[]) => any → function fakeAsync(fn: Function, options?: { flush?: boolean }): (...args: any[]) => any