diff --git a/apps/fixtures/bare/package.json b/apps/fixtures/bare/package.json index f981ebb61..744dac6bc 100644 --- a/apps/fixtures/bare/package.json +++ b/apps/fixtures/bare/package.json @@ -8,7 +8,8 @@ }, "dependencies": { "@solidjs/start": "workspace:*", - "solid-js": "^1.9.11", + "@solidjs/web": "2.0.0-beta.16", + "solid-js": "2.0.0-beta.16", "vite": "7.3.1" }, "engines": { diff --git a/apps/fixtures/bare/tsconfig.json b/apps/fixtures/bare/tsconfig.json index 411ce3ba8..ab8dd6365 100644 --- a/apps/fixtures/bare/tsconfig.json +++ b/apps/fixtures/bare/tsconfig.json @@ -6,7 +6,7 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "allowJs": true, "strict": true, "noEmit": true, diff --git a/apps/fixtures/basic/package.json b/apps/fixtures/basic/package.json index a20fca86f..befde9d5b 100644 --- a/apps/fixtures/basic/package.json +++ b/apps/fixtures/basic/package.json @@ -7,10 +7,11 @@ "build": "vite build" }, "dependencies": { - "@solidjs/meta": "^0.29.4", - "@solidjs/router": "^0.15.4", + "@solidjs/meta": "0.30.0-next.0", + "@solidjs/router": "0.17.0-next.3", "@solidjs/start": "workspace:*", - "solid-js": "^1.9.11", + "@solidjs/web": "2.0.0-beta.16", + "solid-js": "2.0.0-beta.16", "vite": "7.3.1" }, "engines": { diff --git a/apps/fixtures/basic/src/app.tsx b/apps/fixtures/basic/src/app.tsx index d1359c8d8..6eec4bc3a 100644 --- a/apps/fixtures/basic/src/app.tsx +++ b/apps/fixtures/basic/src/app.tsx @@ -1,18 +1,18 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; -import { Suspense } from "solid-js"; +import { Loading } from "solid-js"; import "./app.css"; export default function App() { return ( ( + root={(props) => ( SolidStart - Basic Index About - {props.children} + {props.children} )} > diff --git a/apps/fixtures/basic/src/routes/[...404].tsx b/apps/fixtures/basic/src/routes/[...404].tsx index 4ea71ec7f..72c04ee2a 100644 --- a/apps/fixtures/basic/src/routes/[...404].tsx +++ b/apps/fixtures/basic/src/routes/[...404].tsx @@ -1,10 +1,8 @@ -import { Title } from "@solidjs/meta"; import { HttpStatusCode } from "@solidjs/start"; export default function NotFound() { return (
- Not Found

Page Not Found

diff --git a/apps/fixtures/basic/tsconfig.json b/apps/fixtures/basic/tsconfig.json index 411ce3ba8..ab8dd6365 100644 --- a/apps/fixtures/basic/tsconfig.json +++ b/apps/fixtures/basic/tsconfig.json @@ -6,7 +6,7 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "allowJs": true, "strict": true, "noEmit": true, diff --git a/apps/fixtures/basic/vite.config.ts b/apps/fixtures/basic/vite.config.ts index 27a23708d..f9a461a75 100644 --- a/apps/fixtures/basic/vite.config.ts +++ b/apps/fixtures/basic/vite.config.ts @@ -4,4 +4,7 @@ import { nitroV2Plugin } from "../../../packages/start-nitro-v2-vite-plugin/src" export default defineConfig({ plugins: [solidStart(), nitroV2Plugin()], + resolve: { + dedupe: ["solid-js", "@solidjs/web", "@solidjs/router"], + } }); diff --git a/apps/fixtures/css/package.json b/apps/fixtures/css/package.json index a7c4cf766..facc1713b 100644 --- a/apps/fixtures/css/package.json +++ b/apps/fixtures/css/package.json @@ -8,10 +8,11 @@ "start": "node .output/server/index.mjs" }, "dependencies": { - "@solidjs/meta": "^0.29.4", - "@solidjs/router": "^0.15.4", + "@solidjs/meta": "0.30.0-next.0", + "@solidjs/router": "0.17.0-next.3", "@solidjs/start": "workspace:*", - "solid-js": "^1.9.11", + "@solidjs/web": "2.0.0-beta.16", + "solid-js": "2.0.0-beta.16", "vite": "7.3.1" }, "engines": { diff --git a/apps/fixtures/css/src/app.tsx b/apps/fixtures/css/src/app.tsx index 32aeff5ec..431df0683 100644 --- a/apps/fixtures/css/src/app.tsx +++ b/apps/fixtures/css/src/app.tsx @@ -1,7 +1,7 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; -import { Suspense } from "solid-js"; +import { Loading } from "solid-js"; import "./app.css"; export default function App() { @@ -17,7 +17,7 @@ export default function App() { Unstyled - {props.children} + {props.children} )} diff --git a/apps/fixtures/css/src/components/layout.tsx b/apps/fixtures/css/src/components/layout.tsx index 99763f047..97750c3d2 100644 --- a/apps/fixtures/css/src/components/layout.tsx +++ b/apps/fixtures/css/src/components/layout.tsx @@ -1,5 +1,5 @@ -import { createSignal, FlowProps, onMount } from "solid-js"; -import { getRequestEvent } from "solid-js/web"; +import { createSignal, FlowProps, onSettled } from "solid-js"; +import { getRequestEvent } from "@solidjs/web"; const Badge = (props: FlowProps) => (

{props.children}
@@ -7,7 +7,9 @@ const Badge = (props: FlowProps) => ( const Layout = (props: FlowProps<{ title: string }>) => { const [mounted, setMounted] = createSignal(false); - onMount(() => setMounted(true)); + onSettled(() => { + setMounted(true); + }); return (
diff --git a/apps/fixtures/css/src/components/test.tsx b/apps/fixtures/css/src/components/test.tsx index 21defb028..843751851 100644 --- a/apps/fixtures/css/src/components/test.tsx +++ b/apps/fixtures/css/src/components/test.tsx @@ -1,4 +1,4 @@ -import { JSX } from "solid-js"; +import { JSX } from "@solidjs/web"; const clsx = (...args: (string | false | undefined)[]) => args.filter(Boolean).join(" "); diff --git a/apps/fixtures/css/src/routes/index.tsx b/apps/fixtures/css/src/routes/index.tsx index 3b4fa0f6e..1efa30f59 100644 --- a/apps/fixtures/css/src/routes/index.tsx +++ b/apps/fixtures/css/src/routes/index.tsx @@ -1,5 +1,5 @@ -import { createAsync, query } from "@solidjs/router"; -import { lazy, Show } from "solid-js"; +import { query } from "@solidjs/router"; +import { createMemo, lazy, Show } from "solid-js"; import "virtual:virtualModule.css"; import Layout from "../components/layout"; import { CommonTests } from "../components/test"; @@ -12,8 +12,10 @@ const Lazy = lazy(() => import("../components/lazy")); const LazyLink = lazy(() => import("../components/lazyLink")); const LazyLinkTmp = lazy(() => import("../components/lazyLinkTmp")); -const entries = import.meta.glob("../components/lazyG*.tsx"); -const LazyGlob = lazy(Object.values(entries)[0] as any); +const entries = import.meta.glob("/src/components/lazyG*.tsx"); +// Solid 2 lazy() requires an explicit moduleUrl in SSR when the loader +// isn't a static dynamic import the bundler plugin can analyze. +const LazyGlob = lazy(Object.values(entries)[0] as any, Object.keys(entries)[0]!.slice(1)); const SharedChunk = lazy(() => import("../components/sharedChunk/lazy1")); // Do not remove this. @@ -27,7 +29,7 @@ const getData = query(async () => { }, "data"); export default function Home() { - const data = createAsync(() => getData(), { deferStream: true }); + const data = createMemo(() => getData()); return (
diff --git a/apps/fixtures/css/tsconfig.json b/apps/fixtures/css/tsconfig.json index e4bb71b1e..a6755c569 100644 --- a/apps/fixtures/css/tsconfig.json +++ b/apps/fixtures/css/tsconfig.json @@ -6,7 +6,7 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "allowJs": true, "strict": true, "noEmit": true, diff --git a/apps/fixtures/experiments/package.json b/apps/fixtures/experiments/package.json index 32f10ed3e..cc861ce91 100644 --- a/apps/fixtures/experiments/package.json +++ b/apps/fixtures/experiments/package.json @@ -7,10 +7,11 @@ "build": "vite build" }, "dependencies": { - "@solidjs/meta": "^0.29.4", - "@solidjs/router": "^0.15.4", + "@solidjs/meta": "0.30.0-next.0", + "@solidjs/router": "0.17.0-next.3", "@solidjs/start": "workspace:*", - "solid-js": "^1.9.11", + "@solidjs/web": "2.0.0-beta.16", + "solid-js": "2.0.0-beta.16", "vite": "7.3.1" }, "engines": { diff --git a/apps/fixtures/experiments/src/app.tsx b/apps/fixtures/experiments/src/app.tsx index 912b2232a..42cb9cb58 100644 --- a/apps/fixtures/experiments/src/app.tsx +++ b/apps/fixtures/experiments/src/app.tsx @@ -1,7 +1,7 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; -import { Suspense } from "solid-js"; +import { Loading } from "solid-js"; import "./app.css"; import Provider from "./components/Provider"; @@ -14,7 +14,7 @@ export default function App() { SolidStart - Bare Index About - {props.children} + {props.children} )} diff --git a/apps/fixtures/experiments/src/components/Provider.tsx b/apps/fixtures/experiments/src/components/Provider.tsx index 581a6ea67..433a28067 100644 --- a/apps/fixtures/experiments/src/components/Provider.tsx +++ b/apps/fixtures/experiments/src/components/Provider.tsx @@ -4,8 +4,8 @@ import counterContext from "./counterContext"; export default function Provider(props) { return ( - + {props.children} - + ); } diff --git a/apps/fixtures/experiments/src/routes/index.tsx b/apps/fixtures/experiments/src/routes/index.tsx index 189744fb1..ded758b8a 100644 --- a/apps/fixtures/experiments/src/routes/index.tsx +++ b/apps/fixtures/experiments/src/routes/index.tsx @@ -2,7 +2,7 @@ import { Title } from "@solidjs/meta"; import { json } from "@solidjs/router"; import { clientOnly, GET } from "@solidjs/start"; import { getServerFunctionMeta } from "@solidjs/start/server"; -import { getRequestEvent, isServer } from "solid-js/web"; +import { getRequestEvent, isServer } from "@solidjs/web"; import Counter from "~/components/Counter"; const BreaksOnServer = clientOnly(() => import("~/components/BreaksOnServer")); diff --git a/apps/fixtures/experiments/tsconfig.json b/apps/fixtures/experiments/tsconfig.json index 411ce3ba8..ab8dd6365 100644 --- a/apps/fixtures/experiments/tsconfig.json +++ b/apps/fixtures/experiments/tsconfig.json @@ -6,7 +6,7 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "allowJs": true, "strict": true, "noEmit": true, diff --git a/apps/fixtures/hackernews/package.json b/apps/fixtures/hackernews/package.json index f90c57dc1..b9b3b15c0 100644 --- a/apps/fixtures/hackernews/package.json +++ b/apps/fixtures/hackernews/package.json @@ -8,9 +8,10 @@ "build": "vite build" }, "dependencies": { - "@solidjs/router": "^0.15.4", + "@solidjs/router": "0.17.0-next.3", "@solidjs/start": "workspace:*", - "solid-js": "^1.9.11", + "@solidjs/web": "2.0.0-beta.16", + "solid-js": "2.0.0-beta.16", "vite": "7.3.1" }, "engines": { diff --git a/apps/fixtures/hackernews/src/app.tsx b/apps/fixtures/hackernews/src/app.tsx index 82e4c0de1..d63db12a7 100644 --- a/apps/fixtures/hackernews/src/app.tsx +++ b/apps/fixtures/hackernews/src/app.tsx @@ -1,6 +1,6 @@ import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; -import { Suspense } from "solid-js"; +import { Loading } from "solid-js"; import "./app.css"; import Nav from "./components/nav"; @@ -10,9 +10,9 @@ export default function App() { root={props => ( <>
}> + Loading...}> {props.children} - + )} > diff --git a/apps/fixtures/hackernews/src/components/story.tsx b/apps/fixtures/hackernews/src/components/story.tsx index df247fe67..1cde75cd1 100644 --- a/apps/fixtures/hackernews/src/components/story.tsx +++ b/apps/fixtures/hackernews/src/components/story.tsx @@ -10,7 +10,7 @@ const Story: Component<{ story: StoryDefinition }> = props => { {props.story.title}} + fallback={{props.story.title}} > {props.story.title} diff --git a/apps/fixtures/hackernews/src/components/toggle.tsx b/apps/fixtures/hackernews/src/components/toggle.tsx index 56fa5c8cf..32375785e 100644 --- a/apps/fixtures/hackernews/src/components/toggle.tsx +++ b/apps/fixtures/hackernews/src/components/toggle.tsx @@ -5,7 +5,7 @@ export default function Toggle(props: { children: any }) { return ( <> -
+
    diff --git a/apps/fixtures/hackernews/src/lib/api.ts b/apps/fixtures/hackernews/src/lib/api.ts index 6b69a444b..914c9d911 100644 --- a/apps/fixtures/hackernews/src/lib/api.ts +++ b/apps/fixtures/hackernews/src/lib/api.ts @@ -37,6 +37,10 @@ const mapStories = { export const getStories = query( async (type: StoryTypes, page: number): Promise => { "use server"; + const storyType = mapStories[type]; + if (!storyType) { + return []; + } return fetchAPI(`${mapStories[type]}?page=${page}`); }, "stories", diff --git a/apps/fixtures/hackernews/src/routes/[...stories].tsx b/apps/fixtures/hackernews/src/routes/[...stories].tsx index b219dfb0f..3a69faecd 100644 --- a/apps/fixtures/hackernews/src/routes/[...stories].tsx +++ b/apps/fixtures/hackernews/src/routes/[...stories].tsx @@ -1,5 +1,5 @@ -import { createAsync, type RouteDefinition, type RouteSectionProps } from "@solidjs/router"; -import { For, Show } from "solid-js"; +import { A, type RouteDefinition, type RouteSectionProps } from "@solidjs/router"; +import { For, Show, createMemo } from "solid-js"; import Story from "~/components/story"; import { getStories } from "~/lib/api"; import { StoryTypes } from "~/types"; @@ -13,7 +13,7 @@ export const route = { export default function Stories(props: RouteSectionProps) { const page = () => +props.location.query.page || 1; const type = () => (props.params.stories || "top") as StoryTypes; - const stories = createAsync(() => getStories(type(), page())); + const stories = createMemo(() => getStories(type(), page())); return (
    @@ -26,9 +26,9 @@ export default function Stories(props: RouteSectionProps) { } > - + {"<"} prev - + page {page()} } > - + more {">"} - +
    - -
      - {story => } -
    -
    + {story => }
); diff --git a/apps/fixtures/hackernews/src/routes/stories/[id].tsx b/apps/fixtures/hackernews/src/routes/stories/[id].tsx index 59350e70d..b246a4d2f 100644 --- a/apps/fixtures/hackernews/src/routes/stories/[id].tsx +++ b/apps/fixtures/hackernews/src/routes/stories/[id].tsx @@ -1,5 +1,5 @@ -import { createAsync, type RouteDefinition, type RouteSectionProps } from "@solidjs/router"; -import { For, Show } from "solid-js"; +import { A, type RouteDefinition, type RouteSectionProps } from "@solidjs/router"; +import { For, Show, createMemo } from "solid-js"; import Comment from "~/components/comment"; import { getStory } from "~/lib/api"; @@ -10,31 +10,29 @@ export const route = { } satisfies RouteDefinition; export default function Story(props: RouteSectionProps) { - const story = createAsync(() => getStory(props.params.id)); + const story = createMemo(() => getStory(props.params.id)); return ( - -
-
- -

{story()!.title}

-
- - ({story()!.domain}) - -

- {story()!.points} points | by {story()!.user}{" "} - {story()!.time_ago} ago -

-
-
-

- {story()!.comments_count ? story()!.comments_count + " comments" : "No comments yet."} -

-
    - {comment => } -
-
+
+
+ +

{story().title}

+
+ + ({story().domain}) + +

+ {story().points} points | by {story().user}{" "} + {story().time_ago} ago +

- +
+

+ {story().comments_count ? story().comments_count + " comments" : "No comments yet."} +

+
    + {comment => } +
+
+
); } diff --git a/apps/fixtures/hackernews/src/routes/users/[id].tsx b/apps/fixtures/hackernews/src/routes/users/[id].tsx index 7a14752de..c624b466d 100644 --- a/apps/fixtures/hackernews/src/routes/users/[id].tsx +++ b/apps/fixtures/hackernews/src/routes/users/[id].tsx @@ -1,5 +1,5 @@ -import { createAsync, type RouteDefinition, type RouteSectionProps } from "@solidjs/router"; -import { Show } from "solid-js"; +import { type RouteDefinition, type RouteSectionProps } from "@solidjs/router"; +import { Show, createMemo, Loading } from "solid-js"; import { getUser } from "~/lib/api"; export const route = { @@ -9,29 +9,27 @@ export const route = { } satisfies RouteDefinition; export default function User(props: RouteSectionProps) { - const user = createAsync(() => getUser(props.params.id)); + const user = createMemo(() => getUser(props.params.id)); return ( -
- - User not found.}> -

User : {user()!.id}

-
    -
  • - Created: {user()!.created} -
  • -
  • - Karma: {user()!.karma} -
  • - -
  • {" "} - -
- -
-
-
+ Loading...
}> +
+

User : {user().id}

+
    +
  • + Created: {user().created} +
  • +
  • + Karma: {user().karma} +
  • + +
  • {" "} + +
+ +
+ ); } diff --git a/apps/fixtures/hackernews/tsconfig.json b/apps/fixtures/hackernews/tsconfig.json index 411ce3ba8..ab8dd6365 100644 --- a/apps/fixtures/hackernews/tsconfig.json +++ b/apps/fixtures/hackernews/tsconfig.json @@ -6,7 +6,7 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "allowJs": true, "strict": true, "noEmit": true, diff --git a/apps/fixtures/nitro-3/package.json b/apps/fixtures/nitro-3/package.json index 20f060a68..025b2733d 100644 --- a/apps/fixtures/nitro-3/package.json +++ b/apps/fixtures/nitro-3/package.json @@ -8,11 +8,11 @@ "preview": "vite preview" }, "dependencies": { - "@solidjs/meta": "^0.29.4", - "@solidjs/router": "^0.15.4", + "@solidjs/meta": "0.30.0-next.0", + "@solidjs/router": "0.17.0-next.3", "@solidjs/start": "workspace:*", - "nitro": "3.0.1-alpha.2", - "solid-js": "^1.9.11", + "nitro": "^3.0.1-alpha.2", + "solid-js": "2.0.0-beta.16", "vite": "7.3.1" }, "engines": { diff --git a/apps/fixtures/nitro-3/src/app.tsx b/apps/fixtures/nitro-3/src/app.tsx index d1359c8d8..478e4fa72 100644 --- a/apps/fixtures/nitro-3/src/app.tsx +++ b/apps/fixtures/nitro-3/src/app.tsx @@ -1,7 +1,7 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; -import { Suspense } from "solid-js"; +import { Loading } from "solid-js"; import "./app.css"; export default function App() { @@ -12,7 +12,7 @@ export default function App() { SolidStart - Basic Index About - {props.children} + {props.children} )} > diff --git a/apps/fixtures/nitro-3/tsconfig.json b/apps/fixtures/nitro-3/tsconfig.json index 434f11a9f..b9779bb45 100644 --- a/apps/fixtures/nitro-3/tsconfig.json +++ b/apps/fixtures/nitro-3/tsconfig.json @@ -6,7 +6,7 @@ "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "allowJs": true, "strict": true, "noEmit": true, diff --git a/apps/fixtures/notes/package.json b/apps/fixtures/notes/package.json index 6baf58f0c..ffa1cabe6 100644 --- a/apps/fixtures/notes/package.json +++ b/apps/fixtures/notes/package.json @@ -7,11 +7,12 @@ "build": "vite build" }, "dependencies": { - "@solidjs/router": "^0.15.4", + "@solidjs/router": "0.17.0-next.3", "@solidjs/start": "workspace:*", + "@solidjs/web": "2.0.0-beta.16", "date-fns": "^3.6.0", "marked": "^12.0.2", - "solid-js": "^1.9.11", + "solid-js": "2.0.0-beta.16", "unstorage": "1.10.2", "vite": "7.3.1" }, diff --git a/apps/fixtures/notes/src/app.tsx b/apps/fixtures/notes/src/app.tsx index 40ce9264a..72fa5028d 100644 --- a/apps/fixtures/notes/src/app.tsx +++ b/apps/fixtures/notes/src/app.tsx @@ -1,6 +1,6 @@ import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; -import { Suspense } from "solid-js"; +import { Loading } from "solid-js"; import EditButton from "~/components/EditButton"; import NoteList from "~/components/NoteList"; import { getNotes } from "~/lib/api"; @@ -10,8 +10,9 @@ import SearchField from "./components/SearchField"; export default function App() { return ( getNotes(String(location.query.searchText || ""))} root={props => ( -
+ )} - rootLoad={({ location }) => getNotes(location.query.searchText || "")} > diff --git a/apps/fixtures/notes/src/components/EditButton.tsx b/apps/fixtures/notes/src/components/EditButton.tsx index 717a197d9..30c16e446 100644 --- a/apps/fixtures/notes/src/components/EditButton.tsx +++ b/apps/fixtures/notes/src/components/EditButton.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. * */ -import type { JSX } from "solid-js"; +import type { JSX } from "@solidjs/web"; export default function EditButton(props: { noteId?: number; children: JSX.Element }) { const isDraft = !("noteId" in props); diff --git a/apps/fixtures/notes/src/components/NoteEditor.tsx b/apps/fixtures/notes/src/components/NoteEditor.tsx index e9dde85e1..9c5ce4465 100644 --- a/apps/fixtures/notes/src/components/NoteEditor.tsx +++ b/apps/fixtures/notes/src/components/NoteEditor.tsx @@ -6,7 +6,7 @@ * */ -import { useSubmission } from "@solidjs/router"; +import { useSubmissions } from "@solidjs/router"; import { marked } from "marked"; import { createSignal } from "solid-js"; import { deleteNote, saveNote } from "~/lib/api"; @@ -18,8 +18,6 @@ export default function NoteEditor(props: { }) { const [title, setTitle] = createSignal(props.initialTitle); const [body, setBody] = createSignal(props.initialBody); - const isSaving = useSubmission(saveNote); - const isDeleting = useSubmission(deleteNote); const isDraft = props.noteId == null; return ( @@ -61,7 +59,6 @@ export default function NoteEditor(props: {