TanStack / TanStack/devtools

devtools-ui 0.7.0 breaks SSR boot with solid-js <=1.9.12: `use` is not exported by solid-js/web server build

Đang mở Phù hợp với người mới
#511 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
TypeScript
Star
499
Fork
100
Merge trung bình
1 ngày 17 giờ
Pull request đã merge (30 ngày)
4

Mô tả

TanStack Devtools version

@tanstack/devtools 0.14.0 / @tanstack/devtools-ui 0.7.0 (still present in 0.14.1 / 0.7.1, the latest at time of filing)

Framework/Library version

TanStack Start (@tanstack/react-start 1.168.x) + Vite 8 (rolldown) + @cloudflare/vite-plugin, solid-js 1.9.12 in the lockfile

Describe the bug

Upgrading @tanstack/devtools 0.13.0 → 0.14.0 (which bumps the bundled @tanstack/devtools-ui 0.6.0 → 0.7.0) makes vite dev fail to boot in any app whose SSR environment processes devtools, when the resolved solid-js is ≤ 1.9.12:

Error: Error during dependency optimization:

[MISSING_EXPORT] "use" is not exported by "node_modules/solid-js/web/dist/server.js".
   ╭─[ node_modules/@tanstack/devtools/node_modules/@tanstack/devtools-ui/dist/esm/components/theme.js:2:45 ]
   │
 2 │ import { createComponent, insert, template, use } from "solid-js/web";
   │                                             ─┬─
   │                                              ╰─── Missing export

The dev server never starts, which also takes down every Playwright run driven by vite dev.

Root cause
  • @tanstack/devtools-ui 0.7.0 (PR #492, commit a46d1f5) wrapped ThemeContextProvider's children in <span style="display:contents" ref={setContainer}> so it can call ensureDevtoolsStyles(element.ownerDocument) (src/components/theme.tsx). The Solid compiler emits that ref as use(setContainer, _el$), so the published ESM (dist/esm/components/theme.js) now imports use from solid-js/web. In 0.6.0 that file imported only createComponent.
  • Under the node/SSR export condition, solid-js/web resolves to web/dist/server.js. That server build exported no use at all through solid-js 1.9.12; solid-js 1.9.13 (2026-05-15) added it as a notSup stub (notSup as use).
  • @tanstack/devtools-ui declares solid-js: >=1.9.7 (and @tanstack/devtools depends on ^1.9.9), so resolvers happily keep ≤ 1.9.12 in existing lockfiles — a lockfile that worked with devtools 0.13.0 hard-fails right after the bump.

Client-only setups never hit it (the browser build has always exported use), which is presumably why it shipped unnoticed. It surfaces wherever the SSR side bundles or import-validates devtools — e.g. TanStack Start with rolldown-vite's SSR dependency optimizer.

Steps to reproduce
  1. Lockfile with solid-js@1.9.12 (any version ≥1.9.7 and ≤1.9.12 works) and @tanstack/devtools@0.14.x.
  2. Import devtools in an app whose Vite SSR environment processes it (TanStack Start default setup is enough).
  3. vite devMISSING_EXPORT "use" during SSR dependency optimization.

Or minimally, in any Node ESM context resolving the server condition:

import { use } from 'solid-js/web'; // solid-js@1.9.12, server condition → SyntaxError/MISSING_EXPORT
Suggested fix

Raise the solid-js floor to ^1.9.13 in @tanstack/devtools-ui's (and @tanstack/devtools's) dependency ranges, so resolvers pull a solid-js whose server build has the use stub. Alternatively avoid the refuse emission in output that gets loaded under the server condition.

Workaround for affected users: force-dedupe solid-js to ≥ 1.9.13 (we removed the stale nested resolutions from the lockfile so a single hoisted 1.9.15 serves everything; that fixes the boot).

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với src/components/theme.tsx và tái hiện lỗi tối ưu hóa dependency của SSR bằng solid-js 1.9.12 cùng import tối thiểu cho điều kiện server được mô tả trong issue. Giải quyết vấn đề tương thích của package đã phát hành, sau đó xác minh rằng vite dev khởi động với một thiết lập SSR sử dụng khoảng dependency bị ảnh hưởng và lỗi missing-export không còn xảy ra.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
typescript, vite
Lĩnh vực
tooling
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
75/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.