diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71ebefb3f8..71825d1388 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## Unreleased
+
+### Features
+
+- Added StartSpan and GetTransaction methods to the SentrySdk ([#4303](https://github.com/getsentry/sentry-dotnet/pull/4303))
+
## 5.11.2
### Fixes
diff --git a/src/Sentry/SentrySdk.cs b/src/Sentry/SentrySdk.cs
index d00b002576..4317314014 100644
--- a/src/Sentry/SentrySdk.cs
+++ b/src/Sentry/SentrySdk.cs
@@ -634,6 +634,12 @@ public static SentryId CaptureCheckIn(string monitorSlug,
scope,
configureMonitorOptions);
+ ///
+ /// Starts a transaction if there is not already one active on the scope, otherwise starts a new child span on the
+ /// currently active transaction.
+ ///
+ public static ISpan StartSpan(string operation, string description) => CurrentHub.StartSpan(operation, description);
+
///
/// Starts a transaction.
///
@@ -692,7 +698,13 @@ public static void BindException(Exception exception, ISpan span)
=> CurrentHub.BindException(exception, span);
///
- /// Gets the last active span.
+ /// Gets the currently active transaction.
+ ///
+ [DebuggerStepThrough]
+ public static ITransactionTracer? GetTransaction() => CurrentHub.GetTransaction();
+
+ ///
+ /// Gets the last active span
///
[DebuggerStepThrough]
public static ISpan? GetSpan()
diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt
index 82d7cdf7f7..3bbe328943 100644
--- a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt
+++ b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt
@@ -861,6 +861,7 @@ namespace Sentry
public static Sentry.BaggageHeader? GetBaggage() { }
public static Sentry.ISpan? GetSpan() { }
public static Sentry.SentryTraceHeader? GetTraceHeader() { }
+ public static Sentry.ITransactionTracer? GetTransaction() { }
public static System.IDisposable Init() { }
public static System.IDisposable Init(Sentry.SentryOptions options) { }
public static System.IDisposable Init(System.Action? configureOptions) { }
@@ -871,6 +872,7 @@ namespace Sentry
public static void ResumeSession() { }
public static void SetTag(string key, string value) { }
public static void StartSession() { }
+ public static Sentry.ISpan StartSpan(string operation, string description) { }
public static Sentry.ITransactionTracer StartTransaction(Sentry.ITransactionContext context) { }
public static Sentry.ITransactionTracer StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { }
public static Sentry.ITransactionTracer StartTransaction(string name, string operation) { }
diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt
index 82d7cdf7f7..3bbe328943 100644
--- a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt
+++ b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt
@@ -861,6 +861,7 @@ namespace Sentry
public static Sentry.BaggageHeader? GetBaggage() { }
public static Sentry.ISpan? GetSpan() { }
public static Sentry.SentryTraceHeader? GetTraceHeader() { }
+ public static Sentry.ITransactionTracer? GetTransaction() { }
public static System.IDisposable Init() { }
public static System.IDisposable Init(Sentry.SentryOptions options) { }
public static System.IDisposable Init(System.Action? configureOptions) { }
@@ -871,6 +872,7 @@ namespace Sentry
public static void ResumeSession() { }
public static void SetTag(string key, string value) { }
public static void StartSession() { }
+ public static Sentry.ISpan StartSpan(string operation, string description) { }
public static Sentry.ITransactionTracer StartTransaction(Sentry.ITransactionContext context) { }
public static Sentry.ITransactionTracer StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { }
public static Sentry.ITransactionTracer StartTransaction(string name, string operation) { }
diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt
index 701eaa25b3..8ef155217f 100644
--- a/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt
+++ b/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt
@@ -842,6 +842,7 @@ namespace Sentry
public static Sentry.BaggageHeader? GetBaggage() { }
public static Sentry.ISpan? GetSpan() { }
public static Sentry.SentryTraceHeader? GetTraceHeader() { }
+ public static Sentry.ITransactionTracer? GetTransaction() { }
public static System.IDisposable Init() { }
public static System.IDisposable Init(Sentry.SentryOptions options) { }
public static System.IDisposable Init(System.Action? configureOptions) { }
@@ -852,6 +853,7 @@ namespace Sentry
public static void ResumeSession() { }
public static void SetTag(string key, string value) { }
public static void StartSession() { }
+ public static Sentry.ISpan StartSpan(string operation, string description) { }
public static Sentry.ITransactionTracer StartTransaction(Sentry.ITransactionContext context) { }
public static Sentry.ITransactionTracer StartTransaction(Sentry.ITransactionContext context, System.Collections.Generic.IReadOnlyDictionary customSamplingContext) { }
public static Sentry.ITransactionTracer StartTransaction(string name, string operation) { }