From f980d8f74cc3ff1eafac89738618ea217c5a5eae Mon Sep 17 00:00:00 2001 From: Sheraff Date: Wed, 11 Mar 2026 13:46:00 +0100 Subject: [PATCH 1/2] fix Match SSR error catching behavior --- packages/solid-router/src/Match.tsx | 16 ---------------- .../tests/server/errorComponent.test.tsx | 12 +++++++++--- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/packages/solid-router/src/Match.tsx b/packages/solid-router/src/Match.tsx index 9ac0e485ea3..588c771b531 100644 --- a/packages/solid-router/src/Match.tsx +++ b/packages/solid-router/src/Match.tsx @@ -375,22 +375,6 @@ export const MatchInner = (): any => { {(_) => { - if (isServer ?? router.isServer) { - const RouteErrorComponent = - (route().options.errorComponent ?? - router.options.defaultErrorComponent) || - ErrorComponent - - return ( - - ) - } - throw currentMatch().error }} diff --git a/packages/solid-router/tests/server/errorComponent.test.tsx b/packages/solid-router/tests/server/errorComponent.test.tsx index f342aaae0d9..cca860bef5c 100644 --- a/packages/solid-router/tests/server/errorComponent.test.tsx +++ b/packages/solid-router/tests/server/errorComponent.test.tsx @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest' +import { describe, expect, it, vi } from 'vitest' import { renderToStringAsync } from 'solid-js/web' import { RouterProvider, @@ -11,6 +11,7 @@ import { describe('errorComponent (server)', () => { it('renders the route error component when a loader throws during SSR', async () => { const rootRoute = createRootRoute() + const onCatch = vi.fn() const indexRoute = createRoute({ getParentRoute: () => rootRoute, @@ -19,8 +20,11 @@ describe('errorComponent (server)', () => { throw new Error('loader boom') }, component: () =>
Index route
, - errorComponent: ({ error }) => ( -
Route error: {error.message}
+ onCatch, + errorComponent: ({ error, reset }) => ( +
+ Route error: {error.message} reset:{typeof reset} +
), }) @@ -40,8 +44,10 @@ describe('errorComponent (server)', () => { )) expect(router.state.statusCode).toBe(500) + expect(onCatch).toHaveBeenCalledTimes(1) expect(html).toContain('data-testid="error-component"') expect(html).toContain('loader boom') + expect(html).toContain('reset:function') expect(html).not.toContain('Index route') }) }) From 312cc7fdfbb8b4f35f0b654db8420d1a4791cb9c Mon Sep 17 00:00:00 2001 From: Sheraff Date: Wed, 11 Mar 2026 14:26:05 +0100 Subject: [PATCH 2/2] fix(tests): normalize HTML output in errorComponent test --- packages/solid-router/tests/server/errorComponent.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/solid-router/tests/server/errorComponent.test.tsx b/packages/solid-router/tests/server/errorComponent.test.tsx index cca860bef5c..21ff5fa6cc7 100644 --- a/packages/solid-router/tests/server/errorComponent.test.tsx +++ b/packages/solid-router/tests/server/errorComponent.test.tsx @@ -42,12 +42,13 @@ describe('errorComponent (server)', () => { const html = await renderToStringAsync(() => ( )) + const normalizedHtml = html.replace(//g, '') expect(router.state.statusCode).toBe(500) expect(onCatch).toHaveBeenCalledTimes(1) expect(html).toContain('data-testid="error-component"') expect(html).toContain('loader boom') - expect(html).toContain('reset:function') + expect(normalizedHtml).toContain('reset:function') expect(html).not.toContain('Index route') }) })