startTransaction(context, customSamplingContext) {
    const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);

    if (debugBuild.DEBUG_BUILD && !result) {
      // eslint-disable-next-line deprecation/deprecation
      const client = this.getClient();
      if (!client) {
        utils.logger.warn(
          "Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'",
        );
      } else {
        utils.logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':
Sentry.addTracingExtensions();
Sentry.init({...});
`);
      }
    }

    return result;
  }
Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.

A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a
new child span within the transaction or any span, call the respective `.startChild()` method.

Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.

The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its
finished child spans will be sent to Sentry.

@param context Properties of the new `Transaction`.
@param customSamplingContext Information given to the transaction sampling function (along with context-dependent
default values). See {@link Options.tracesSampler}.

@returns The transaction which was just started

@deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.