This GH discussion has a few mentions of the problem as well https://github.com/remix-run/remix/discussions/1522#discussioncomment-5982445
In particular, issue is that the instrumentation has to run before Vercel's server-index.mjs imports the remix build:
1import {2 createRequestHandler as createRemixRequestHandler,3 createReadableStreamFromReadable,4 writeReadableStreamToWritable,5 installGlobals,6} from '@remix-run/node';7import * as build from './index.js';89installGlobals({10 nativeFetch:11 (parseInt(process.versions.node, 10) >= 20 &&12 process.env.VERCEL_REMIX_NATIVE_FETCH === '1') ||13 build.future.unstable_singleFetch,14});1516const handleRequest = createRemixRequestHandler(17 build.default || build,18 process.env.NODE_ENV19);2021function toWebHeaders(nodeHeaders) {22 const headers = new Headers();2324 for (const key in nodeHeaders) {25 const header = nodeHeaders[key];26 // set-cookie is an array (maybe others)27 if (Array.isArray(header)) {28 for (const value of header) {29 headers.append(key, value);30 }31 } else {32 headers.append(key, header);33 }34 }3536 return headers;37}3839function toNodeHeaders(webHeaders) {40 return webHeaders.raw?.() || [...webHeaders].flat();41}4243function createRemixRequest(req, res) {44 const host = req.headers['x-forwarded-host'] || req.headers.host;45 const protocol = req.headers['x-forwarded-proto'] || 'https';46 const url = new URL(req.url, `${protocol}://${host}`);4748 // Abort action/loaders once we can no longer write a response49 const controller = new AbortController();50 res.on('close', () => controller.abort());5152 const init = {53 method: req.method,54 headers: toWebHeaders(req.headers),55 signal: controller.signal,56 };5758 if (req.method !== 'GET' && req.method !== 'HEAD') {59 init.body = createReadableStreamFromReadable(req);60 init.duplex = 'half';61 }6263 return new Request(url.href, init);64}6566async function sendRemixResponse(res, nodeResponse) {67 res.statusMessage = nodeResponse.statusText;68 res.writeHead(69 nodeResponse.status,70 nodeResponse.statusText,71 toNodeHeaders(nodeResponse.headers)72 );7374 if (nodeResponse.body) {75 await writeReadableStreamToWritable(nodeResponse.body, res);76 } else {77 res.end();78 }79}8081export default async (req, res) => {82 const request = createRemixRequest(req, res);83 const response = await handleRequest(request);84 await sendRemixResponse(res, response);85};