Nextjs tRPC POST Requests Hang with Cloudflare DNS Proxy Enabled

duantranhuy
PRO

5 months 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

0 Replies

5 months ago

Hello,

What happens when you call the Railway service domain directly?


duantranhuy
PRO

5 months ago

Hi


5 months ago

Pressed enter too soon 😅


duantranhuy
PRO

5 months ago

it is the same error.


5 months ago

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


duantranhuy
PRO

5 months ago

No it doesn't


5 months ago

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


5 months 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?


5 months 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
PRO

5 months ago

yes 499 and two stream errors is issue


duantranhuy
PRO

5 months ago

let me change to use yarn is it ok?


duantranhuy
PRO

5 months ago

but this container setup work on my vps ^^


5 months ago

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


duantranhuy
PRO

5 months ago

let me change to yarn and use node


5 months 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


5 months ago

Sounds good, please keep me updated!


duantranhuy
PRO

5 months ago

Thank you. It was bun issue.


duantranhuy
PRO

5 months ago

I hope I knew this sooner.


duantranhuy
PRO

5 months ago

Can I use static IP for domain from cloudflare


5 months ago

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


5 months ago

!s


Status changed to Solved brody 5 months ago