Android 17 adds platform support for Encrypted Client Hello (ECH), a TLS 1.3 extension that hides the server name during the initial handshake instead of sending it in plain text. For apps targeting API level 37 and up, ECH is used opportunistically: if the app’s networking library and the remote server both support it, the handshake negotiates ECH; if either side doesn’t, the connection falls back to a standard TLS handshake automatically. That fallback is the part worth instrumenting, because it happens silently by design, and a silent fallback path is exactly the kind of thing that degrades over months without anyone noticing.
The risk isn’t ECH itself — it’s a networking layer that can now take two different paths to the same endpoint, with different latency characteristics and different failure modes, while reporting success either way. A CDN migration, a certificate change, or a middlebox that doesn’t understand ECH can push a growing share of connections onto the fallback path, adding handshake round-trips and increasing timeout risk on poor networks, without a single error ever surfacing in a crash report. Teams that don’t track negotiation outcome as its own signal will only find out when p95 connection latency drifts and nobody can explain why.
Data Points to Track
- ECH negotiation outcome per connection —
negotiated,fallback, ornot_attempted— captured from the TLS layer rather than inferred from timing - TLS handshake duration, split by negotiation outcome, so a latency regression can be attributed to the fallback path specifically rather than blamed on “the network”
- Fallback reason, where the networking stack exposes one (client library lacks ECH support vs. server doesn’t advertise an ECH config), to distinguish a client-side rollout gap from a server-side regression
- Endpoint or CDN edge identifier, so a fallback spike can be traced to one region or one backend rather than treated as an app-wide problem
- App version and networking library version, since ECH support depends on both the OS and whichever HTTP client (OkHttp, Cronet, platform default) the app actually uses
Setup Steps
- Confirm which networking library your app uses for its critical paths — analytics SDK calls, auth, payment endpoints — and check whether that specific library version has ECH support, since Android 17 exposing the platform capability doesn’t mean every HTTP client uses it yet.
- Instrument negotiation outcome at the connection layer, not the request layer, so retries and connection pooling don’t obscure how often ECH is actually being used versus silently skipped.
- Ship the instrumentation before enabling ECH server-side on any of your own backend or CDN endpoints, so you have a clean before/after baseline for handshake duration rather than trying to reconstruct it after the fact.
- Set an alert on fallback rate crossing a threshold for a given endpoint or app version, treating a sudden jump the same way you’d treat a spike in 5xx errors, since it’s a comparable early signal of infrastructure drift.
- Test explicitly on networks with corporate or carrier-level middleboxes, where SNI inspection is common — these are the environments most likely to break ECH negotiation in ways that don’t show up in normal QA on office wifi.
Actionable Insights
A rising fallback rate on a specific CDN edge or backend region, isolated from an otherwise stable overall rate, points to a server-side ECH configuration problem worth escalating to infrastructure rather than treating as a client bug. A fallback rate that climbs in step with a new app version rollout suggests the update shipped with an older or misconfigured networking library, which is a fast, targeted fix once it’s visible in the data. And once negotiation outcome is a tracked dimension, connection latency percentiles finally mean something specific — you can say whether a slowdown is the cost of the fallback path or a regression on the ECH path itself, instead of one blended number that hides both.
Related Resources
Need help tracking this in your app?
Our team sets up analytics pipelines for mobile and web teams every day. Talk to us and get your first events flowing in under an hour.
Talk to an expert