Weekly platform, competitor and sector sweep for the Countly SDK fleet. Window 19 – 26 August 2026.
The week itself was quiet. The loudest thing on the calendar — Google Play's API 36 deadline on 31 August — turns out not to touch us: the Android SDK already compiles and targets API 37 and deliberately declares aarMetadata { minCompileSdk 34 }, so no integrator is forced onto a toolchain bump and no bridge can hold a customer below 36.
The genuinely useful findings came from re-verifying two carried watchlist items and finding both were false alarms. What is new and worth attention: OpenTelemetry semconv v1.44.0 shipped a breaking rework of browser.web_vital, landing squarely on our OTel initiative's floating ^1.43.0 range — and Mixpanel open-sourced its iOS/Android session-replay SDKs and reached React Native parity. Session replay is now present in every primary competitor and absent from all thirteen of ours.
lintOptions, compileSdkVersion and minSdkVersion, plus pinned AGP classpaths — 3.2.1 in the Flutter bridge and 7.0.1 in React Native. AGP 9 keeps these working but warns; AGP 10.0 removes the android.newDsl=false escape hatch. Latest AGP is 9.3.0 (July 2026), so the clock is real but has not expired.
countly-sdk-flutter-bridge · countly-sdk-react-native-bridge
lint / compileSdk / minSdk; drop the pinned buildscript classpath and inherit the host's AGP, per current Flutter and RN plugin convention. Not PR'd — needs a real host-app build to verify, and the Flutter bridge's build file currently carries in-flight OTel work.
browser.web_vitalv1.44.0 (4 August) moved name / value / delta / id out of the event body into browser.web_vital.* attributes. countly-sdk-js pins @opentelemetry/semantic-conventions as ^1.43.0, so the caret range auto-resolves straight into it.
countly-sdk-js (otel-telemetry-phase1)
The most valuable output of the run. Each of these was on the watchlist as a live threat and is now verified as not one.
countly-sdk-android/sdk/build.gradle is compileSdk 37 / targetSdk 37 with an explicit aarMetadata { minCompileSdk 34 }. A library's own targetSdk does not participate in the app-module manifest merge, so the bridges' targetSdkVersion 35 fallbacks cannot hold a customer below 36. Nothing to do — though it is worth a support-side reminder to customers.
Neither bridge applies org.jetbrains.kotlin.android — both are plain Java. AGP 9's built-in Kotlin conflict cannot reach a host app through us.
MessageQueueAndroid 17 gives apps targeting SDK 37+ a lock-free MessageQueue that breaks clients reflecting on its private members. A grep across the Android SDK finds reflection only in messaging/UtilsMessaging.java, probing Firebase classes. No MessageQueue reflection anywhere.
ACCESS_LOCAL_NETWORK runtime permission, large-screen orientation opt-out removed, generational GC in ART, 3-hour OTP SMS delay. Our manifest requests no permissions of its own.UIScene item stays on the watchlist, undated.private.icloud.com for newly issued relay addresses. Existing addresses keep forwarding. No SDK surface for us.ios/countly_flutter.podspec — no plugin Package.swift. Already in flight: the repo has a swiftpm-support-ios branch, so this is owned, not a gap.material_ui / cupertino_ui 1.0 as standalone packages. The in-SDK Material and Cupertino libraries are formally deprecated in November 2026. Our bridge ships no widgets, so exposure is limited to the example/ app.s.ios.deployment_target = '10.0'. Stale by any measure — but raising a minimum platform version is a breaking change and a human call. Flagged, not PR'd.EventEmitter.cpp, a Modal parentNode bug that severed capture/bubble propagation to ancestors, a getInitialURL re-entrancy crash during onHostResume, and deterministic CocoaPods SPEC CHECKSUMS.codegenConfig and android/src/newarch, so the New Architecture path exists.latest is 25.4.1, and the bridge wraps ly.count.android:sdk:25.4.4 against an Android SDK now at 26.1.5. Release hygiene, not a platform finding.Intl.Locale info API changes. Chrome does not block third-party cookies by default in 2026; it shows a user "Privacy Choice" prompt instead. Nothing in the window changes sendBeacon, storage partitioning or the Storage Access API for us.countly-sdk-nodejs still declares no engines field and sits at 24.10.3 while every other SDK is on a 25.x or 26.x line. Unchanged from last week.countly-sdk-windows targets net35-full / net45 / netstandard2.0 — none affected, and netstandard2.0 remains consumable from .NET 10. The slow risk is ecosystem drift off netstandard2.0.countly-sdk-unity is still pinned to editor 2020.3.20f1 at version 24.8.2. Unity's AGP bump lands on Unity's own template rather than our files, but the editor pin means we cannot verify against 6.3 at all.countly-sdk-java remains the oldest version in the fleet (24.1.6, Java 8 source/target) and countly-sdk-cpp still declares cmake_minimum_required(VERSION 3.0), which modern CMake refuses outright. Standing debt, not new findings.session.?replay across all thirteen repos returns zero hits. It is present in PostHog, Amplitude, Mixpanel, Sentry and Datadog RUM. It has crossed from differentiator to table stakes.browser.web_vital. Spec v1.60.0 landed 7 August. opentelemetry-swift 2.5.2 shipped 21 August, in window; opentelemetry-android is at 1.6.0 (28 July).otel-telemetry-phase1 should pin semconv rather than float, and Phase 1's public shape should not bake in pre-1.44 event-body layouts.| When | What happens | Affected |
|---|---|---|
| 2026-08-31 | Play API 36 deadline. We are clear; customers are not — support-side reminder. | none |
| 2026-11-01 | Play extension deadline, if any customer requested one. | none |
| 2026-11-10 | .NET 8 and .NET 9 end of support. Our TFMs unaffected; watch ecosystem drift off netstandard2.0. | windows |
| 2026-11 | Flutter's in-SDK Material/Cupertino libraries formally deprecated. | flutter-bridge |
| 2026-10 | Node 26 becomes Active LTS. Good moment to finally declare engines. | nodejs |
| undated | AGP 10.0 removes the legacy Gradle DSL and the newDsl opt-out. Both bridges must be modernised first. | flutter-bridge, react-native-bridge |
| undated | iOS 27 SDK submission floor and UIScene enforcement. Flutter prepping for Xcode 27 is the leading indicator; no Apple announcement yet. | ios |
| undated | Unity 6.8 replaces the scripting runtime with CoreCLR. | unity |
| undated | Session replay is table stakes across every primary competitor and absent from all thirteen of ours. | all |
@opentelemetry/semantic-conventions in countly-sdk-js to an exact version, and review Phase 1's attribute shapes against semconv v1.44.engines in countly-sdk-nodejs — >=22 is the defensible floor given v20 EOL'd in April. Trivial to write, but it is a supported-range statement, so a human picks the number.developer.chrome.com/release-notes and developer.android.com/about/versions/latest/behavior-changes-all would not render for automated fetch — an empty shell and an HTTP 404 respectively. Chrome 143 and Android 17 details rest on secondary coverage plus the Chrome 143 beta post. Treat as indicative, not primary.gh api and the npm registry; Flutter 3.44/3.47 breaking-change contents still rest on the unreliable fetch plus secondary coverage.