dd-trace-js icon indicating copy to clipboard operation
dd-trace-js copied to clipboard

guardrails: bail out if esbuild bundle

Open tlhunter opened this issue 5 months ago • 4 comments

What does this PR do?

  • instructs guardrails to disable SSI if the application is an ESBuild bundle
    • we cannot properly instrument any bundle externally
    • we can only instrument ESBuild bundles and only if the user built it with our plugin

Motivation

  • if a user has bundled their application with our ESBuild plugin and...
    • included a copy of the tracer using require('dd-trace') then...
      • it can get into a weird double-tracer state
      • there will be an internal (bundled) copy and an external (--require via guardrails) tracer
      • they fight with each other
    • but without a copy of the tracer then...
      • it can get into a weird state where the bundle does emit diagnostic channel messages
      • but the external tracer doesn't properly handle them
      • we could possibly support this in the future but it will require a lot of edge case testing
  • if a user has bundled their application...
    • with Webpack or with ESBuild but without our ESBuild plugin or with another bundler then...
      • it can get into a weird state where the tracer only instruments internal module require('http') calls
      • but doesn't instrument userland module require('express') calls

tlhunter avatar Jun 27 '25 21:06 tlhunter

Overall package size

Self size: 12.89 MB Deduped: 115.59 MB No deduping: 117.8 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.3.0 | 20.73 MB | 20.74 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.11.1 | 9.96 MB | 10.34 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.73 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @opentelemetry/resources | 1.9.1 | 306.54 kB | 1.74 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api-logs | 0.206.0 | 201.39 kB | 1.42 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.15.0 | 127.66 kB | 856.24 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | @datadog/openfeature-node-server | 0.1.0-preview.12 | 95.11 kB | 401.68 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

github-actions[bot] avatar Jun 27 '25 21:06 github-actions[bot]

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 84.13%. Comparing base (6c552cb) to head (b5ab5ef).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #5988   +/-   ##
=======================================
  Coverage   84.13%   84.13%           
=======================================
  Files         505      505           
  Lines       21038    21038           
=======================================
  Hits        17701    17701           
  Misses       3337     3337           

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Jun 27 '25 21:06 codecov[bot]

Datadog Report

Branch report: tlhunter/guardrails-esbuild Commit report: dca3d88 Test service: dd-trace-js-integration-tests

:white_check_mark: 0 Failed, 1258 Passed, 0 Skipped, 21m 37.58s Total Time

Benchmarks

Benchmark execution time: 2025-10-22 16:12:52

Comparing candidate commit b5ab5efb0caa77db3a6a9f07560174bc37bac2a5 in PR branch tlhunter/guardrails-esbuild with baseline commit 6c552cbc7ef2a810868f1754a3420ca286eb942b in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1604 metrics, 66 unstable metrics.

pr-commenter[bot] avatar Oct 22 '25 16:10 pr-commenter[bot]