Skip to content

3.14.0.3

Choose a tag to compare

@github-actions github-actions released this 24 Jul 10:55
3cd7057

What's changed

Binding-only release. The native SDK is unchanged — still
dd-sdk-ios 3.14.0 — and so are the
package ids, namespaces and API. The fourth component advances for the changes below, which came
out of a full ergonomics review of the four DatadogNet repositories.

IntelliSense on the generated tier

The main entry types now carry doc summaries — 26 of them, written in the ApiDefinitions.cs
files and carried by the binding generator into the packages' XML docs (measured before relying
on it, not assumed): DDDatadog, DDConfiguration, DDSite, DDTrackingConsent,
DDURLSessionInstrumentation, every module's Enable/configuration types, DDRUMMonitor, the
UIKit tracking predicates, DDLogger, DDLogs, DDLogEvent, DDTracer, the three header
writers, DDSessionReplay and its privacy overrides, DDWebViewTracking and DDCrashReporter.
The long tail of generated members — the 377 RUM model types, mostly — stays bare; the C# names
map 1:1 onto the Objective-C ones, so upstream's reference covers them.

The DDLogger null-attributes papercut: resolved by documentation, deliberately

3.14.0.2's notes flagged that Info(message, attributes) throws on a null dictionary, and
suggested a missing [NullAllowed]. Investigated properly: upstream declares those parameters
_Nonnull, and the Swift implementation takes a non-optional [String: Any] — so a
[NullAllowed] "fix" would have traded today's managed ArgumentNullException for a native
crash in the bridging thunk. The binding stays faithful. The rationale now lives as a comment on
the interface in ApiDefinitions.cs (so a future regeneration does not "fix" it wrongly) and in
the README's troubleshooting section; the Additions layer's
Log(level, message, exception?, attributes?) remains the null-tolerant path.

Trim and AOT analyzers, permanently on

The whole surface — generated tier and Additions — analyses clean, so an unsafe reflection
pattern introduced later surfaces at build time. IsTrimmable is deliberately not set: it
would opt the assemblies into consumer-side trimming the device tests do not exercise;
src/Datadog.Binding.props records the reasoning.

Release pipeline

  • nuget.org now shows these notes. docs/release-notes/<version>.md is packed into
    PackageReleaseNotes, with the GitHub releases page as fallback for versions without a
    curated file.
  • README versions can no longer go stale silently — the install snippets sat at 3.14.0.1
    while 3.14.0.2 shipped. build/CheckReadmeVersions.sh runs in CI and fails when the README's
    pins disagree with Directory.Build.props.
  • The upgrade path while Objective Sharpie is broken is now a tool, not archaeology.
    ./build/DiffSwiftHeaders.sh <version> writes one diff per framework whose generated
    -Swift.h changed — the porting work list — and prints the archive's SHA-256 for
    build/checksums.txt from the same bytes. docs/regenerating-bindings.md explains how to
    read a diff, including why a _Nonnull in the header must not become [NullAllowed].

Sample

The sample now exercises the whole usable surface: DatadogNet.WebViewTracking.iOS joins its
references with a tracked WKWebView page, a button makes an instrumented NSUrlSession request
through the generic Enable<TDelegate>() — the one automatic-instrumentation path nothing
demonstrated — and a per-view Session Replay privacy override shows the granular control the
global levels cannot give.

net8 sunset

Stated policy, so the trade-off does not persist by inertia: the net8.0-ios18.0 head — past
its platform support window since MAUI 8 left support on 14 May 2025, though still verified by
the simulator checks — is dropped in the first release after .NET 8 itself leaves support on
10 November 2026.

Upgrading from 3.14.0.2

Nothing to change: same native SDK, same API. The new doc summaries appear on restore.

Full changelog: v3.14.0.2...v3.14.0.3

Packages

Bound against dd-sdk-ios 3.14.0, targeting net8.0-ios18.0, net9.0-ios18.0 and net10.0-ios26.0.

The first three components of 3.14.0.3 are the dd-sdk-ios version; the fourth is this
repository's binding revision, which advances when the bindings or packaging change while
the native binaries stay put.

Package Wraps NuGet
DatadogNet.Core.iOS DatadogCore 3.14.0.3
DatadogNet.RUM.iOS DatadogRUM 3.14.0.3
DatadogNet.Logs.iOS DatadogLogs 3.14.0.3
DatadogNet.Trace.iOS DatadogTrace 3.14.0.3
DatadogNet.SessionReplay.iOS DatadogSessionReplay 3.14.0.3
DatadogNet.WebViewTracking.iOS DatadogWebViewTracking 3.14.0.3
DatadogNet.CrashReporting.iOS DatadogCrashReporting 3.14.0.3
DatadogNet.Flags.iOS DatadogFlags 3.14.0.3
DatadogNet.Profiling.iOS DatadogProfiling 3.14.0.3
DatadogNet.Internal.iOS DatadogInternal 3.14.0.3
DatadogNet.OpenTelemetryApi.iOS OpenTelemetryApi 3.14.0.3
DatadogNet.Objc.iOS (compatibility meta-package) 3.14.0.3
dotnet add package DatadogNet.Core.iOS --version 3.14.0.3
dotnet add package DatadogNet.RUM.iOS --version 3.14.0.3

Licensing

The binding code is MIT; the bundled native binaries are Apache-2.0, as built and
published by Datadog. Each package ships both texts under licenses/.