DatadogNet.WebViewTracking.Mac
3.14.0.2-beta.1.2
See the version list below for details.
dotnet add package DatadogNet.WebViewTracking.Mac --version 3.14.0.2-beta.1.2
NuGet\Install-Package DatadogNet.WebViewTracking.Mac -Version 3.14.0.2-beta.1.2
<PackageReference Include="DatadogNet.WebViewTracking.Mac" Version="3.14.0.2-beta.1.2" />
<PackageVersion Include="DatadogNet.WebViewTracking.Mac" Version="3.14.0.2-beta.1.2" />
<PackageReference Include="DatadogNet.WebViewTracking.Mac" />
paket add DatadogNet.WebViewTracking.Mac --version 3.14.0.2-beta.1.2
#r "nuget: DatadogNet.WebViewTracking.Mac, 3.14.0.2-beta.1.2"
#:package DatadogNet.WebViewTracking.Mac@3.14.0.2-beta.1.2
#addin nuget:?package=DatadogNet.WebViewTracking.Mac&version=3.14.0.2-beta.1.2&prerelease
#tool nuget:?package=DatadogNet.WebViewTracking.Mac&version=3.14.0.2-beta.1.2&prerelease
DatadogNet.Mac
.NET for Mac Catalyst bindings for the native Datadog iOS SDK
(dd-sdk-ios) - RUM, Logs, Trace, crash reporting and feature flags for the Mac Catalyst head of a
.NET MAUI (or plain .NET for Mac Catalyst) app.
This is the Mac Catalyst sibling of DatadogNet.iOS
and DatadogNet.Android, and slots under the
DatadogNet cross-platform façade. The API is identical
to DatadogNet.iOS - same types, same namespaces (DatadogCore, DatadogRUM, DatadogLogs, ...) -
because the binding definitions are verbatim copies of that repository's and Catalyst is the same
UIKit platform underneath. Code written against the iOS packages compiles against these unchanged;
only the package ids differ.
Support status. Datadog lists macOS (Catalyst) 12+ as partial support: the SDK compiles and its features work, but Catalyst is not a first-class tested platform upstream. Session Replay is iOS/iPadOS-only and records nothing on Catalyst (the package still ships so shared code links). Cellular/battery-derived RUM vitals are no-ops on a Mac. Test your telemetry end-to-end before relying on it.
Contents
- Packages
- Installing
- Usage
- How this repository works
- Building locally
- Upgrading the Datadog SDK
- Releasing
- Licence
Packages
Versioned <dd-sdk-ios version>.<binding revision>, exactly like DatadogNet.iOS: 3.14.0.1 wraps
dd-sdk-ios 3.14.0, and the fourth component advances when the bindings or packaging change while
the native version stays put. The iOS and Mac revisions advance independently - match on the first
three components, not all four.
| Package | Wraps | Notes |
|---|---|---|
DatadogNet.Core.Mac |
DatadogCore |
SDK initialization; start here |
DatadogNet.RUM.Mac |
DatadogRUM |
Real User Monitoring |
DatadogNet.Logs.Mac |
DatadogLogs |
Log collection |
DatadogNet.Trace.Mac |
DatadogTrace |
APM tracing |
DatadogNet.SessionReplay.Mac |
DatadogSessionReplay |
Links, but records nothing on Catalyst |
DatadogNet.WebViewTracking.Mac |
DatadogWebViewTracking |
WKWebView instrumentation |
DatadogNet.CrashReporting.Mac |
DatadogCrashReporting |
KSCrash-based crash reporting |
DatadogNet.Flags.Mac |
DatadogFlags |
Native framework only; no Objective-C API upstream yet |
DatadogNet.Profiling.Mac |
DatadogProfiling |
Native framework only; no Objective-C API upstream yet |
DatadogNet.Internal.Mac |
DatadogInternal |
Shared plumbing; arrives transitively |
DatadogNet.OpenTelemetryApi.Mac |
OpenTelemetryApi |
Trace dependency; arrives transitively |
There is no DatadogNet.Objc.Mac: that id exists on iOS only as a compatibility meta-package for
apps upgrading from the 2.x bindings, and no Mac Catalyst 2.x ever existed.
Every package targets net8.0-maccatalyst18.0, net9.0-maccatalyst18.0 and
net10.0-maccatalyst26.0, with SupportedOSPlatformVersion 15.0 (macOS 12) - the floor both the
.NET 9 maccatalyst workload and Datadog's own Catalyst support statement impose.
net8 sunset. The net8 head is already past its platform support window — the net8 mobile workloads left support with MAUI 8 on 14 May 2025 — and ships for the apps that still target it. So the decision does not persist by inertia: the net8 head is dropped in the first release after .NET 8 itself leaves support on 10 November 2026, in step with DatadogNet.iOS.
Installing
dotnet add package DatadogNet.Core.Mac
dotnet add package DatadogNet.RUM.Mac # and the other features you use
In a multi-headed MAUI app, guard the references by platform so each head restores its own bindings:
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">
<PackageReference Include="DatadogNet.Core.Mac" Version="3.14.0.2" />
<PackageReference Include="DatadogNet.RUM.Mac" Version="3.14.0.2" />
</ItemGroup>
Or skip the per-platform wiring entirely and use the DatadogNet façade, which fronts the iOS, Android and Mac Catalyst bindings behind one cross-platform API.
Usage
Identical to DatadogNet.iOS - same types, same namespaces, same convenience layer - so that README is the reference. The short version:
using DatadogCore;
using DatadogInternal;
using DatadogRUM;
var configuration = new DDConfiguration(clientToken: "<CLIENT_TOKEN>", env: "prod")
{
Site = DDSite.Us1(),
};
DDDatadog.InitializeWithConfiguration(configuration, DDTrackingConsent.Granted());
DDRUM.EnableWith(new DDRUMConfiguration(applicationID: "<RUM_APPLICATION_ID>")
{
UiKitViewsPredicate = new DDDefaultUIKitRUMViewsPredicate(),
UiKitActionsPredicate = new DDDefaultUIKitRUMActionsPredicate(),
});
samples/DatadogNet.Mac.Example is a runnable MAUI Catalyst app showing RUM, Logs, Trace and crash reporting - the honest Catalyst feature set.
How this repository works
The one structural difference from DatadogNet.iOS: the native frameworks are built here, not
downloaded. Datadog publishes no Mac Catalyst binaries - Datadog.xcframework.zip carries iOS
device and simulator slices only, and the prebuilt OpenTelemetryApi covers every Apple platform
except Catalyst - so build/BuildXcFrameworks.sh compiles
dd-sdk-ios at the pinned tag for platform=macOS,variant=Mac Catalyst and assembles
single-slice (ios-arm64_x86_64-maccatalyst) xcframeworks into libs/. Two project-file patches
make that possible; the script documents both.
The binding definitions (ApiDefinitions.cs, StructsAndEnums.cs, Additions/) are verbatim
copies from DatadogNet.iOS, refreshed by
build/SyncBindingsFromiOS.sh. Do not edit them here: fix them in
the iOS repository and re-sync, so the two platforms cannot drift. That is enforced, not asked
politely: the sync records the iOS commit it copied from in build/ios-bindings-source.txt, and
CI's binding-drift job re-runs the sync against exactly that commit and fails on any
difference. (shims/ is deliberately outside the sync — see the script's header for what must
happen if the iOS Flags shim ever ships.)
Layout
build/ BuildXcFrameworks.sh (native build), BuildNugets.sh (pack), SyncBindingsFromiOS.sh,
merge-packages.py (grafts the net10 pass into the net9-band packages)
libs/ the Catalyst xcframeworks (built, not committed) + BUILD-INFO.txt
src/ one binding project per package + Datadog.Binding.props (everything they share)
tests/ package layout tests, run against the packed .nupkg files
samples/ MAUI Mac Catalyst example app, built against the packed packages
Building locally
./build/BuildXcFrameworks.sh # needs Xcode; ~15 minutes, cached by DATADOG_BUILD_DIR
./build/BuildNugets.sh # packs all eleven packages into ./artifacts
dotnet test tests/DatadogNet.Mac.PackageTests
dotnet build samples/DatadogNet.Mac.Example/DatadogNetExample.csproj -p:RuntimeIdentifier=maccatalyst-arm64
Needs the .NET 9 and .NET 10 SDKs with the maccatalyst workload in each (BuildNugets.sh packs
twice and merges - no single SDK can build all three target frameworks), plus maui-maccatalyst
for the sample.
Upgrading the Datadog SDK
- Bump
DatadogNativeVersionin Directory.Build.props, resetDatadogBindingRevisionto 1. - Update
DatadogOtelVersionto whatever the new tag'sCartfile.resolvedpins. - Wait for (or produce) the matching DatadogNet.iOS release, then run
./build/SyncBindingsFromiOS.shagainst it and review the diff. ./build/BuildXcFrameworks.sh && ./build/BuildNugets.sh && dotnet test tests/DatadogNet.Mac.PackageTests- Update the README table and
docs/release-notes/.
Releasing
Push a tag v<version>, e.g. v3.14.0.1. The release workflow
builds the xcframeworks, packs, validates, publishes to nuget.org via trusted publishing, and
creates a GitHub release; a curated docs/release-notes/<version>.md replaces the generated
commit list when present. Pull requests publish -beta.<pr>.<run> prereleases the same way.
Licence
The binding code in this repository is MIT. The native binaries the packages embed are
built from Datadog's Apache-2.0 sources (dd-sdk-ios, KSCrash, opentelemetry-swift); every package
carries both texts under licenses/. Not an official Datadog product.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-maccatalyst18.0 is compatible. net9.0-maccatalyst was computed. net9.0-maccatalyst18.0 is compatible. net10.0-maccatalyst was computed. net10.0-maccatalyst26.0 is compatible. |
-
net10.0-maccatalyst26.0
- DatadogNet.Core.Mac (>= 3.14.0.2-beta.1.2)
- DatadogNet.Internal.Mac (>= 3.14.0.2-beta.1.2)
-
net8.0-maccatalyst18.0
- DatadogNet.Core.Mac (>= 3.14.0.2-beta.1.2)
- DatadogNet.Internal.Mac (>= 3.14.0.2-beta.1.2)
-
net9.0-maccatalyst18.0
- DatadogNet.Core.Mac (>= 3.14.0.2-beta.1.2)
- DatadogNet.Internal.Mac (>= 3.14.0.2-beta.1.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DatadogNet.WebViewTracking.Mac:
| Package | Downloads |
|---|---|
|
DatadogNet.WebView
Bridges RUM events and logs out of an Android WebView or a WKWebView into the surrounding native Datadog session. For hybrid apps; separate from DatadogNet so an app without a web view does not carry it. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.14.0.4 | 66 | 7/28/2026 |
| 3.14.0.4-beta.9.13 | 28 | 7/30/2026 |
| 3.14.0.4-beta.8.11 | 27 | 7/30/2026 |
| 3.14.0.4-beta.7.10 | 29 | 7/29/2026 |
| 3.14.0.4-beta.5.7 | 30 | 7/28/2026 |
| 3.14.0.3 | 83 | 7/26/2026 |
| 3.14.0.3-beta.5.5 | 32 | 7/28/2026 |
| 3.14.0.3-beta.3.4 | 37 | 7/26/2026 |
| 3.14.0.2 | 107 | 7/24/2026 |
| 3.14.0.2-beta.2.3 | 40 | 7/24/2026 |
| 3.14.0.2-beta.1.2 | 42 | 7/24/2026 |
| 3.14.0.1 | 92 | 7/23/2026 |
# 3.14.0.2
Binding-only release. The native SDK is unchanged — still
[dd-sdk-ios 3.14.0](https://github.com/DataDog/dd-sdk-ios/releases/tag/3.14.0), built from source
for Mac Catalyst — 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.
## dSYMs are no longer thrown away
The build always produced dSYMs and then lost them with the temporary directory — and for
Catalyst binaries that Datadog does not publish, they are the only symbolication data that will
ever exist. They now land in `libs/dsyms`, ride the CI cache with the frameworks, and every
release from this one on carries a `dsyms-<version>.zip` attachment. Upload it to Datadog to
symbolicate crash reports from apps on these packages.
## The fragile seams now fail loudly
- **The pbxproj patches assert they applied.** Building dd-sdk-ios for Catalyst requires patching
`SUPPORTS_MACCATALYST` and the platform filters in an Xcode-generated project file. Each patch
now verifies it changed something (or found the already-patched state) and fails naming the
patch that missed — so an upstream project-file reformat breaks the *patch step* with a clear
message instead of the *archive step* with "unable to resolve module dependency".
- **`DatadogOtelVersion` is checked, not trusted.** The second manually-maintained pin must match
the OpenTelemetryApi version the checked-out dd-sdk-ios tag records in its `Cartfile.resolved`;
a bump that forgets it now fails the build instead of silently building the wrong OTEL.
- **The verbatim-copy invariant is enforced.** The binding sources are copies of
DatadogNet.iOS's; the sync script now records the exact iOS commit it copied from
(`build/ios-bindings-source.txt`), and CI's `binding-drift` job re-runs the sync against that
commit and fails on any difference — a direct edit here, or a forgotten re-sync, is a red
build rather than a latent iOS/Catalyst behaviour split.
## Synced binding improvements
Re-synced from DatadogNet.iOS (see its `3.14.0.3` notes for the detail): doc summaries on the
main entry types reach IntelliSense here too, the `DDLogger` null-attributes behaviour is
documented as deliberate — a `[NullAllowed]` would trade a managed exception for a native crash —
and the trim/AOT analyzers are on with the surface analysing clean.
## Smaller improvements
- **nuget.org now shows these notes**: `docs/release-notes/<version>.md` is packed into
`PackageReleaseNotes`, with the releases page as fallback.
- CI fails when the README's versions drift from `Directory.Build.props`.
- The tooling copied from DatadogNet.iOS (`merge-packages.py`, the `select-xcode` action,
`BuildNugets.sh`) no longer carries that repository's comments verbatim: each file now says
what is true *here* and marks itself as a keep-in-sync copy.
## net8 sunset
Stated policy, so the decision does not persist by inertia: the `net8.0-maccatalyst18.0` head is
dropped in the first release after .NET 8 leaves support on **10 November 2026**, in step with
DatadogNet.iOS.
## Upgrading from 3.14.0.1
Nothing to change: same native SDK, same API.