DatadogNet.Core.Mac
3.14.0.1
See the version list below for details.
dotnet add package DatadogNet.Core.Mac --version 3.14.0.1
NuGet\Install-Package DatadogNet.Core.Mac -Version 3.14.0.1
<PackageReference Include="DatadogNet.Core.Mac" Version="3.14.0.1" />
<PackageVersion Include="DatadogNet.Core.Mac" Version="3.14.0.1" />
<PackageReference Include="DatadogNet.Core.Mac" />
paket add DatadogNet.Core.Mac --version 3.14.0.1
#r "nuget: DatadogNet.Core.Mac, 3.14.0.1"
#:package DatadogNet.Core.Mac@3.14.0.1
#addin nuget:?package=DatadogNet.Core.Mac&version=3.14.0.1
#tool nuget:?package=DatadogNet.Core.Mac&version=3.14.0.1
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.
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.1" />
<PackageReference Include="DatadogNet.RUM.Mac" Version="3.14.0.1" />
</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.
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.Internal.Mac (>= 3.14.0.1)
-
net8.0-maccatalyst18.0
- DatadogNet.Internal.Mac (>= 3.14.0.1)
-
net9.0-maccatalyst18.0
- DatadogNet.Internal.Mac (>= 3.14.0.1)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on DatadogNet.Core.Mac:
| Package | Downloads |
|---|---|
|
DatadogNet
One cross-platform Datadog API for .NET MAUI: RUM, Logs, Trace and Session Replay on Android, iOS and Mac Catalyst from shared code, over the native dd-sdk-android and dd-sdk-ios bindings. Restores and no-ops on Windows, so a multi-headed app needs no conditionals. |
|
|
DatadogNet.WebViewTracking.Mac
.NET for Mac Catalyst / .NET MAUI bindings for the native Datadog iOS SDK's DatadogWebViewTracking framework: bridges RUM and Logs events out of a WKWebView running the Datadog Browser SDK, so hybrid apps report one session across native and web. Built against dd-sdk-ios 3.14.0. |
|
|
DatadogNet.SessionReplay.Mac
.NET for Mac Catalyst / .NET MAUI bindings for the native Datadog iOS SDK's DatadogSessionReplay framework: records and replays user sessions, with privacy levels that mask text and user input. Session Replay is iOS/iPadOS-only upstream and records nothing on Mac Catalyst - this package ships so shared code that references it compiles and links unchanged. Built against dd-sdk-ios 3.14.0. Requires RUM to be enabled. |
|
|
DatadogNet.Flags.Mac
.NET for Mac Catalyst / .NET MAUI bindings for the native Datadog iOS SDK's DatadogFlags framework: feature-flag evaluation and exposure reporting. Built against dd-sdk-ios 3.14.0. NOTE: upstream exposes no Objective-C API for this module yet, so it ships the native framework but no callable C# surface - see the package README. |
|
|
DatadogNet.Logs.Mac
.NET for Mac Catalyst / .NET MAUI bindings for the native Datadog iOS SDK's DatadogLogs framework: structured log collection with levels, attributes, tags and error reporting, correlated with RUM sessions. Built against dd-sdk-ios 3.14.0. The DD* managed API for this module is bound in this package, matching DatadogNet.Logs.iOS. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.14.0.4 | 63 | 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 | 28 | 7/29/2026 |
| 3.14.0.4-beta.5.7 | 27 | 7/28/2026 |
| 3.14.0.3 | 49 | 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 | 75 | 7/24/2026 |
| 3.14.0.2-beta.2.3 | 40 | 7/24/2026 |
| 3.14.0.2-beta.1.2 | 41 | 7/24/2026 |
| 3.14.0.1 | 61 | 7/23/2026 |