From 027a03ab2eca0662a35fe1e6175ad684733fb8a0 Mon Sep 17 00:00:00 2001 From: Jeroen Zwartepoorte Date: Wed, 1 Oct 2025 14:27:23 +0200 Subject: [PATCH 1/3] fix(lit-virtual): create Virtualizer instance before hostConnected --- .changeset/hip-eels-speak.md | 7 +++++++ packages/lit-virtual/src/index.ts | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/hip-eels-speak.md diff --git a/.changeset/hip-eels-speak.md b/.changeset/hip-eels-speak.md new file mode 100644 index 000000000..51459e2f9 --- /dev/null +++ b/.changeset/hip-eels-speak.md @@ -0,0 +1,7 @@ +--- +'@tanstack/lit-virtual': patch +--- + +fix(lit-virtual): create Virtualizer instance before hostConnected + +When creating an instance of the reactive controller in `connectedCallback`, calling `addController` will synchronously call `hostConnected` on the controller. This means that `this.virtualizer` will still be `undefined`. diff --git a/packages/lit-virtual/src/index.ts b/packages/lit-virtual/src/index.ts index 7a00af057..e36887fd0 100644 --- a/packages/lit-virtual/src/index.ts +++ b/packages/lit-virtual/src/index.ts @@ -25,8 +25,6 @@ class VirtualizerControllerBase< host: ReactiveControllerHost, options: VirtualizerOptions, ) { - ;(this.host = host).addController(this) - const resolvedOptions: VirtualizerOptions = { ...options, onChange: (instance, sync) => { @@ -35,6 +33,8 @@ class VirtualizerControllerBase< }, } this.virtualizer = new Virtualizer(resolvedOptions) + + ;(this.host = host).addController(this) } public getVirtualizer() { From dbb9fdeec1229238c84c770a124e777fb59dae8b Mon Sep 17 00:00:00 2001 From: Jeroen Zwartepoorte Date: Wed, 1 Oct 2025 14:28:45 +0200 Subject: [PATCH 2/3] Fix linting problem --- packages/lit-virtual/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lit-virtual/src/index.ts b/packages/lit-virtual/src/index.ts index e36887fd0..75b3755ad 100644 --- a/packages/lit-virtual/src/index.ts +++ b/packages/lit-virtual/src/index.ts @@ -41,7 +41,7 @@ class VirtualizerControllerBase< return this.virtualizer } - async hostConnected() { + hostConnected() { this.cleanup = this.virtualizer._didMount() } From eb24e9b90eb67f5deffa579d68abc0956111225f Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:56:32 +0000 Subject: [PATCH 3/3] ci: apply automated fixes --- packages/lit-virtual/src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/lit-virtual/src/index.ts b/packages/lit-virtual/src/index.ts index 75b3755ad..9c915b341 100644 --- a/packages/lit-virtual/src/index.ts +++ b/packages/lit-virtual/src/index.ts @@ -33,7 +33,6 @@ class VirtualizerControllerBase< }, } this.virtualizer = new Virtualizer(resolvedOptions) - ;(this.host = host).addController(this) }