Nextjs tRPC POST Requests Hang with Cloudflare DNS Proxy Enabled
duantranhuy
PROOP

a year ago

ProjectID: 7d98cee2-4752-43e0-9546-7593b2de0068

Environment Details

  • Project Type: Next.js application with tRPC

  • tRPC Version: v11

  • Cloudflare Configuration: Full protection with DNS proxy enabled

Problem Description

When using Cloudflare with DNS proxy enabled (orange cloud), tRPC mutation requests (POST) hang indefinitely, while query requests (GET) continue to work successfully. It is fine with local and my vps server but fail in railway.

Technical Details

  • Working: All tRPC query operations that use GET requests

  • Not Working: All tRPC mutation operations that use POST requests (create, update, delete)

  • Behavior: Requests hang without timing out or returning errors

Code Configuration

Our tRPC client is configured with standard HTTP batch links:

httpBatchLink({
  transformer: SuperJSON,
  url: getBaseUrl() + "/api/trpc",
  headers: () => {
    const headers = new Headers();
    headers.set("x-trpc-source", "nextjs-react");
    return headers;
  },
})

Our API route handler uses the standard fetch handler:

const handler = (req: NextRequest) =>
  fetchRequestHandler({
    endpoint: "/api/trpc",
    req,
    router: appRouter,
    createContext: () => createContext(req),
    onError: // error handling
  });

export { handler as GET, handler as POST };
Solved

21 Replies

a year ago

Hello,

What happens when you call the Railway service domain directly?


duantranhuy
PROOP

a year ago

Hi


a year ago

Pressed enter too soon 😅


duantranhuy
PROOP

a year ago

it is the same error.


a year ago

Do the tRPC requests done with POST expect HTTP/2?


duantranhuy
PROOP

a year ago

No it doesn't


a year ago

Well there goes that theory of Railway's HTTP/1.1 only nature being an issue


a year ago

For the current deployment there are two 499 status code, and two stream errors in your deploy logs, perhaps those will give you a clue as to the issue?


a year ago

And I just noticed this is Bun, as the saying goes, if I had a dollar for every time bun was at fault for a networking issue


duantranhuy
PROOP

a year ago

yes 499 and two stream errors is issue


duantranhuy
PROOP

a year ago

let me change to use yarn is it ok?


duantranhuy
PROOP

a year ago

but this container setup work on my vps ^^


a year ago

I'm assuming you are using bun as a runtime here, not just the package manager?


duantranhuy
PROOP

a year ago

let me change to yarn and use node


a year ago

Bun might not like being behind a Proxy, might not like being in a container environment, Bun's slim image may have problems, it really could be any manner of things


a year ago

Sounds good, please keep me updated!


duantranhuy
PROOP

a year ago

Thank you. It was bun issue.


duantranhuy
PROOP

a year ago

I hope I knew this sooner.


duantranhuy
PROOP

a year ago

Can I use static IP for domain from cloudflare


a year ago

No unfortunately, we don't support static inbound IPs yet


a year ago

!s


Status changed to Solved brody 12 months ago


Loading...