diff --git a/packages/start/package.json b/packages/start/package.json
index 68c717851..ddc13f34c 100644
--- a/packages/start/package.json
+++ b/packages/start/package.json
@@ -63,6 +63,7 @@
"solid-js": "2.0.0-beta.3",
"source-map-js": "^1.2.1",
"srvx": "^0.11.9",
+ "terracotta": "2.0.0-next.2",
"vite-plugin-solid": "3.0.0-next.2"
},
"engines": {
diff --git a/packages/start/src/shared/dev-overlay/DevOverlayDialog.tsx b/packages/start/src/shared/dev-overlay/DevOverlayDialog.tsx
index ec94c6dea..fb8117abd 100644
--- a/packages/start/src/shared/dev-overlay/DevOverlayDialog.tsx
+++ b/packages/start/src/shared/dev-overlay/DevOverlayDialog.tsx
@@ -4,16 +4,8 @@ import * as htmlToImage from "html-to-image";
import type { JSX } from "solid-js";
import { Errored, For, Show, Loading, createMemo, createSignal } from "solid-js";
import { Portal } from "@solidjs/web";
-// @ts-ignore - terracotta removed during Solid 2.0 migration; stubbed below
-// import { Dialog, DialogOverlay, DialogPanel, Select, SelectOption } from "terracotta";
-
-// Minimal stubs for terracotta components (removed during Solid 2.0 migration).
-// These are only used in the dev error overlay so exact behaviour is not critical.
-function Dialog(props: any) { return
{props.children}
; }
-function DialogOverlay(props: any) { return ; }
-function DialogPanel(props: any) { return {props.children}
; }
-function Select(props: any) { return {props.children}
; }
-function SelectOption(props: any) { return {props.children}
; }
+import { Dialog, DialogOverlay, DialogPanel } from 'terracotta/dialog';
+import { Select, SelectOption } from 'terracotta/select';
import info from "../../../package.json" with { type: "json" };
import { CodeView } from "./CodeView.tsx";
import { createStackFrame, type StackFrameSource } from "./createStackFrame.ts";
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 18229c9ea..18bc726e3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -410,6 +410,9 @@ importers:
srvx:
specifier: ^0.11.9
version: 0.11.12
+ terracotta:
+ specifier: 2.0.0-next.2
+ version: 2.0.0-next.2(@solidjs/web@2.0.0-beta.3(@solidjs/signals@0.13.3)(solid-js@2.0.0-beta.3))(solid-js@2.0.0-beta.3)
vite-plugin-solid:
specifier: 3.0.0-next.2
version: 3.0.0-next.2(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.3)(vite@7.3.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))
@@ -2831,11 +2834,11 @@ packages:
solid-js:
optional: true
- babel-preset-solid@2.0.0-beta.3:
- resolution: {integrity: sha512-hV8Gi0Akolju1ydXNZNmt/SWcvGSWX5mqg+HHQFU2/iz22MDMflRSJrhaqrmN0gxJin9s3A/x3A20HqmcGhkBg==}
+ babel-preset-solid@2.0.0-beta.4:
+ resolution: {integrity: sha512-5WllDZ3vUlQHFsH21vccTqGWxZaiwH/oQeQcU32P4b4XAlDio3wuVc2rYLaY9A2sDQ+SRuE2oPeC+5zaXZC4LQ==}
peerDependencies:
'@babel/core': ^7.0.0
- solid-js: ^2.0.0-beta.3
+ solid-js: ^2.0.0-beta.4
peerDependenciesMeta:
solid-js:
optional: true
@@ -4833,6 +4836,13 @@ packages:
peerDependencies:
solid-js: ^1.7
+ solid-use@1.0.0-next.2:
+ resolution: {integrity: sha512-B5Li4cnaO/4XHCVkqjZX/JjFWq0h1ECmGHEUFKTQG1O7p4lLPB5533fYPD6kD8yhkeegE31yDDGZL4B7xpmjVA==}
+ engines: {node: '>=20'}
+ peerDependencies:
+ '@solidjs/web': ^2.0.0-beta.3
+ solid-js: ^2.0.0-beta.3
+
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -5018,6 +5028,13 @@ packages:
peerDependencies:
solid-js: ^1.8
+ terracotta@2.0.0-next.2:
+ resolution: {integrity: sha512-UORIHiWeF1Z5svbPjCVEqZ5LKmbyNEe52HXqtUh0yFFS7zOBiQbL75x8vZLb0TlbxaLk31ZwUbyfE/z5x0O85w==}
+ engines: {node: '>=20'}
+ peerDependencies:
+ '@solidjs/web': ^2.0.0-beta.4
+ solid-js: ^2.0.0-beta.4
+
terser@5.44.0:
resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==}
engines: {node: '>=10'}
@@ -7961,7 +7978,7 @@ snapshots:
optionalDependencies:
solid-js: 1.9.11
- babel-preset-solid@2.0.0-beta.3(@babel/core@7.28.3)(solid-js@2.0.0-beta.3):
+ babel-preset-solid@2.0.0-beta.4(@babel/core@7.28.3)(solid-js@2.0.0-beta.3):
dependencies:
'@babel/core': 7.28.3
babel-plugin-jsx-dom-expressions: 0.41.0-next.11(@babel/core@7.28.3)
@@ -9031,7 +9048,7 @@ snapshots:
crossws: 0.3.4
defu: 6.1.4
get-port-please: 3.1.2
- h3: 1.15.3
+ h3: 1.15.8
http-shutdown: 1.2.2
jiti: 2.6.1
mlly: 1.7.4
@@ -10122,6 +10139,11 @@ snapshots:
dependencies:
solid-js: 1.9.11
+ solid-use@1.0.0-next.2(@solidjs/web@2.0.0-beta.3(@solidjs/signals@0.13.3)(solid-js@2.0.0-beta.3))(solid-js@2.0.0-beta.3):
+ dependencies:
+ '@solidjs/web': 2.0.0-beta.3(@solidjs/signals@0.13.3)(solid-js@2.0.0-beta.3)
+ solid-js: 2.0.0-beta.3
+
source-map-js@1.2.1: {}
source-map-support@0.5.21:
@@ -10320,6 +10342,12 @@ snapshots:
solid-js: 1.9.11
solid-use: 0.9.1(solid-js@1.9.11)
+ terracotta@2.0.0-next.2(@solidjs/web@2.0.0-beta.3(@solidjs/signals@0.13.3)(solid-js@2.0.0-beta.3))(solid-js@2.0.0-beta.3):
+ dependencies:
+ '@solidjs/web': 2.0.0-beta.3(@solidjs/signals@0.13.3)(solid-js@2.0.0-beta.3)
+ solid-js: 2.0.0-beta.3
+ solid-use: 1.0.0-next.2(@solidjs/web@2.0.0-beta.3(@solidjs/signals@0.13.3)(solid-js@2.0.0-beta.3))(solid-js@2.0.0-beta.3)
+
terser@5.44.0:
dependencies:
'@jridgewell/source-map': 0.3.11
@@ -10630,7 +10658,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.3
'@types/babel__core': 7.20.5
- babel-preset-solid: 2.0.0-beta.3(@babel/core@7.28.3)(solid-js@2.0.0-beta.3)
+ babel-preset-solid: 2.0.0-beta.4(@babel/core@7.28.3)(solid-js@2.0.0-beta.3)
merge-anything: 5.1.7
solid-js: 2.0.0-beta.3
solid-refresh: 0.8.0-next.4(solid-js@2.0.0-beta.3)