Skip to content

Hydration cleanup writes i18nNodes/dehydratedIcuData onto user data stored in @let #71929

Open

Description

@swseverance

Which @angular/* package(s) are the source of the bug?

Don't known / other

Is this a regression?

Yes

Description

After hydration, Angular adds i18nNodes and dehydratedIcuData (both undefined) to an object in a @let array. The app does not use i18n.

@let list = todos;
@for (todo of list; track todo.id) {
  <p>{{ todo.title }} ({{ $index + 1 }} of {{ list.length }})</p>
}
todos = Array.from({ length: 8 }, (_, i) => ({ id: i, title: 'todo ' + i }));

constructor() {
  afterNextRender(() => setInterval(() => console.log(this.todos), 5000));
}

On a full load of the server-rendered page, todos[6] is logged as { id: 6, title: 'todo 6', i18nNodes: undefined, dehydratedIcuData: undefined }.

Expected: Angular doesn't modify application data.

Reading list inside the @for body (list.length) is needed to reproduce.

Image

Please provide a link to a minimal reproduction of the bug

https://github.com/swseverance/angular-hydration-let-array-mutation (live: https://ng-hydration-let-mutation--ng-hydration-let-mutation.us-central1.hosted.app)

Please provide the exception or error you saw

ERROR TypeError: Cannot add property i18nNodes, object is not extensible
    at cleanupI18nHydrationData
    at cleanupLView
    at cleanupLView
    at cleanupLView
    at cleanupLContainer
    at cleanupLView
    at cleanupDehydratedViews

Please provide the environment you discovered this bug in (run ng version)

Angular CLI       : 22.2.5
Angular           : 22.2.5
Node.js           : 24.20.0
Package Manager   : npm 11.19.0
Operating System  : darwin x64

Anything else?

The error above is what we saw in our app, where the array was deep-frozen (NgRx dev-mode strictActionImmutability).

Activity

  1. added this to the needsTriage milestone on Nov 10, 2026
  2. added this to the needsTriage milestone on Nov 10, 2026
  3. crisbeto commented on Nov 10, 2026

    @crisbeto
    Member

    I suspect this is similar to #59504 where it confuses the array with an internal data structure.

  4. JeanMeche commented on Nov 10, 2026

    @JeanMeche
    Member

    We'll keep this one open as the other one was closed by its original author.

    #59694 was a proposed fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: coreIssues related to the framework runtime

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions