Repository navigation
Conversation
Port @tanstack/solid-virtual to solid-js 2.0 (rc.19+): merge replaces mergeProps, a render effect tracks option changes in place of createComputed, the virtualizer mounts in onSettled, and virtual items are a projection store reconciled by index that re-reads on each virtualizer change. The constructor's one-time option read is untracked. The package tests and builds with @solidjs/vite-plugin, which needs vite 8, so it gets its own vite, vitest and @tanstack/vite-config. Enters changesets pre mode (rc) and lets the release workflow run on *-pre branches, as TanStack Query and Router do for their Solid 2 lines.
🦋 Changeset detectedLatest commit: c004850 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Solid 2 package and tooling setup packages/solid-virtual/package.json, packages/solid-virtual/tsconfig.json, packages/solid-virtual/vite.config.ts, pnpm-workspace.yaml, package.json |
The package updates its Solid peer dependency, development dependencies, JSX import source, and Vite plugin. The workspace adds a Vite override, and the Sherif command excludes Vite-related packages. |
Reactive adapter and test updates packages/solid-virtual/src/index.tsx, packages/solid-virtual/tests/index.test.ts |
The adapter applies reactive option snapshots to the core virtualizer and derives virtual items and total size from a version signal. Mount setup uses onSettled. Tests flush reactive updates and check item identity and sizing. |
Solid 2 release and installation guidance .changeset/pre.json, .changeset/solid-virtual-solid-2.md, .github/workflows/release.yml, docs/installation.md |
Changesets configure an rc pre-release and declare a major Solid 2 package release. The workflow includes *-pre branches, and installation docs distinguish Solid 2 and Solid 1 package versions. |
Priority:
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant SolidScope
participant SolidAdapter
participant CoreVirtualizer
participant SolidStores
participant Consumers
SolidScope->>SolidAdapter: Provide reactive option snapshot
SolidAdapter->>CoreVirtualizer: Apply snapshot with setOptions
CoreVirtualizer->>SolidAdapter: Invoke onChange callback
SolidAdapter->>SolidStores: Increment version signal
SolidStores->>Consumers: Provide virtualItems and totalSize
Suggested reviewers: tannerlinsley, piecyk
Merge Risk: 
Minimal · up to c0048
-
No concrete merge-blocking issue is established in the selected Solid 2 dependency updates. Merge readiness remains subject to normal build and test checks.
Pre-merge checks: 
5
-
Full details: Title check
-
Explanation
The title "feat(solid-virtual): support Solid 2" names the main change: adding Solid 2 support to
@tanstack/solid-virtual. The changeset covers the adapter rewrite, the peer range change to solid-js >=2.0.0-rc.19 <3.0.0, the dependency and tooling updates, and the pre-release setup. The title is specific and concise, and it follows the conventional commit form. It does not list every detail, which is expected.
Full details: Description check
-
Explanation
The description follows the repository template. It has the Changes section with a detailed explanation of the Solid 2 migration, the pre-release setup, and the local verification steps. The Checklist section is present, and the Release Impact section marks the changeset box. The contributing-guide and test:pr checklist items are unchecked. The description says the author ran the test suite, tsc, eslint, and other checks locally, but the checklist does not mark that pnpm run test:pr ran. This gap is minor and does not block the check.
Full details: Docstring Coverage
-
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 3 files. (1 skipped: 1 unsupported.)
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
🎯 Changes
Solid 2 support for
@tanstack/solid-virtual, set up as a pre-release line the way@tanstack/solid-query6 and@tanstack/solid-router2 were. It targets asolid-v2-prebranch, somainstays on Solid 1.createVirtualizerandcreateWindowVirtualizerkeep their API.mergereplacesmergeProps. A render effect replacescreateComputed: its compute half reads every option and its effect half applies them. The virtualizer mounts inonSettledinstead ofonMount, and the constructor's one-time read of the options is untracked.getVirtualItems()is now a projection store reconciled byindex. It re-reads on each virtualizer change through a version signal written withownedWrite, so rows keep their identity while scrolling and measuring.getTotalSize()is a memo over the same version.solid-js(>=2.0.0-rc.19 <3.0.0) only. It tests and builds with@solidjs/vite-plugin, which needs vite 8, so it gets its ownvite,vitestand@tanstack/vite-config0.6 (through a pnpm override), the same way Query's Solid 2 line does it.sherifignoresviteand@tanstack/vite-configfor that reason.rctag, and the release workflow also runs on*-prebranches.solid-virtualgets a major bump, giving4.0.0-rc.0. The installation docs now say which versions go with which Solid major.Locally:
@tanstack/solid-virtualtests,tsc, eslint,vite build, publint, sherif, knip andtest:docs. In Chromium I also ran a 1,000-row list with dynamic row heights. It renders the right window, follows scrolling, re-measures rows to update the total size, and grows when the count changes, with no console errors.✅ Checklist
pnpm run test:pr.🚀 Release Impact
Summary by CodeRabbit
@tanstack/solid-virtual4.x now supports Solid 2, with virtual items and total size updating reactively as data or measurements change.