Title: devtools-ui 0.7.0 breaks SSR boot with solid-js <=1.9.12: `use` is not exported by solid-js/web server build · Issue #511 · TanStack/devtools · GitHub
Open Graph Title: devtools-ui 0.7.0 breaks SSR boot with solid-js <=1.9.12: `use` is not exported by solid-js/web server build · Issue #511 · TanStack/devtools
X Title: devtools-ui 0.7.0 breaks SSR boot with solid-js <=1.9.12: `use` is not exported by solid-js/web server build · Issue #511 · TanStack/devtools
Description: 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...
Open Graph Description: 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...
X Description: 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...
Opengraph URL: https://github.com/TanStack/devtools/issues/511
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"devtools-ui 0.7.0 breaks SSR boot with solid-js \u003c=1.9.12: `use` is not exported by solid-js/web server build","articleBody":"### TanStack Devtools version\n\n`@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)\n\n### Framework/Library version\n\nTanStack Start (`@tanstack/react-start` 1.168.x) + Vite 8 (rolldown) + `@cloudflare/vite-plugin`, solid-js 1.9.12 in the lockfile\n\n### Describe the bug\n\nUpgrading `@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:\n\n```\nError: Error during dependency optimization:\n\n[MISSING_EXPORT] \"use\" is not exported by \"node_modules/solid-js/web/dist/server.js\".\n ╭─[ node_modules/@tanstack/devtools/node_modules/@tanstack/devtools-ui/dist/esm/components/theme.js:2:45 ]\n │\n 2 │ import { createComponent, insert, template, use } from \"solid-js/web\";\n │ ─┬─\n │ ╰─── Missing export\n```\n\nThe dev server never starts, which also takes down every Playwright run driven by `vite dev`.\n\n### Root cause\n\n- `@tanstack/devtools-ui` **0.7.0** (PR #492, commit a46d1f5) wrapped `ThemeContextProvider`'s children in `\u003cspan 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`.\n- 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`).\n- `@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.\n\nClient-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.\n\n### Steps to reproduce\n\n1. Lockfile with `solid-js@1.9.12` (any version ≥1.9.7 and ≤1.9.12 works) and `@tanstack/devtools@0.14.x`.\n2. Import devtools in an app whose Vite SSR environment processes it (TanStack Start default setup is enough).\n3. `vite dev` → `MISSING_EXPORT \"use\"` during SSR dependency optimization.\n\nOr minimally, in any Node ESM context resolving the server condition:\n\n```js\nimport { use } from 'solid-js/web'; // solid-js@1.9.12, server condition → SyntaxError/MISSING_EXPORT\n```\n\n### Suggested fix\n\nRaise 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 `ref` → `use` emission in output that gets loaded under the server condition.\n\nWorkaround 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).\n","author":{"url":"https://github.com/tombeckenham","@type":"Person","name":"tombeckenham"},"datePublished":"2026-08-20T03:26:05Z","url":"https://github.com/TanStack/devtools/issues/511"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:418edf16-844e-0ff1-fe5e-653dfd1c4c2d |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B0D8:A292E:1A0BD8C:23AA3FF:6AF9AC7F |
| html-safe-nonce | 97ae4496af1eecf294bf6ed808a18d111fca074470de522c8a26515c3257f12d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMEQ4OkEyOTJFOjFBMEJEOEM6MjNBQTNGRjo2QUY5QUM3RiIsInZpc2l0b3JfaWQiOiI4OTUwNTcwMDkxMjYzMTQzMDM5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 4b4228fa24ee05df0c4a31fedbc44704d63b2ca2ef2f33ce5c77f74d6a1134af |
| hovercard-subject-tag | issue:5199360264 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/TanStack/devtools/511/issue_layout |
| twitter:image | https://opengraph.githubassets.com/99268e8ca6ef06f3ecdafb627441dc53578a5bf41d5967685df68fe45c3b67bc/TanStack/devtools/issues/511 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/99268e8ca6ef06f3ecdafb627441dc53578a5bf41d5967685df68fe45c3b67bc/TanStack/devtools/issues/511 |
| og:image:alt | 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... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | tombeckenham |
| hostname | github.com |
| expected-hostname | github.com |
| None | 612d3e6ffd693e7ea8d9fcf452370995872baef31d825b1fedef704cd3d24ac7 |
| turbo-cache-control | no-preview |
| go-import | github.com/TanStack/devtools git https://github.com/TanStack/devtools.git |
| octolytics-dimension-user_id | 72518640 |
| octolytics-dimension-user_login | TanStack |
| octolytics-dimension-repository_id | 1026402761 |
| octolytics-dimension-repository_nwo | TanStack/devtools |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1026402761 |
| octolytics-dimension-repository_network_root_nwo | TanStack/devtools |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 072e34035c13c31543fba9f025cbbbda4210dae4 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width