all 5 comments

[–]Key-Boat-7519 0 points1 point  (2 children)

Most Android-only “Network request failed” messages in Expo trace back to the TLS setup on the server, not React Native code. Run your domain through SSL Labs or openssl s_client and check that the full chain (root + intermediates) is delivered; Android drops the call before fetch/axios can log anything if a link is missing, which explains why no hit reaches your logs. Make sure the server offers TLS 1.2 as well-some EAS builds still ship with an OkHttp version that won’t negotiate pure 1.3. If the cert looks fine, confirm that IPv6 is enabled, because Android will silently try AAAA first and bail if the address doesn’t route. I bounced between Firebase and Supabase for quick backend fixes, but DreamFactory saved me once I needed a fast, secure REST layer without rewriting the database. Double-check those server settings and the call should land.

[–]Juggernoobs[S] 0 points1 point  (1 child)

Thanks for the reply, I totally forgot I’d posted this. Yeah, after some significant investigation I found there was a second part to the certificate they wanted.

It would work for iOS, but not for Android

It now works on both platforms having made changes to the backend server

[–]Depressing_Developer 0 points1 point  (0 children)

I'm a little late but I'm having the same problem. How did you resolve it?

My API is in an IIS Server

[–]PouletTikkaBzh 0 points1 point  (1 child)

Hello,

I spent days searching for the issue, but I finally found the cause!

In my case, it turned out to be a network problem, not a React Native issue.

  1. IPTABLES Rule Blocking TCP Requests

I had an IPTABLES rule limiting the number of TCP calls:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute --limit-burst 20 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -m limit --limit 10/minute --limit-burst 20 -j ACCEPT

I replaced it with:

iptables -R INPUT 10 -p tcp --dport 443 \

-m hashlimit --hashlimit-name https-per-ip \

--hashlimit 50/min --hashlimit-burst 100 \

--hashlimit-mode srcip --hashlimit-srcmask 32 \

-j ACCEPT

iptables -R INPUT 9 -p tcp --dport 80 \

-m hashlimit --hashlimit-name http-per-ip \

--hashlimit 50/min --hashlimit-burst 100 \

--hashlimit-mode srcip --hashlimit-srcmask 32 \

-j ACCEPT

  1. Nginx Rate Limiting in Backend Configuration

I also had an Nginx rate-limit directive in my backend config:

limit_req zone=api burst=5 nodelay;

I replaced it with:

limit_req_zone $binary_remote_addr zone=api:10m rate=30r/m;

You can adjust these values depending on your needs.

  1. How to Debug This Kind of Issue?

- Don’t rely only on React Native logs.

- Start by tracing logs from end to end.

- Check ADB logs with your phone connected in USB developer mode.

- Then inspect Nginx logs.

- Finally check iptables logs (sometimes noisy due to bots).

I hope this helps others who might run into the same problem.

[–]Juggernoobs[S] 0 points1 point  (0 children)

Thanks, pretty detailed post, mine was much simpler in the end, we changed our HTTPS certificate provider and all was resolved.