Skip to content

[lit-html] Fix ref directive crash when passed undefined during lifec…#5231

Draft
Nitin75408 wants to merge 1 commit into
lit:mainfrom
Nitin75408:fixes/5217
Draft

[lit-html] Fix ref directive crash when passed undefined during lifec…#5231
Nitin75408 wants to merge 1 commit into
lit:mainfrom
Nitin75408:fixes/5217

Conversation

@Nitin75408

Copy link
Copy Markdown

Summary

  • Guard _updateRefValue else branch with else if (this._ref !== undefined) to prevent TypeError when setting .value on undefined
  • Add early returns in disconnected() and reconnected() when this._ref is undefined
  • Change AsyncDirective.isConnected from ! definite assignment (isConnected!: boolean) to safe default (isConnected = false) so it is never undefined at runtime
  • Change Directive._$isConnected getter to use optional chaining (this._$parent?._$isConnected ?? false) to handle uninitialized parent references

Test plan

  • Added 6 new tests covering ref(undefined) during disconnect, reconnect, multiple cycles, ref switching, and re-render while disconnected
  • All 23 ref tests pass on Chromium and Firefox (dev + prod)
  • Existing tests unaffected

Fixes #5217

@changeset-bot

changeset-bot Bot commented Feb 17, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 21338a2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@google-cla

google-cla Bot commented Feb 17, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

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.

Ref directive does not san-check its stored arg on disconnected/reconnected lifecycle

1 participant