Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
05bf908
Initial upgrade to solid v2
brenelz Mar 4, 2026
a26c9b4
Fix hydration mismatch
brenelz Mar 4, 2026
984a368
fixes
brenelz Mar 5, 2026
1c0efad
dedupe solid and solid-router
brenelz Mar 5, 2026
de8272b
fixture tweaks
brenelz Mar 5, 2026
ad6c458
more hackernews tweaks
brenelz Mar 5, 2026
6d3a870
fixes
brenelz Mar 6, 2026
cc134c5
upgrade to newest solid beta
brenelz Mar 6, 2026
57c529f
Reset landing page to v1 because of kobalte
brenelz Mar 7, 2026
656cda1
lockfile changes
brenelz Mar 7, 2026
91a89a8
use solidjs next version
brenelz Mar 10, 2026
3dc43fc
ugprade to beta.2
brenelz Mar 11, 2026
39e4a8f
fix lockfile
brenelz Mar 11, 2026
a7cf407
Upgrade to solid v2 beta.3
brenelz Mar 17, 2026
91720b4
Update to latest solid meta
brenelz Mar 18, 2026
b7a253d
Update router deps
brenelz Mar 19, 2026
4c7cfc9
Merge branch 'main' into upgrade-to-solid-2-beta
brenelz Mar 19, 2026
b6c3480
Fix tests
brenelz Mar 19, 2026
a4e888d
feat(2.0): terracotta@next (#2118)
lxsmnsyc Mar 21, 2026
0083bba
Merge branch 'main' into upgrade-to-solid-2-beta
brenelz Mar 21, 2026
d2867e7
upgrade to beta.4
brenelz Mar 21, 2026
480f830
Update to solid 2.0.0-beta.6
brenelz Apr 10, 2026
1da1504
chore: upgrade to solidjs beta 7
brenelz Apr 18, 2026
6a5107a
update to solidjs beta.15
brenelz Jul 3, 2026
d44294b
fix remaining beta.15 breakages: raw-value callbacks, terracotta patch
brenelz Jul 7, 2026
8c8371d
Merge remote-tracking branch 'origin/main' into upgrade-to-solid-2-beta
brenelz Jul 7, 2026
6f7587d
fix beta.15 runtime breakages surfaced after the merge
brenelz Jul 7, 2026
0208243
fix server-function-query-toplevel test route for beta.15 SSR semantics
brenelz Jul 7, 2026
ada98e1
upgrade terracotta to 2.0.0-next.6, drop the createDynamic patch
brenelz Jul 7, 2026
d53dbba
restore lazy component asset injection from main for beta.15
brenelz Jul 8, 2026
be0c681
restore JSX renderAsset, fix beta.15 crash with NoHydration wrapper
brenelz Jul 8, 2026
c597710
update to solidjs beta.16
brenelz Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion apps/fixtures/bare/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/bare/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"jsxImportSource": "@solidjs/web",
"allowJs": true,
"strict": true,
"noEmit": true,
Expand Down
7 changes: 4 additions & 3 deletions apps/fixtures/basic/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
6 changes: 3 additions & 3 deletions apps/fixtures/basic/src/app.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<Router
root={props => (
root={(props) => (
<MetaProvider>
<Title>SolidStart - Basic</Title>
<a href="/">Index</a>
<a href="/about">About</a>
<Suspense>{props.children}</Suspense>
<Loading>{props.children}</Loading>
</MetaProvider>
)}
>
Expand Down
2 changes: 0 additions & 2 deletions apps/fixtures/basic/src/routes/[...404].tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { Title } from "@solidjs/meta";
import { HttpStatusCode } from "@solidjs/start";

export default function NotFound() {
return (
<main>
<Title>Not Found</Title>
<HttpStatusCode code={404} />
<h1>Page Not Found</h1>
<p>
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/basic/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"jsxImportSource": "@solidjs/web",
"allowJs": true,
"strict": true,
"noEmit": true,
Expand Down
3 changes: 3 additions & 0 deletions apps/fixtures/basic/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
}
});
7 changes: 4 additions & 3 deletions apps/fixtures/css/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions apps/fixtures/css/src/app.tsx
Original file line number Diff line number Diff line change
@@ -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() {
Expand All @@ -17,7 +17,7 @@ export default function App() {
<a href="/unstyled">Unstyled</a>
</header>

<Suspense>{props.children}</Suspense>
<Loading>{props.children}</Loading>
</div>
</MetaProvider>
)}
Expand Down
8 changes: 5 additions & 3 deletions apps/fixtures/css/src/components/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
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) => (
<div class="text-base text-white bg-gray-700 rounded-lg px-2 font-medium">{props.children}</div>
);

const Layout = (props: FlowProps<{ title: string }>) => {
const [mounted, setMounted] = createSignal(false);
onMount(() => setMounted(true));
onSettled(() => {
setMounted(true);
});

return (
<div class="flex gap-2 flex-col">
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/css/src/components/test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { JSX } from "solid-js";
import { JSX } from "@solidjs/web";

const clsx = (...args: (string | false | undefined)[]) => args.filter(Boolean).join(" ");

Expand Down
12 changes: 7 additions & 5 deletions apps/fixtures/css/src/routes/index.tsx
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -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.
Expand All @@ -27,7 +29,7 @@ const getData = query(async () => {
}, "data");

export default function Home() {
const data = createAsync(() => getData(), { deferStream: true });
const data = createMemo(() => getData());

return (
<main>
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/css/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"jsxImportSource": "@solidjs/web",
"allowJs": true,
"strict": true,
"noEmit": true,
Expand Down
7 changes: 4 additions & 3 deletions apps/fixtures/experiments/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions apps/fixtures/experiments/src/app.tsx
Original file line number Diff line number Diff line change
@@ -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";

Expand All @@ -14,7 +14,7 @@ export default function App() {
<Title>SolidStart - Bare</Title>
<a href="/">Index</a>
<a href="/about">About</a>
<Suspense>{props.children}</Suspense>
<Loading>{props.children}</Loading>
</Provider>
</MetaProvider>
)}
Expand Down
4 changes: 2 additions & 2 deletions apps/fixtures/experiments/src/components/Provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import counterContext from "./counterContext";

export default function Provider(props) {
return (
<counterContext.Provider value={createSignal(props.initialCount)}>
<counterContext value={createSignal(props.initialCount)}>
{props.children}
</counterContext.Provider>
</counterContext>
);
}
2 changes: 1 addition & 1 deletion apps/fixtures/experiments/src/routes/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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"));

Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/experiments/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"jsxImportSource": "@solidjs/web",
"allowJs": true,
"strict": true,
"noEmit": true,
Expand Down
5 changes: 3 additions & 2 deletions apps/fixtures/hackernews/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
6 changes: 3 additions & 3 deletions apps/fixtures/hackernews/src/app.tsx
Original file line number Diff line number Diff line change
@@ -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";

Expand All @@ -10,9 +10,9 @@ export default function App() {
root={props => (
<>
<Nav />
<Suspense fallback={<div class="news-list-nav">Loading...</div>}>
<Loading fallback={<div class="news-list-nav">Loading...</div>}>
{props.children}
</Suspense>
</Loading>
</>
)}
>
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/hackernews/src/components/story.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const Story: Component<{ story: StoryDefinition }> = props => {
<span class="title">
<Show
when={props.story.url}
fallback={<A href={`/item/${props.story.id}`}>{props.story.title}</A>}
fallback={<A href={`/stories/${props.story.id}`}>{props.story.title}</A>}
>
<a href={props.story.url} target="_blank" rel="noreferrer">
{props.story.title}
Expand Down
2 changes: 1 addition & 1 deletion apps/fixtures/hackernews/src/components/toggle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default function Toggle(props: { children: any }) {

return (
<>
<div class="toggle" classList={{ open: open() }}>
<div class={["toggle", { open: open() }]}>
<a onClick={() => setOpen(o => !o)}>{open() ? "[-]" : "[+] comments collapsed"}</a>
</div>
<ul class="comment-children" style={{ display: open() ? "block" : "none" }}>
Expand Down
4 changes: 4 additions & 0 deletions apps/fixtures/hackernews/src/lib/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ const mapStories = {
export const getStories = query(
async (type: StoryTypes, page: number): Promise<StoryDefinition[]> => {
"use server";
const storyType = mapStories[type];
if (!storyType) {
return [];
}
return fetchAPI(`${mapStories[type]}?page=${page}`);
},
"stories",
Expand Down
20 changes: 8 additions & 12 deletions apps/fixtures/hackernews/src/routes/[...stories].tsx
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -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 (
<div class="news-view">
Expand All @@ -26,9 +26,9 @@ export default function Stories(props: RouteSectionProps) {
</span>
}
>
<a class="page-link" href={`/${type()}?page=${page() - 1}`} aria-label="Previous Page">
<A class="page-link" href={`/${type()}?page=${page() - 1}`} aria-label="Previous Page">
{"<"} prev
</a>
</A>
</Show>
<span>page {page()}</span>
<Show
Expand All @@ -39,17 +39,13 @@ export default function Stories(props: RouteSectionProps) {
</span>
}
>
<a class="page-link" href={`/${type()}?page=${page() + 1}`} aria-label="Next Page">
<A class="page-link" href={`/${type()}?page=${page() + 1}`} aria-label="Next Page">
more {">"}
</a>
</A>
</Show>
</div>
<main class="news-list">
<Show when={stories()}>
<ul>
<For each={stories()}>{story => <Story story={story} />}</For>
</ul>
</Show>
<For each={stories()}>{story => <Story story={story} />}</For>
</main>
</div>
);
Expand Down
Loading
Loading