Skip to content

fix(deps): update dependency alien-signals-1 to v3#99

Closed
renovate[bot] wants to merge 1 commit intomainfrom
renovate/alien-signals-1-3.x
Closed

fix(deps): update dependency alien-signals-1 to v3#99
renovate[bot] wants to merge 1 commit intomainfrom
renovate/alien-signals-1-3.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Apr 12, 2026

This PR contains the following updates:

Package Change Age Confidence
alien-signals-1 1.0.43.1.2 age confidence

Release Notes

johnsoncodehk/signals (alien-signals-1)

v3.1.2

Compare Source

v3.1.1

Compare Source

v3.1.0

Compare Source

v3.0.6

Compare Source

v3.0.5

Compare Source

v3.0.4

Compare Source

v3.0.3

Compare Source

v3.0.2

Compare Source

v3.0.1

Compare Source

v3.0.0

Compare Source

v2.0.8

Compare Source

v2.0.7

Compare Source

v2.0.6

Compare Source

v2.0.5

Compare Source

v2.0.4

Compare Source

v2.0.3

Compare Source

v2.0.2

Compare Source

v2.0.1

Compare Source

v2.0.0

Compare Source

Version 2.0 rethinks and optimizes the reactive system model, with minimal impact on users who only use the surface APIs. If you extend or deeply utilize alien-signals, please pay attention to the "Reactive Model Refactor" section.

Changes to Surface APIs

  • Added four new APIs: getCurrentSub, setCurrentSub, getCurrentScope, setCurrentScope

Deferred Signal Value Evaluation

Differences from v1

In v1, assigning a value to a signal immediately propagated the Dirty flag, causing some computed values to be unnecessarily re-evaluated.

// v1
const src = signal(10);
const double = computed(() => src() * 2);

double(); // -> 20

src(999); // double.flags -> Dirty
src(10);  // no effect

double(); // -> 20 (recomputed unnecessarily)

In v2, assigning a value to a signal only propagates the Pending flag, reducing unnecessary recomputation. Actual evaluation occurs during the next read.

// v2
const src = signal(10);
const double = computed(() => src() * 2);

double(); // -> 20

src(999); // src.flags -> Dirty, double.flags -> Pending
src(10);  // no effect

double(); // Checks src state -> unchanged, no recomputation needed

Effect Scope Parent-Child Hierarchy

In v2, recursive cleanup is achieved through a parent-child structure:

const scope1 = effectScope(() => {
	const scope2 = effectScope(() => {
		effect(() => ...);
		computed(() => ...);
	});
});

scope1();

Calling scope1() automatically cleans up its child scope scope2.

To make scope2 independent of scope1, temporarily set activeScope = undefined manually:

const scope1 = effectScope(() => {
	const prev = setCurrentScope(undefined);
	const scope2 = effectScope(() => {
		effect(() => ...);
		computed(() => ...);
	});
	setCurrentScope(prev);
});

Reactive Model Refactor

  • Merged Subscriber and Dependency into ReactiveNode
  • Trigger unwatched(dep) when all subscribers are lost, without recursively clearing subsequent subscribers
  • propagate now only propagates Pending; to immediately mark Dirty, call propagate + shallowPropagate after assignment
  • Adjusted naming for EffectFlags and ReactiveFlags; removed unused flags
Updated Options and APIs
  • notifyEffectnotify
  • updateComputedupdate
  • Added the unwatched option for custom handling when all subscribers are lost
  • Removed processEffectNotifications, processComputedUpdate, processPendingInnerEffects, updateDirtyFlag
  • Added unlink, checkDirty

For performance differences, please refer to js-reactivity-benchmark.

Contributors

Thanks~

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Essential tools for software developers and teams.

Silver Sponsors

You?

v1.0.13

Compare Source

v1.0.12

Compare Source

v1.0.11

Compare Source

v1.0.10

Compare Source

v1.0.9

Compare Source

v1.0.8

Compare Source

v1.0.7

Compare Source

v1.0.6

Compare Source

v1.0.5

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@dangreen dangreen closed this Apr 12, 2026
@renovate
Copy link
Copy Markdown
Contributor Author

renovate Bot commented Apr 12, 2026

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 3.x releases. But if you manually upgrade to 3.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate renovate Bot deleted the renovate/alien-signals-1-3.x branch April 12, 2026 20:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant