- Separation of SSR vs RSC rendering environments is both unnecessary and a pain point for existing application migration to the new paradigms.
- "Client Component can't import Server Component" seems to be an artificial limitation of the mental model of separate SSR vs RSC env and the lack of built in support for inlining RSC streams into the HTML document
- Removal of "client only hooks" is also an artificial limitation brought on by trying to make SSR and RSC independent concepts. Zero reason to remove hooks that work in SSR today to support RSC.
- Inlining of RSC JSON representation should not be needed and the intermediate tree should be able to be revived from the SSR'd DOM, not an inlined RSC format.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function getIsLiked(viewerId, entityId) { | |
// hit a database or something | |
} | |
function toggleLikeStatus(viewerId, entityId) { | |
// hit a database or something | |
return !currentStatus; | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const fs = require("node:fs"); | |
const { createRequestHandler } = require("@remix-run/express"); | |
const { broadcastDevReady, installGlobals } = require("@remix-run/node"); | |
const compression = require("compression"); | |
const express = require("express"); | |
const morgan = require("morgan"); | |
const sourceMapSupport = require("source-map-support"); | |
sourceMapSupport.install(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function createDevMiddleware(pathname: string) { | |
return { | |
hmr(request: Request) { | |
return new Response( | |
new ReadableStream({ | |
start(controller) { | |
controller.enqueue( | |
`id:0\nevent: message\ndata: ${JSON.stringify({ | |
type: "connected", | |
})}\n\n` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { readFile } from 'node:fs/promises' | |
import * as path from 'node:path' | |
import { type LoadHook, type ResolveHook, type ResolveHookContext } from 'node:module' | |
import { fileURLToPath } from 'node:url' | |
import * as oxy from '@oxidation-compiler/napi' | |
import type { ModuleExport } from './module-info.js' | |
import * as clientTransforms from './transform-client.js' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as React from "react"; | |
// @ts-ignore | |
import * as ReactDOM from "#react-dom-server-implementation"; | |
// @ts-ignore | |
import * as ReactDOMClient from "#react-server-dom-client-implementation"; | |
export async function fetch( | |
request: Request, | |
{ | |
browserEntry, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const remote = () => "@app/" + "other"; | |
__webpack_chunk_load__(remote()).then(async () => { | |
const container = __webpack_require__(remote()); | |
const factory = await container.get("./federated"); | |
const mod = factory(); | |
console.log({ | |
APP_NAME, | |
REMOTE: mod.name, | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import type { Server } from "node:http"; | |
export type Handler = (request: Request) => Response | Promise<Response>; | |
export type CreateServerOptions = { | |
onError?: (error: unknown) => void; | |
}; | |
export declare function createServer( | |
handler: Handler, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as React from "react"; | |
import { useNavigate, useSubmit } from "@remix-run/react"; | |
export function useEventDelegation() { | |
const navigate = useNavigate(); | |
const submit = useSubmit(); | |
React.useEffect(() => { | |
const handleClick = (e: MouseEvent) => { | |
const target = e.target as HTMLElement; | |
if ( |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
setInterval(() => { | |
const tweets = document.querySelectorAll( | |
`[data-testid="cellInnerDiv"] [data-testid="tweet"]` | |
); | |
for (const tweet of tweets) { | |
if (tweet.querySelector(`[data-testid="icon-verified"]`)) { | |
tweet.style.display = "none"; | |
} | |
} |