You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: implement blog RSS feed handler and update routing
- Add blog RSS feed handler in server/routes/blog-rss.ts
- Wire /blog/rss.xml endpoint in server.ts for production
- Remove old blog RSS route from React Router in app/routes.ts
- Add Vitest tests for blog RSS handler and E2E tests for the RSS endpoint
- Update README to reflect new routing behavior and migration status
Copy file name to clipboardExpand all lines: app/remix/README.md
+33-8Lines changed: 33 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@ Both systems run side-by-side in the same server during migration.
7
7
## Purpose
8
8
9
9
This document is the migration playbook for:
10
+
10
11
- route wiring conventions in `server.ts`
11
12
- implementation constraints in `app/remix/`
12
13
- guardrails that keep production stable while migration is in progress
@@ -31,37 +32,47 @@ Current `app/remix/` contents:
31
32
app/remix/
32
33
|- document.tsx
33
34
|- tsconfig.json
35
+
|- blog-rss.test.ts
34
36
|- test-route.tsx
35
37
|- test-route.test.ts
36
38
`- README.md
37
39
```
38
40
39
41
Current server wiring behavior:
42
+
40
43
-`/healthcheck` is handled directly in `server.ts` (stable operational endpoint)
44
+
-`/blog/rss.xml` is handled directly in `server.ts` with a production-safe Remix handler
41
45
-`/remix-test` is wired only in development as a Remix smoke test page
42
46
- all remaining routes are handled by React Router via the catch-all
43
47
44
48
## Production constraints
45
49
46
50
- Dynamic `.tsx` route imports are currently considered development-only.
47
51
- Production use of dynamic Remix route modules depends on the precompile/asset strategy (still in progress).
48
-
- Keep `/healthcheck` on a stable server handler until that strategy is finalized.
52
+
- For production migrations today, prefer stable handlers that can be imported directly by `server.ts` (no Vite-only transforms like `import.meta.glob`).
53
+
- Keep `/healthcheck` on a stable server handler until the dynamic asset strategy is finalized.
49
54
50
55
## Dual-route strategy
51
56
52
57
When a user-facing route is migrated to Remix, keep the equivalent React Router route in `app/routes.ts` until linking pages are also migrated.
- If a route is missing from the React Router manifest, client navigation can resolve through catch-all and produce incorrect behavior.
57
63
58
64
Expected behavior during migration:
65
+
59
66
- direct URL access: fetch-router can serve Remix route
60
67
- client-side navigation from React Router pages: React Router serves its route module
61
68
- links from Remix pages using plain `<a>`: full reload, then fetch-router serves Remix route
62
69
63
70
Remove route entries from `app/routes.ts` only after inbound linking surfaces are migrated.
64
71
72
+
Exception:
73
+
74
+
- Non-navigated resource endpoints (for example RSS/robots/sitemap-style URLs) can be removed from `app/routes.ts` once they are mapped explicitly in `server.ts` for production.
75
+
65
76
## Conventions
66
77
67
78
### JSX pragma (required)
@@ -102,9 +113,7 @@ import { Document } from "../document";
0 commit comments