Loading workspace insights... Statistics interval
7 days30 daysLatest CI Pipeline Executions
25fbf126 fix(remix): unblock remix-router scaffold + add islands example
The remix-router scaffold commit (5a13aec729) salvaged WIP from
clever-ellis-6fe30d but accidentally truncated several files and left
references to functionality that lives on other branches. None of it
built end-to-end.
This restores or removes the broken pieces, fixes the example, and
adds a parallel pure-Remix-3 islands example for reference.
Adjacent-package fixes (build-blockers from the original scaffold):
- router-generator/src/config.ts: restored from main, re-added 'remix'
target to the schema enum
- start-plugin-core/src/vite/dev-server-plugin/plugin.ts: restored
from main (was truncated mid-function)
- start-plugin-core/src/import-protection/defaults.ts: removed
(orphaned, referenced missing ./utils, nothing imports it)
- start-server-core/src/index.tsx: removed early-hints type
re-exports (file lives on a different branch, not used here)
- remix-router/src/headContentUtils.ts: removed isInlinableStylesheet
reference (also lives on a different branch)
- remix-start/src/plugin/vite.ts: imports moved to match solid-start
shape; the ./vite subpath isn't an exported entry of
start-plugin-core
- remix-start/src/server/index.ts: removed createStartApp export
(never existed in createStartHandler.ts)
Binding fix:
- remix-router/src/awaited.tsx: gate handle.update() in onSettle to
client-only via isServer. The SSR scheduler doesn't implement
scheduleUpdate, so post-stream updates were crashing the dev server
whenever a route used <Await>.
Example fixes (examples/remix/basic):
- All 16 route files: createRoute('/path')(options) was wrong shape
(createRoute takes a single options arg, not curried). Switched
call sites to createFileRoute('/path')(options) to match the
router-generator template, which is the actual file-based pattern
these routes are meant to use.
- routes/index.tsx: added (was missing; routeTree.ts referenced an
Index route that didn't exist)
- routes/streaming.tsx, routes/deferred.tsx: removed. Both are
blocked on real binding work — Frame needs resolveFrame threading
through nested SSR renders + Manuel's pending buildServerFnUrl PR
for the URL-builder side; <Await> SSR streaming chunks aren't
reaching the response body. Tracked in the README.
- routes/__root.tsx: dropped Deferred link from nav
- routes/catalog.tsx: input was value={search.q} with no event that
updated value, so typing did nothing visible. Switched to
defaultValue. Loader now uses sort in loaderDeps and actually
applies the sort to the items.
- README.md: rewrote with architecture diagram, primitive table,
accurate route list, hydration model section, and a "what's not
covered" section calling out the binding gaps.
New example (examples/remix/islands):
- Pure-Remix-3 reference using @remix-run/ui directly with no
TanStack Router. Demonstrates idiomatic island hydration: a
static-rendered page with two clientEntry()-marked components
(LinkIsland, Counter) hydrating independently. Runs on a small
Vite-middlewareMode SSR server (47-line server.js).
Documentation:
- remix-router/README.md: test count refreshed to 120 (111 passing);
three real binding gaps (Frame, Await SSR streaming,
serverComponent endpoint) added to the "Not yet" list.
- remix-router/START.md: bundle-size table updated with measured
numbers (296 kB raw / 64 kB gzip total client; ~46 kB gzip initial
entry; 556 kB server bundle) replacing the prior estimate.
What works in the basic example after this:
- 16 routes serving HTTP 200 (or intentional 500/404 for the lab
routes), SPA navigation working, server stays up across the route
set, type-check clean, all builds green. 25fbf126 fix(remix): unblock remix-router scaffold + add islands example
The remix-router scaffold commit (5a13aec729) salvaged WIP from
clever-ellis-6fe30d but accidentally truncated several files and left
references to functionality that lives on other branches. None of it
built end-to-end.
This restores or removes the broken pieces, fixes the example, and
adds a parallel pure-Remix-3 islands example for reference.
Adjacent-package fixes (build-blockers from the original scaffold):
- router-generator/src/config.ts: restored from main, re-added 'remix'
target to the schema enum
- start-plugin-core/src/vite/dev-server-plugin/plugin.ts: restored
from main (was truncated mid-function)
- start-plugin-core/src/import-protection/defaults.ts: removed
(orphaned, referenced missing ./utils, nothing imports it)
- start-server-core/src/index.tsx: removed early-hints type
re-exports (file lives on a different branch, not used here)
- remix-router/src/headContentUtils.ts: removed isInlinableStylesheet
reference (also lives on a different branch)
- remix-start/src/plugin/vite.ts: imports moved to match solid-start
shape; the ./vite subpath isn't an exported entry of
start-plugin-core
- remix-start/src/server/index.ts: removed createStartApp export
(never existed in createStartHandler.ts)
Binding fix:
- remix-router/src/awaited.tsx: gate handle.update() in onSettle to
client-only via isServer. The SSR scheduler doesn't implement
scheduleUpdate, so post-stream updates were crashing the dev server
whenever a route used <Await>.
Example fixes (examples/remix/basic):
- All 16 route files: createRoute('/path')(options) was wrong shape
(createRoute takes a single options arg, not curried). Switched
call sites to createFileRoute('/path')(options) to match the
router-generator template, which is the actual file-based pattern
these routes are meant to use.
- routes/index.tsx: added (was missing; routeTree.ts referenced an
Index route that didn't exist)
- routes/streaming.tsx, routes/deferred.tsx: removed. Both are
blocked on real binding work — Frame needs resolveFrame threading
through nested SSR renders + Manuel's pending buildServerFnUrl PR
for the URL-builder side; <Await> SSR streaming chunks aren't
reaching the response body. Tracked in the README.
- routes/__root.tsx: dropped Deferred link from nav
- routes/catalog.tsx: input was value={search.q} with no event that
updated value, so typing did nothing visible. Switched to
defaultValue. Loader now uses sort in loaderDeps and actually
applies the sort to the items.
- README.md: rewrote with architecture diagram, primitive table,
accurate route list, hydration model section, and a "what's not
covered" section calling out the binding gaps.
New example (examples/remix/islands):
- Pure-Remix-3 reference using @remix-run/ui directly with no
TanStack Router. Demonstrates idiomatic island hydration: a
static-rendered page with two clientEntry()-marked components
(LinkIsland, Counter) hydrating independently. Runs on a small
Vite-middlewareMode SSR server (47-line server.js).
Documentation:
- remix-router/README.md: test count refreshed to 120 (111 passing);
three real binding gaps (Frame, Await SSR streaming,
serverComponent endpoint) added to the "Not yet" list.
- remix-router/START.md: bundle-size table updated with measured
numbers (296 kB raw / 64 kB gzip total client; ~46 kB gzip initial
entry; 556 kB server bundle) replacing the prior estimate.
What works in the basic example after this:
- 16 routes serving HTTP 200 (or intentional 500/404 for the lab
routes), SPA navigation working, server stays up across the route
set, type-check clean, all builds green.