Companion.Signaling.Core 10.0.0

dotnet add package Companion.Signaling.Core --version 10.0.0
                    
NuGet\Install-Package Companion.Signaling.Core -Version 10.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Companion.Signaling.Core" Version="10.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Companion.Signaling.Core" Version="10.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Companion.Signaling.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Companion.Signaling.Core --version 10.0.0
                    
#r "nuget: Companion.Signaling.Core, 10.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Companion.Signaling.Core@10.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Companion.Signaling.Core&version=10.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Companion.Signaling.Core&version=10.0.0
                    
Install as a Cake Tool

Companion .NET Signaling

Companion .NET Signaling provides an API for change detection, therefore adds the possability to re-render components only when it is actually necessary. The concept is pretty much the same as the signals that are available in Angular.

How does this work?

All values that should be tracked as signals need to be warpped by a Companion.Signaling.Core.Signal<T>. Whenever this value is accessed in a pre-defined context (as Companion.Signaling.Core.DerivedSignal<T> and Companion.Signaling.Blazor.SignalingComponentBase are providing it), a reference is stored internally. Later, when the value is changed (and only when object.Equals actually says that the value changed), the object that accessed the signal will be notified.

How does this work internally?

As non-async code is always run on a specific thread, and it actually is the only thing running on that specific thread at the specific time, a internal ThreadStatic (docs) variable is used to create a context as mentioned above.

What features are available?

Currently, there are the following core concepts implemented:

  • Companion.Signaling.Core.Signal<T>: A simple value store with signaling capability
  • Companion.Signaling.Core.DerivedSignal<T>: Allow the calculation of a signal based on other signals (it gets recalculated whenever a signal used is changed)
  • Companion.Signaling.Core.SignalingEffect: Runs arbitrary code that is dependent on some signals (it gets re-run whenever a signal used is changed)
  • Companion.Signaling.Core.SignalingContext: Exposes control to the lifetime of any of the three types mentioned above
  • Companion.Signaling.Blazor.SignalingComponentBase: A Blazor component base which subscribes to signal value changes as DerivedSignals and SignalingEffects do

When to use Companion .NET Signaling?

  • Your application has complex state relationships
  • You need fine-grained reactivity for performance
  • You want to minimize unnecessary re-renders

Where can i find documentation?

All public methods have comments added that are roughly documenting their use. Further there are the following documents explaining the core concepts in detail:

  • BasiConcepts.md: Everything interesting to know about the signaling types themself
  • SignalingContext.md: Everything interesting to know about the SignalingContext mentioned above
  • UsageWithBlazor.md: Everything interesting to know about the integration into Blazor

Also a simple example can be found here.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Companion.Signaling.Core:

Package Downloads
Companion.Signaling.Blazor

Companion .NET Signaling provides an API for change detection and therefore allows performing recalculations only when it is actually necessary.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0 323 11/11/2025
10.0.0-preview2 161 11/8/2025
10.0.0-preview1 136 8/2/2025