Angular + NgRx architecture?

Hey, we have a big Angular app using NgRx for everything. It is a redux setup: actions, reducers, selectors, effects. All state + backend calls go through the store.

We think of adding Grid components from Vaadin. Vaadin 25 signals look interesting for reactive state, but our app is already heavily NgRx-based.

A few quick questions:

  • Can Vaadin signals be used together with NgRx or its replacement?
  • Should NgRx stay as a global store and signals only for local UI state?
  • NgRx selectors return an observable. What is a good way to connect to Signals?
  • Any example using Signals inside an Angular+NgRx app?

We are not removing NgRx and converting the whole application, just adding Vaadin to some part. Anyone tried this? Thanks.

1 Like

In the scope of an Angular app, I assume Vaadin Grid would be used through Angular rather than through its Java API? In that scenario, Vaadin’s signals are irrelevant.

The work we’re doing in signals right now are all about introducing a reactive UI state management solution for Vaadin Flow. We’re not making any changes to the client-side APIs of the components because you’re anyway better off using the state management facilities provided by e.g. React or Angular in that case.

1 Like

Hey, yes we are using Vaadin Grid from Angular side only (web component) not Flow.

Ok understood now, signals is only for Flow, I was bit confused because looks similar like Angular signals.

So in Angular case we just keep using NgRx (Angular signals) and Vaadin components just UI, no relation with signals.

If later we do hybrid (angular and some flow views), then signals will stay only flow side and not connected to angular state correct?

Thanks

The are very similar indeed, but the key point is that the relevant support is on the framework level and whereas the web components work with any framework’s signals.

Correct for now. We have also been working on a way of synchronizing signal values between the server and the client, but that’s a separate feature that will be launched separately from the signal features that are coming now with Vaadin 25.1. Client-server sync is not yet roadmapped so I don’t have any additional details there.

As you may have read: if you’re already using Angular, there’s a way to use the Vaadin’s Java-only approach to implement only a part of the UI: vaadin.com/blog/embedding-vaadin-components-in-angular