@preact-signals/unified-signals
is runtime agnostic @preact/signals
reexport. That can be used for library developers that want to rely on user preact signals runtime. If you want to write library that uses preact signals you can take benefit from @preact-signals/unified-signals
. It uses shims instead of hooks if runtime is not providing it, also we polyfilling untracked
API.
You can install @preact-signals/unified-signals
using your package manager of choice:
# npm
npm i @preact-signals/unified-signals
# yarn
yarn i @preact-signals/unified-signals
# pnpm
pnpm i @preact-signals/unified-signals
If you are using @preact-signals/unified-signals
in your library to preserve runtime agnosticism you can use should add this lines
into your package.json
:
{
"peerDependencies": {
"@preact/signals-react": ">=1.2.0",
"@preact/signals": ">=1.1.0",
"@preact/signals-core": ">=1.1.0"
},
"peerDependenciesMeta": {
"@preact/signals-react": {
"optional": true
},
"@preact/signals": {
"optional": true
},
"@preact/signals-core": {
"optional": true
}
}
}
Basic @preact/signals
API and untracked
const a = signal(1);
const b = signal(2);
const c = computed(() => a.value + untracked(() => b.value));
console.log(c.value); // 3
a.value = 2;
console.log(c.value); // 4
b.value = 3;
console.log(c.value); // 4
@preact-signals/unified-signals
is licensed under the MIT License.