Packages

@angular/platform-browser-dynamic

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

Your version

21.0.0

major19 Nov 2025Where it was published

21.2.25 is the newest release of 21.x.

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

In short

20 breaking1 deprecated

  • breaking

    (test only) - TestBed now provides a fake PlatformLocation

  • breaking

    ngComponentOutletContent is now of type Node | undefined instead of any | undefined.

  • breaking

    NgModuleFactory has been removed, use NgModule instead.

  • breaking
    • Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set "typeCheckHostBindings": false in the angularCompilerOptions section of your tsconfig.

  • breaking

    The Angular compiler now produces an error when the

  • breaking

    The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.

  • breaking

    Using a combination of provideZoneChangeDetection

  • breaking
    • TypeScript versions less than 5.9 are no longer supported.

Release note

common

CommitDescription
feat - c795960adaAdd experimental support for the Navigation API (#63406)
feat - 9eac43cf46Support of optional keys for the KeyValue pipe (#48814)
feat - a1868c9d13update to cldr 47 (#64032)
fix - 196fa500a3properly type ngComponentOutlet (#64561)
refactor - 7a4b225c57improve typing of ngComponentOutletContent (#63674)
refactor - 25f593ce2aremovengModuleFactory input of NgComponentOutlet (#62838)

compiler

CommitDescription
fix - ecea909bccdon't choke on unbalanced parens in declaration block
fix - 04dd75ba94support arbitrary nesting in :host-context()
fix - f54cc4f28asupport commas in :host() argument
fix - 814b2713f5support complex selectors in :nth-child()
fix - aad6ced0efsupport one additional level of nesting in :host()

compiler-cli

CommitDescription
feat - 563dbd998cAdds diagnostic for misconfigured @defer triggers (#64069)
feat - 0571b335b9enable type checking of host bindings by default (#63654)
fix - 5b55200edfallow value to be set on radio fields
fix - ab98b2425fcapture metadata for undecorated fields (#63957)
fix - be7110342bdisallow compiling with the emitDeclarationOnly TS compiler option enabled (#61609)
fix - bd322ca410do not flag custom control required inputs as missing when field is present
fix - 471da8a311infer type of custom field controls
fix - 96cb0cffdainfer types of signal forms set on native inputs
fix - 71ab11ccf0make field detection logic more robust
fix - 1f389b8b97missingStructuralDirective diagnostic produces false negatives (#64579)
fix - 7fd3db0423remove internal syntax-related flags (#63787)
fix - c371251e4creport invalid bindings on form controls
fix - 01290ab275use any when checking field interface conformance

core

CommitDescription
feat - 809a4ed8c1Add migration for zoneless by default. (#63042)
feat - 2a7a5de53fAllow passing application providers in bootstrapModule options (#64354)
feat - 28926ba92cintroduce BootstrapContext for improved server bootstrapping (#63562)
feat - c2d376b85amake SimpleChanges generic (#64535)
feat - ad2376435bsupport IntersectionObserver options in viewport triggers (#64130)
feat - 539717f58asupport regular expressions in templates (#63887)
fix - ab415f3d7fcontrol not recognized when input has directive injecting ViewContainerRef (#64368)
fix - f008045deddo not rename ARIA property bindings to attributes (#63925)
fix - 1352fbdbf2Drop special-case disables automatic change detection scheduling (#63846)
fix - c0791e1887drop support for TypeScript 5.8 (#63589)
fix - aa389a691bensure @for iteration over field is reactive (#64113)
fix - fec7c288e9Error on invalid APP_ID (#63252)
fix - d399d7d02bExplicit Zone CD in TestBed providers should not override TestBed error handler (#63404)
fix - 92e09adc0aRemove ignoreChangesOutsideZone option (#62700)
fix - 45fed3d201Remove Zone-based change provider from internals by default (#63382)
fix - c9f977833eskip Angular formatting when formatting signals recursively
fix - 67fbd5ff1eSSR error in signal forms
fix - c241038111update symbols (#64481)
refactor - a5e5dbbc16remove moduleId from Component metadata (#63482)
refactor - 9a16718b13remove deprecated interpolation option on Components. (#63474)

elements

CommitDescription
fix - be0455addareturn value on signal input getter (#62113)

forms

CommitDescription
feat - a278ee358cadd debounce() rule for signal forms
feat - b8314bd340add experimental signal-based forms (#63408)
feat - 0dd95c503fAdd FormArrayDirective (#55880)
feat - d201cd2c2bPrevents marking fields as touched/dirty when state is hidden/readonly/disabled (#63633)
fix - 9c5e969f51bind invalid input in custom controls (#64526)
fix - 10ef96adb3consistent treatment of empty (#63456)
fix - d89e522a1fdebounce updates from interop controls
fix - c0d88c37c9Emit FormResetEvent when resetting control (#64024)
fix - 94b0afec00implement interoperability between signal forms and reactive forms (#64471)
fix - a1ac9a6415interop supports CVAs with signals (#64618)
fix - 505bde1fedmark field as dirty when value is changed by ControlValueAccessor (#64471)
fix - 3529877772mark field as dirty when value is changed by a bound control (#64483)
fix - fd9af2afafonly propagate schema defined properties from field to control (#64446)
fix - 91d8d55a80Set error message of a schema error.
fix - f4d1017c25test that common field states are propagated to controls (#63884)
fix - acd7c83597test that min/max properties are propagated to controls (#63884)
fix - 71e8672837test that minLength/maxLength properties are propagated to controls (#63884)
perf - 507b3466eeimplement change detection for field control bindings
perf - 781a3299f9only update interop controls when bound field changes
perf - 32f86d35f7optimize [field] binding instructions (#64351)

http

CommitDescription
feat - 2739b7975badd referrerPolicy option to HttpResource (#64283)
feat - 07e678872fAdd reponseType property to HttpResponse and HttpErrorResponse (#63043)
feat - 5cbdefcf11add support for fetch referrerPolicy option in HttpClient (#64116)
feat - 4bed062bc9Provide http services in root (#56212)
refactor - 0e4e17cd97HttpResponseBase.statusText (#64176)

language-server

CommitDescription
fix - 3f7111a9c3fix directory renaming on Windows

language-service

CommitDescription
fix - 89095946cfaddress potential memory leak during project creation
fix - 80e00ff4e5prevent interpolation from superseding block braces (#64392)

migrations

CommitDescription
feat - 6ddb250391add migration to convert ngClass to use class (#62983)
feat - 8dc8914c8aadd migration to convert ngStyle to use style (#63517)
feat - 861cee34e0Adds migration for deprecated router testing module (#64217)
feat - 75fc16b261Adds support for CommonModule to standalone migration (#64138)
fix - 655a99d0c6fix bug in ngclass-to-class migration (#63617)
fix - 62bbce63b7remove error for no matching files in control flow migration (#64253)

platform-browser

CommitDescription
refactor - ce8db665f9remove deprecated ApplicationConfig export (#63529)

router

CommitDescription
feat - 4e0fc81491convert lastSuccessfulNavigation to signal (#63057)
fix - 5e61e8d3c3Fix memory leak through Navigation.abort and canDeactivate guards (#64141)
fix - f6a73f1913Respect custom UrlSerializer handling of query parameters (#64449)
fix - 5b53535dd1Update recognize stage to use internally async/await (#62994)

upgrade

CommitDescription
fix - f86846555bRemove deprecated UpgradeAdapter (#61659)

Breaking Changes

common

  • breaking

    (test only) - TestBed now provides a fake PlatformLocation
    implementation that supports the Navigation API. This may break some
    tests, though we have not observed any failures internally. You can revert to the
    old default for TestBed by providing the MockPlatformLocation from
    @angular/common/testing in your providers:
    {provide: PlatformLocation, useClass: MockPlatformLocation}

  • breaking

    ngComponentOutletContent is now of type Node | undefined instead of any | undefined.

  • breaking

    NgModuleFactory has been removed, use NgModule instead.

compiler-cli

  • breaking
    • Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set "typeCheckHostBindings": false in the angularCompilerOptions section of your tsconfig.

  • breaking

    The Angular compiler now produces an error when the
    the emitDeclarationOnly TS compiler option is enabled as this mode is
    not supported.

core

  • breaking

    The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.

    Before:

    const bootstrap = () => bootstrapApplication(AppComponent, config);

    After:

    const bootstrap = (context: BootstrapContext) =>
      bootstrapApplication(AppComponent, config, context);

    A schematic is provided to automatically update main.server.ts files to pass the BootstrapContext to the bootstrapApplication call.

    In addition, getPlatform() and destroyPlatform() will now return null and be a no-op respectively when running in a server environment.

  • breaking

    Using a combination of provideZoneChangeDetection
    while also removing ZoneJS polyfills will no longer result in the
    internal scheduler being disabled. All Angular applications now
    consistenly use the same scheduler, and those with the Zone change detection
    provider include additional automatic scheduling behaviors based on
    NgZone stabilization.

  • breaking
    • TypeScript versions less than 5.9 are no longer supported.

  • breaking

    (test only) - Using provideZoneChangeDetection in the
    TestBed providers would previously prevent TestBed from rethrowing
    errors as it should. Errors in the test will now be rethrown, regardless
    of the usage of provideZoneChangeDetection. Tests should be adjusted to
    prevent or account for these errors. As in previous major versions,
    this behavior can be disabled with rethrowApplicationErrors: false in
    configureTestingModule as a last resort.

  • breaking

    ignoreChangesOutsideZone is no longer available as an
    option for configuring ZoneJS change detection behavior.

  • breaking

    Angular no longer provides a change detection scheduler
    for ZoneJS-based change detection by default. Add
    provideZoneChangeDetection to the providers of your
    bootstrapApplication function or your AppModule (if using
    bootstrapModule). This provider addition will be covered by an
    automated migration.

  • breaking

    moduleId was removed from Component metadata.

  • breaking

    The interpolation option on Components has been removed. Only the default {{ ... }} is now supported.

elements

  • breaking

    Fix signal input getter behavior in custom elements.

    Before this change, signal inputs in custom elements required function calls to access their values (elementRef.newInput()), while decorator inputs were accessed directly (elementRef.oldInput). This inconsistency caused confusion and typing difficulties.

    The getter behavior has been standardized so signal inputs can now be accessed directly, matching the behavior of decorator inputs:

    Before:

    • Decorator Input: elementRef.oldInput

    • Signal Input: elementRef.newInput()

    After:

    • Decorator Input: elementRef.oldInput

    • Signal Input: elementRef.newInput

forms

  • breaking

    This new directive will conflict with existing FormArray directives or formArray inputs on the same element.

platform-browser

router

  • breaking

    lastSuccessfulNavigation is now a signal and needs to be invoked

  • breaking

    Router navigations may take several additional
    microtasks to complete. Tests have been found to often be highly
    dependent on the exact timing of navigation completions with respect to
    the microtask queue. The most common fix for tests is to ensure all
    navigations have been completed before making assertions. On rare
    occasions, this can also affect production applications. This can be
    caused by multiple subscriptions to router state throughout the application,
    both of which trigger navigations that happened to not conflict with the
    previous timing.

upgrade

  • breaking

    UpgradeAdapter is no longer available. Use
    upgrade/static instead

zone.js

  • breaking

    IE/Non-Chromium Edge are not supported anymore.

Deprecations

http

  • deprecated

    HttpResponseBase.statusText is deprecated