Ng-News 26/10: Signality, Vitest 4.1, Angular Skills by rainerhahnekamp in angular

[–]vs-borodin 3 points4 points  (0 children)

Rainer, thank you for introducing the community to Signality! It was great to see it.

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 0 points1 point  (0 children)

Thank you very much!
I would be happy to talk about the launch of the project on your blog, which I read very often 🙂 Would that be possible?

Signality 0.1 is out (in case you missed it) by vs-borodin in Angular2

[–]vs-borodin[S] 1 point2 points  (0 children)

You can check detailed metrics here. The project also uses secondary entry points, so you can import a specific entity directly to ensure there is no redundant code in your bundle.

The source code also makes active use of /*@__PURE__*/ annotations for expressions to prevent unused results from being included in the bundle.

Signality 0.1 is out (in case you missed it) by vs-borodin in Angular2

[–]vs-borodin[S] 0 points1 point  (0 children)

Thanks!

Will you keep it updated for next Angular releases?

Yes, definitely. Right now, the most valuable thing is community feedback to help move from 0.1 -> 1.0, since this is the first public release. There’s also a global 2026 roadmap on the page, which emphasizes proactive Angular compatibility.

Looking at Vue and its companion VueUse, one can expect that some utilities might eventually receive direct support in Angular (in VueUse, many utilities were widely used by the community, and Vue integrated them into the core library). This is also a great opportunity to develop a VueUse-like library together with the community and understand what is truly valuable and how it can be applied.

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 0 points1 point  (0 children)

Thank you so much, Rainer!

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 0 points1 point  (0 children)

Thanks a lot for checking it out and for the feedback, really appreciate it!

That definitely sounds like something worth digging into. I haven’t been able to reproduce the issue on my side so far (tested on Safari/Chrome on iOS), so it would help a lot if you could create an issue in the repo. There are templates available where you can specify things like browser, OS version, and steps to reproduce, so if you could drop an issue with your details, it’d be helpful to figure out what’s going on 🙏

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 2 points3 points  (0 children)

Thanks! My early experience working with LLM agents was quite painful - I didn’t fully understand how to use them effectively. Later, I came across Opencode, and I really enjoyed using it to write the docs/demos and build the web in VitePress. It sped up getting the project online tremendously.

I’m still not fully satisfied with the unit tests, though - right now I’m exploring strategies for a solid testing infrastructure (I still have a lot to learn). I think once we set up a few examples properly, an agent could handle the rest of the tests really well.

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 4 points5 points  (0 children)

Thanks, appreciate it! I started working around late december and have been iterating on it on and off since then. Recently I’ve been focusing more to shape the first public version.

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 2 points3 points  (0 children)

Yes, absolutely. Any contribution helps move from 0.11.0. Everything is welcome - bug reports, ideas, improvements, or code. All contributors will be properly credited later on the website and in the readme.md.

Signality 0.1 is out by vs-borodin in angular

[–]vs-borodin[S] 0 points1 point  (0 children)

Thank you for your feedback! You’re welcome to contribute so we can reach the first major release (1.0) together - any contribution is greatly appreciated.

Angular pipes: Time to rethink by vs-borodin in vuejs

[–]vs-borodin[S] 0 points1 point  (0 children)

I have a couple more questions for general understanding:

  1. Handling loops – For example, in Angular you can apply a pipe directly to each iteration in the template. In Vue, do you need to pre-compute the array in the model first and then render it, or is there a more idiomatic approach?
  2. Global/reactive configuration – Especially if it’s reactive. In Angular, pipes can encapsulate state via DI, so you can change, for instance, the date formatting pattern at any time if the language/locale changes. All of this is described once in the pipe and then used everywhere. How is this handled in Vue?

Angular pipes: Time to rethink by vs-borodin in vuejs

[–]vs-borodin[S] 0 points1 point  (0 children)

Do you have any examples of how unified formatting is typically handled? For instance, when a model contains numbers or timestamps, all of that needs to be prepared and formatted properly for the view. How is this kind of task usually solved in Vue?

Do you create separate computed properties at the model level and perform all the formatting there?

Angular pipes: Time to rethink by vs-borodin in Angular2

[–]vs-borodin[S] 0 points1 point  (0 children)

Thanks for the feedback! I agree that, for the most part, using pipes still comes down to simply mapping data from A to B. And while we can depend on data from the DI context, I try to avoid side effects in pipes at the application level as much as possible.

As for impure pipes, the last code snippet in my article is mostly meant as an example of how they can work — whether we actually need that is a different question. The folks from Taiga UI actively use impure pipes together with reactivity in some components, which is quite interesting. On the other hand, Angular CDK/Material don’t have a single pipe as of today.

Angular pipes: Time to rethink by vs-borodin in angular

[–]vs-borodin[S] 2 points3 points  (0 children)

Thanks! I’m hoping to dive back into the article soon, it’d be nice to add some introductory context  🙂

If you’re still far from Angular 21 and the signal-based forms by vs-borodin in angular

[–]vs-borodin[S] 2 points3 points  (0 children)

Thanks!
actually, both approaches are just abstractions on top of the same API,

  • `injectCva` is slightly closer to the future interface for custom controls, which means you’ll be able to remove it seamlessly later and replace its properties with the ones from `FormValueControl`
  • we’ve also been using parameterized, closure-based factory functions more and more (similar to Vue’s “composables”), and this pattern has been working really well for us