Packages

@angular/platform-browser-dynamic

22.2.3 · 14 Oct 2026MIT4.2M / weekRepositoryHomepagenpmAtom feed

Your version

22.0.0

major3 Jun 2026Where it was published

22.2.3 is the newest release of 22.x.

npm marks 22.0.0 as deprecated: @angular/platform-browser-dynamic is deprecated. Use `@angular/platform-browser` instead.

In short

24 breaking2 deprecated

  • breaking

    This change will trigger the nullishCoalescingNotNullable and optionalChainNotNullable diagnostics on exisiting projects.

  • breaking

    Data prefixed attribute no-longer bind inputs nor outputs.

  • breaking

    The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.

  • breaking

    in variables will throw in template expressions.

  • breaking

    Elements with multiple matching selectors will now throw at compile time.

  • breaking

    The second arguement of appRef.bootstrap does not accept any anymore. Make sure the element you pass is not nullable.

  • breaking
    • TypeScript versions older than 6.0 are no longer supported.

  • breaking

    Leave animations are no longer limited to the element being removed.

Release note

compiler

CommitDescription
feat - 47fcbc4704allow safe navigation to correctly narrow down nullables
feat - 2896c93cc1Angular expressions with optional chaining returns undefined
feat - e850643b1bSupport comments in html element.
fix - 96be4f429babstract emitter producing incorrect code for dynamic imports
fix - 488d962bc7Don't bind inputs/outputs for data- attributes
fix - 2c5aabb9dadon't escape dollar sign in literal expression
fix - c7aef8ec5denforce parentheses containing arguments for :host-context
fix - b225a5d902invalid type checking code if field name needs to be quoted
fix - ab9154ab75normalize tag names with custom namespaces in DomElementSchemaRegistry (#68868)
fix - 8a1533c9adpreserve leading commas in animation definitions
fix - 194f723f66remove dedicated support for legacy shadow DOM selectors
fix - 4c25a42e98remove deprecated shadow CSS encapsulation polyfills
fix - 6ff620a033sanitize dynamic href and xlink:href bindings on SVG a elements (#68868)
fix - 7dc1017e51simplify handling of colon host with a selector list
fix - d99ab0e040stop generating unused field
fix - 03db2aefaathrow on duplicate input/outputs
fix - 786ef8261fthrow on invalid in expressions
fix - ccb7d427e4type check invalid for loops

compiler-cli

CommitDescription
feat - b8d3f36ed9add support for Node.js 26.0.0
feat - 7f9450219fAdds warning for prefetch without main defer trigger
feat - 2eae497a04support external TCBs with copied content in specific mode
fix - e5f96c2d88animation events not type checked properly when bound through HostListener decorator
fix - 9218140348resolve TCB mapping failure for safe property reads with as any
fix - 7a0d6b8df2transform dropping exclamationToken from properties
refactor - ca67828ee2introduce NG8023 compile-time diagnostic for duplicate selectors

core

CommitDescription
feat - 17d3ea44e2add IdleRequestOptions support to IdleService
feat - 3b0ae5fef0add provideWebMcpTools
feat - 444b024d49Add a injectAsync helper function
feat - 3bc095d508Add a schematics to migrate provideHttpClient to keep using the HttpXhrBackend implementation.
feat - 5a7c1e62dcadd ability to cache resources for SSR
feat - cb4cb77053Add migration to add ChangeDetectionStrategy.Eager where applicable
feat - 2206efa55fadd special return statuses for resource params
feat - 246a984a5dadd TestBed.getFixture
feat - b918beda32allow debouncing signals
feat - 8bc31a515fAllow other expression for exhaustive typechecking
feat - 4e331062e8allow synchronous values for stream Resources
feat - a0aa8304cdbootstrap via ApplicationRef with config
feat - 9c55fcb3e6de-duplicate host directives
feat - 8fe025f514drop support for TypeScript 5.9
feat - 2f5ab541eaenhance profiling with documentation URLs
feat - ef1810197bexport experimental declareWebMcpTool support
feat - 75f2cb8f56implement Angular DI graph in-page AI tool
feat - 8f3d0b9d97introduce @Service decorator
feat - df659b8d0cre-introduce nested leave animations scoped to component boundaries
feat - 8ce9cc4f6bregister AI runtime debugging tools
feat - eae8f7e30bSet default Component changeDetection strategy to OnPush
feat - cdda51a3b2support bootstrapping Angular applications underneath shadow roots
feat - a5981b83a6support customization of @defer's on idle behavior
feat - 98eb24cea0Support optional timeout for idle deferred triggers
feat - dc3131c639TestBed.getFixture -> TestBed.getLastFixture and update implementation
feat - 9f479ae964Update Testability to use PendingTasks for stability indicator
fix - 8ebae1de33allow service with factory on abstract classes
fix - f9d8da6924bind global context to idle callback shims in @defer's idle service
fix - 61a48e99aado not register dom triggers when defer blocks are in manual mode
fix - 49748b5c79enforce return type for service factory
fix - 16adbbf423ensure custom controls resolve transitive host directives
fix - 50e599e73elazy-initialize debounced state to prevent computation cycle
fix - 7aad302c3emark service decorator as stable
fix - a08e4fb93cnormalize tag names in runtime i18n attribute security context lookup (#68868)
fix - b20f0fe078prevent rxResource from leaking a subscription
fix - 22f8b0a500resolver function not matching expected type
fix - 88d138ccc8support prefix-insensitive DOM schema lookups and compile-time i18n attribute validation
fix - bfe6f6c2a5synchronize core sanitization schema with compiler
fix - 5e99ae9f00widen type for directive inputs/outputs
refactor - b9b5c279b4enhance AnimationCallbackEvent.animationComplete signature
refactor - 69fb1614efremove checkNoChanges from the public API.
refactor - 36936872c9remove createNgModuleRef
refactor - 9d76ac8229remove ComponentFactoryResolver & ComponentFactory from the api surface
refactor - b1f5181ffdremove ComponentFactoryResolver & ComponentFactory from the api surface""

forms

CommitDescription
feat - 74f76d8075add reloadValidation to Signal Forms to manually trigger async validation
feat - 24e52d450dadd debounce option to validateAsync and validateHttp
feat - 709f5a390cadd FieldState.getError()
feat - 7745365910graduate signal forms APIs to public API
feat - f9f24fc669shim legacy NG_VALIDATORS into parseErrors for CVA mode (#67943)
feat - 41b1410cb8support binding `number
feat - 3983080236support ngNoCva as an opt-out for ControlValueAccessors
feat - c4ce3f345ftemplate & reactive support for FVC
fix - 3524de29f3Add support for range type with outside of native bounds
fix - de56d74da3align FormField CVA selection priority with standard forms
fix - 0eeb1b5f03allow FormRoot to be used without submission options (#67727)
fix - 394ad0c2a2allow late-bound input types for signals forms
fix - ee8d2098cbchange FieldState optional properties to non-optional
fix - df8b020299clear native date inputs correctly in signal forms when changed via native UI
fix - 2e9aeea0fededuplicate writeValue calls in CVA interop
fix - 0ea50ffe5aensure debounced async validators produce pending status during debounce
fix - 3c44d7c90bfix orphan field error on blur during array removal
fix - 849dba6c65implement custom control reset propagation
fix - 5835a5e3a7prevent orphan field crashes in debounceSync and async validation
fix - 3e7ce0dafcrestrict SignalFormsConfig to a readonly API
fix - fb166772d2split the touched model into an input and touch output
fix - 83032e3605support generic unions in signal form schemas
fix - 68c3abbe09synchronize controls with the model on reset
fix - 2061fd8253Untrack setValue in reactive forms
fix - 72d3ace03cuse controlValue in NgControl for CVA interop (#67943)
perf - 3b4ef1e2ffavoid redundant invalidations in parser errors signal
perf - 07a9358157avoid spurious recomputation in FormField.parseErrors
perf - 98c5afdb02lazily instantiate signal form fields
perf - e0536091f5optimize reactivity by using shallow array equality
perf - 9b9769479bshortcut deepSignal writes if value is unchanged
refactor - 592a12d6c9remove string support from min and max validation rules (#68001)

http

CommitDescription
feat - 5c432fb8bbUse FetchBackend as default for the HttpBackend implementation
fix - f7b3ed8db2Introduce a max buffer size for fetch requests on SSR
fix - e6cfaf5672prevent httpResource from leaking a subscription
refactor - 7c8c3347efAdd reportUploadProgress & reportDownloadProgress options

language-service

CommitDescription
feat - 5a6d88626badd angular template inlay hints support
feat - cfd0f9950cadd Document Symbols support for Angular templates
feat - c6f98c723cAdd support for idle timeout in defer blocks
fix - dc9c72da9bAdd support for @Input with transforms

migrations

CommitDescription
feat - 8216d34976Add migration for CanMatchFn snapshot parameter (#67452)
feat - 682aaf943fadd strictTemplates to tsconfig during ng update
feat - 6a435658e2Disabling nullishCoalescingNotNullable & optionalChainNotNullable on ng update
feat - 8f8972b0fdmodel + output migrations
fix - f01901d766avoid generating invalid code in ChangeDetectionStrategy.Eager migration
fix - 1415d86980Fix typo for strict-template migration
fix - 9d9855a415Make the safe optional chaining idempotent
fix - 0f2160c410remove compiler import from safe optional chaining migration

platform-browser

CommitDescription
feat - 68628dd45bmake incremental hydration default behavior
fix - d45b7a91f9remove unused styles when associated host is dropped
refactor - f99e7ed20fremove Hammer integration

router

CommitDescription
feat - 89c9a4de30Add options optional parameter for withComponentInputBinding
feat - c84642ac16add unmatchedInputBehavior option to componentInputBinding
feat - 3683902234adds browserUrl input support to router links
fix - 3e7117d690Add strict typing on 'getResolvedTitleForRoute'
fix - 579440170bmake currentSnapshot required in CanMatchFn (#67452)
fix - 17d10f7a99set default paramsInheritanceStrategy to 'always'
refactor - bdb6ae9dbcremove deprecated provideRoutes function.

service-worker

CommitDescription
fix - 836094c072resolve TS 6.0 compatibility for messageerror listener

upgrade

CommitDescription
refactor - 01a179577bremove getAngularLib/setAngularLib

Breaking Changes

compiler

  • breaking

    This change will trigger the nullishCoalescingNotNullable and optionalChainNotNullable diagnostics on exisiting projects.
    You might want to disable those 2 diagnotiscs in your tsconfig temporarily.

  • breaking

    Data prefixed attribute no-longer bind inputs nor outputs.

  • breaking

    The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.

  • breaking

    in variables will throw in template expressions.

compiler-cli

  • breaking

    Elements with multiple matching selectors will now throw at compile time.

core

  • breaking

    The second arguement of appRef.bootstrap does not accept any anymore. Make sure the element you pass is not nullable.

  • breaking
    • TypeScript versions older than 6.0 are no longer supported.

  • breaking

    Leave animations are no longer limited to the element being removed.

  • breaking

    Component with undefined changeDetection property are now OnPush by default. Specify changeDetection: ChangeDetectionStrategy.Eager to keep the previous behavior.

  • breaking

    Change AnimationCallbackEvent.animationComplete signature

  • breaking

    ChangeDetectorRef.checkNoChanges was removed. In tests use fixture.detectChanges() instead.

  • breaking

    createNgModuleRef was removed, use createNgModule instead

  • breaking

    ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponentFunction.

  • breaking

    ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponent function.

  • breaking

    stream Resource (which includes rxResource) are now resolving the value synchronously if the stream/observable returns a value sychronously. This can break some tests that assumed an asynchronous resolution of the value.

forms

  • breaking

    min and max validation rules no longer support
    string values. Bound values must be numbers or null.

http

  • breaking

    Use the HttpXhrBackend with provideHttpClient(withXhr) if you want to keep supporting upload progress reports.

platform-browser

  • breaking

    This removes styles when they appear to no longer be used by an associated host. However other DOM on the page may still be affected by those styles if not leveraging ViewEncapsulation.Emulated or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.

  • breaking

    Hammer.js integration has been removed. Use your own implementation.

router

  • breaking

    The return type for TitleStrategy.getResolvedTitleForRoute
    was previously 'any' while the actual return type could only be either string
    or undefined. The return type now reflects the possible values correctly.
    Code that reads the value may need to be adjusted.

    (cherry picked from commit ad37f52)

  • breaking

    The currentSnapshot parameter in CanMatchFn and the canMatch method of the CanMatch interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of CanMatch must now include the third argument to satisfy the interface.

  • breaking

    paramsInheritanceStrategy now defaults to 'always'

    The default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.

  • breaking

    provideRoutes() has been removed. Use provideRouter() or ROUTES as multi token if necessary.

upgrade

  • breaking

    Deprecated getAngularLib/setAngularLib have been removed use getAngularJSGlobal/setAngularJSGlobal instead.

Deprecations

http

  • deprecated

    withFetch is now deprecated, it can be safely removed.

  • deprecated

    The reportProgress option is deprecated please use reportUploadProgress & reportDownloadProgress instead.