Blog
All articlesWhy a Website Won't Open on iPhone but Works on Android: A Real-World Breakdown of CDN and TLS 1.3
The site works, the server is fine, the logs are clean, but half the clients on iPhone either can't load it or see a non-working image. We break down a real-world case: what CDN, TLS 1.3, and RKN whitelists have to do with it.
The Story of a "Strange" Breakdown
The site works. The server is fine. The logs are clean. But half the clients — especially on iPhone — either can't load it or see a non-working image. Some users have no issues at all, on both phone and desktop. Others don't.
Sound familiar? Today we'll break down a real case from Webzella's practice: why this happens and what CDN and TLS 1.3 have to do with it.
What Happened
We built a website for a small clinic. The stack was modern: FastAPI on the backend, React on the frontend, static assets and media served via S3 CDN. Everything worked — until one day complaints started: "The site won't open on my iPhone," "Buttons don't work," "It loads as an image but doesn't work."
Meanwhile, on Android and desktop everything was fine. Some iPhone users had no issues either. A classic "floating" problem that's hard to catch.
We checked caching and error logs — nothing. The server responded correctly. The code was fine. So we dug deeper.
What Is a CDN and Why It Became a Problem
A CDN (Content Delivery Network) is a network of geographically distributed servers that cache copies of your website's content and serve them to users from the closest point.
Why it matters: so a user in Vladivostok doesn't wait for an image from a server in Moscow but gets it from a local CDN node. This reduces load on the main server and speeds up loading.
Types of CDNs:
- Big Data Center CDNs. A few powerful data centers at key locations. Good for general acceleration, but servers may still be far from the user.
- Highly Distributed CDNs. Servers (points of presence) are as close to users as possible, often inside ISP networks. This gives minimal latency but is more expensive to maintain.
Why this became a problem in Russia. Many CDNs use shared IP addresses for hundreds of clients. If those addresses aren't on RKN's whitelists or fall under filtering, the site may stop opening for some users — even if the site itself is technically sound.
In our case, that's exactly what happened: the CDN provider used addresses that weren't on the whitelists. The site worked correctly, but traffic couldn't reach it.
What Is TLS 1.3 and Why It "Breaks" iPhone
TLS (Transport Layer Security) is an encryption protocol. The very "lock" in the browser (HTTPS) that protects data transmission — passwords, cards, messages — from prying eyes.
How TLS 1.3 differs from 1.2:
- Speed. TLS 1.3 establishes a connection faster — in one round trip instead of two.
- Security. 1.3 removed old and vulnerable encryption algorithms and encrypted more service information about the connection itself.
Why it doesn't work on iPhone. In newer iOS versions (15–16+), Apple uses post-quantum key exchange (hybrid) in TLS 1.3. As a result, the very first message (ClientHello) when establishing a connection becomes "unusually large."
Intermediate equipment (TSPU / DPI) on the mobile operator's side sees this non-standard packet, can't parse it correctly, and simply drops the connection.
The result: a certificate (even the Ministry of Digital Development one) doesn't help here, because the connection is dropped before the browser and server can check anything. That's why on Android or PC (with different algorithms) everything worked, but on iPhone it didn't.
What to Do: Takeaways
Don't panic. If a site works for some and not for others on iPhone, it's almost certainly an infrastructure-level block (TSPU/DPI), not a bug in your code.
What you can do:
- If you use a CDN, ask support to force TLS 1.2 for your resource. TLS 1.2 is an older, stable protocol that filters pass without issues.
- If it's your own server (Nginx), you can temporarily disable TLS 1.3 support in the configuration, leaving only 1.2, to "wait out" the instability.
- For future projects: if you need predictable availability in Russia, use a CDN with dedicated IP capability in Russia or host static assets on your own server with a Russian IP that can be whitelisted.
Instead of a Conclusion
This story is a good example of how a modern website is not just code. It's infrastructure: CDNs, servers, encryption protocols. And sometimes a problem that looks like a "bug in the code" is actually at the network level.
If you've faced a similar situation and don't understand why your site behaves strangely — write to us at Webzella. We'll figure it out, find the cause, and propose a solution. No "transformation" for the sake of the word.
Build an estimate or message us — we'll discuss the task.
Webzella services
Read also
FAQ: Everything About Development at Webzella — Timelines, Pricing, Tech, and Getting StartedWe've gathered answers to the key questions clients ask before starting. How the first contact works, what makes up the price, why we choose React + FastAPI, and what to do if you only have an idea so far.
Tilda, WordPress, or React+FastAPI: Where Your Website's Security Actually LivesA turnkey website in a weekend sounds tempting. But once it starts taking payments and storing customer data, "fast and cheap" turns into hidden risks. We break down why security is an architecture, not a plugin, and compare Tilda, WordPress, vibe coders, and custom React+FastAPI.Business Automation Without a Corporate Budget: Where to Start So You Don't Regret It"Digital transformation" sounds like something out of a McKinsey report. In reality, for a business with 10–50 employees, it means one thing: stop doing manually what a system can do. We break down which processes to automate first, how much it costs, and when custom React + FastAPI beats an off-the-shelf solution.