@newrelic/browser-agent 1.241.0 → 1.243.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/CHANGELOG.md +1465 -0
  2. package/dist/cjs/cdn/polyfills/lite.js +13 -1
  3. package/dist/cjs/cdn/polyfills/pro.js +17 -1
  4. package/dist/cjs/cdn/polyfills/spa.js +18 -1
  5. package/dist/cjs/common/config/state/init.js +32 -5
  6. package/dist/cjs/common/constants/env.cdn.js +1 -1
  7. package/dist/cjs/common/constants/env.npm.js +1 -1
  8. package/dist/cjs/common/dom/query-selector.js +16 -0
  9. package/dist/cjs/common/session/session-entity.js +20 -2
  10. package/dist/cjs/common/wrap/wrap-function.js +1 -1
  11. package/dist/cjs/features/ajax/aggregate/index.js +1 -1
  12. package/dist/cjs/features/session_replay/aggregate/index.js +84 -50
  13. package/dist/cjs/features/utils/feature-base.js +1 -2
  14. package/dist/cjs/features/utils/instrument-base.js +1 -0
  15. package/dist/cjs/loaders/api/api.js +2 -2
  16. package/dist/cjs/loaders/api/apiAsync.js +0 -37
  17. package/dist/cjs/loaders/configure/configure.js +1 -1
  18. package/dist/cjs/loaders/configure/public-path.js +6 -3
  19. package/dist/esm/cdn/polyfills/lite.js +8 -1
  20. package/dist/esm/cdn/polyfills/pro.js +13 -2
  21. package/dist/esm/cdn/polyfills/spa.js +13 -1
  22. package/dist/esm/common/config/state/init.js +32 -5
  23. package/dist/esm/common/constants/env.cdn.js +1 -1
  24. package/dist/esm/common/constants/env.npm.js +1 -1
  25. package/dist/esm/common/dom/query-selector.js +9 -0
  26. package/dist/esm/common/session/session-entity.js +18 -1
  27. package/dist/esm/common/wrap/wrap-function.js +1 -1
  28. package/dist/esm/features/ajax/aggregate/index.js +1 -1
  29. package/dist/esm/features/session_replay/aggregate/index.js +83 -50
  30. package/dist/esm/features/utils/feature-base.js +1 -2
  31. package/dist/esm/features/utils/instrument-base.js +1 -0
  32. package/dist/esm/loaders/api/api.js +2 -2
  33. package/dist/esm/loaders/api/apiAsync.js +1 -36
  34. package/dist/esm/loaders/configure/configure.js +1 -1
  35. package/dist/esm/loaders/configure/public-path.js +6 -3
  36. package/dist/types/common/config/state/init.d.ts.map +1 -1
  37. package/dist/types/common/dom/query-selector.d.ts +2 -0
  38. package/dist/types/common/dom/query-selector.d.ts.map +1 -0
  39. package/dist/types/common/session/session-entity.d.ts +5 -0
  40. package/dist/types/common/session/session-entity.d.ts.map +1 -1
  41. package/dist/types/features/session_replay/aggregate/index.d.ts +11 -14
  42. package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
  43. package/dist/types/features/utils/feature-base.d.ts.map +1 -1
  44. package/dist/types/features/utils/instrument-base.d.ts.map +1 -1
  45. package/dist/types/loaders/api/api.d.ts.map +1 -1
  46. package/dist/types/loaders/api/apiAsync.d.ts.map +1 -1
  47. package/dist/types/loaders/configure/public-path.d.ts +1 -1
  48. package/dist/types/loaders/configure/public-path.d.ts.map +1 -1
  49. package/package.json +2 -2
  50. package/src/cdn/polyfills/lite.js +14 -1
  51. package/src/cdn/polyfills/pro.js +23 -2
  52. package/src/cdn/polyfills/spa.js +24 -1
  53. package/src/common/config/state/init.js +33 -4
  54. package/src/common/dom/query-selector.js +9 -0
  55. package/src/common/session/session-entity.js +20 -1
  56. package/src/common/wrap/wrap-function.js +1 -1
  57. package/src/features/ajax/aggregate/index.js +2 -2
  58. package/src/features/session_replay/aggregate/index.js +82 -34
  59. package/src/features/utils/feature-base.js +1 -2
  60. package/src/features/utils/instrument-base.js +1 -0
  61. package/src/loaders/api/api.js +1 -2
  62. package/src/loaders/api/apiAsync.js +1 -39
  63. package/src/loaders/configure/configure.js +1 -1
  64. package/src/loaders/configure/public-path.js +6 -3
  65. package/src/common/aggregate/aggregator.test.js +0 -107
  66. package/src/common/config/state/configurable.test.js +0 -73
  67. package/src/common/config/state/info.test.js +0 -31
  68. package/src/common/config/state/init.test.js +0 -28
  69. package/src/common/config/state/loader-config.test.js +0 -21
  70. package/src/common/config/state/runtime.test.js +0 -21
  71. package/src/common/constants/env.cdn.test.js +0 -7
  72. package/src/common/constants/env.npm.test.js +0 -7
  73. package/src/common/constants/env.test.js +0 -7
  74. package/src/common/constants/runtime.test.js +0 -176
  75. package/src/common/deny-list/deny-list.test.js +0 -104
  76. package/src/common/drain/drain.test.js +0 -74
  77. package/src/common/event-emitter/contextual-ee.component-test.js +0 -293
  78. package/src/common/event-emitter/handle.test.js +0 -56
  79. package/src/common/event-emitter/register-handler.test.js +0 -61
  80. package/src/common/harvest/harvest-scheduler.test.js +0 -492
  81. package/src/common/harvest/harvest.test.js +0 -813
  82. package/src/common/ids/id.test.js +0 -92
  83. package/src/common/ids/unique-id.test.js +0 -58
  84. package/src/common/session/session-entity.component-test.js +0 -346
  85. package/src/common/storage/local-storage.test.js +0 -17
  86. package/src/common/timer/interaction-timer.component-test.js +0 -212
  87. package/src/common/timer/timer.test.js +0 -99
  88. package/src/common/timing/nav-timing.test.js +0 -161
  89. package/src/common/url/canonicalize-url.test.js +0 -45
  90. package/src/common/url/clean-url.test.js +0 -25
  91. package/src/common/url/encode.test.js +0 -81
  92. package/src/common/url/location.test.js +0 -15
  93. package/src/common/url/parse-url.test.js +0 -110
  94. package/src/common/url/protocol.test.js +0 -17
  95. package/src/common/util/console.test.js +0 -34
  96. package/src/common/util/data-size.test.js +0 -56
  97. package/src/common/util/feature-flags.test.js +0 -94
  98. package/src/common/util/get-or-set.test.js +0 -58
  99. package/src/common/util/invoke.test.js +0 -65
  100. package/src/common/util/map-own.test.js +0 -52
  101. package/src/common/util/obfuscate.component-test.js +0 -173
  102. package/src/common/util/stringify.test.js +0 -49
  103. package/src/common/util/submit-data.test.js +0 -183
  104. package/src/common/util/traverse.test.js +0 -50
  105. package/src/common/vitals/cumulative-layout-shift.test.js +0 -71
  106. package/src/common/vitals/first-contentful-paint.test.js +0 -124
  107. package/src/common/vitals/first-input-delay.test.js +0 -88
  108. package/src/common/vitals/first-paint.test.js +0 -127
  109. package/src/common/vitals/interaction-to-next-paint.test.js +0 -74
  110. package/src/common/vitals/largest-contentful-paint.test.js +0 -94
  111. package/src/common/vitals/long-task.test.js +0 -122
  112. package/src/common/vitals/time-to-first-byte.test.js +0 -147
  113. package/src/common/vitals/vital-metric.test.js +0 -171
  114. package/src/common/wrap/wrap-promise.component-test.js +0 -110
  115. package/src/features/ajax/instrument/distributed-tracing.test.js +0 -375
  116. package/src/features/jserrors/aggregate/canonical-function-name.test.js +0 -13
  117. package/src/features/jserrors/aggregate/compute-stack-trace.test.js +0 -414
  118. package/src/features/jserrors/aggregate/format-stack-trace.test.js +0 -39
  119. package/src/features/jserrors/aggregate/string-hash-code.test.js +0 -12
  120. package/src/features/metrics/aggregate/framework-detection.test.js +0 -332
  121. package/src/features/page_view_timing/aggregate/index.component-test.js +0 -86
  122. package/src/features/session_replay/aggregate/index.component-test.js +0 -317
  123. package/src/features/spa/aggregate/interaction-node.test.js +0 -17
  124. package/src/features/utils/agent-session.test.js +0 -194
  125. package/src/features/utils/aggregate-base.test.js +0 -123
  126. package/src/features/utils/feature-base.test.js +0 -45
  127. package/src/features/utils/handler-cache.test.js +0 -72
  128. package/src/features/utils/instrument-base.test.js +0 -216
  129. package/src/features/utils/lazy-feature-loader.test.js +0 -37
  130. package/src/loaders/api/api.component-test.js +0 -45
  131. package/src/loaders/api/api.test.js +0 -85
  132. package/src/loaders/api/apiAsync.test.js +0 -17
package/CHANGELOG.md ADDED
@@ -0,0 +1,1465 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [1.243.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.242.0...v1.243.0) (2023-10-04)
7
+
8
+
9
+ ### Features
10
+
11
+ * Do not report ajax nodes in session traces if in deny list ([#750](https://github.com/newrelic/newrelic-browser-agent/issues/750)) ([8106bfa](https://github.com/newrelic/newrelic-browser-agent/commit/8106bfa6fcfff13829cc1368e8e7ee85ed11480e))
12
+ * Remove deprecated API inlineHit ([#744](https://github.com/newrelic/newrelic-browser-agent/issues/744)) ([54b42ea](https://github.com/newrelic/newrelic-browser-agent/commit/54b42eae2ae8692e5f463b7a3441e3be9e40cc5e))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * Adjust Session Replay meta and timestamps ([#743](https://github.com/newrelic/newrelic-browser-agent/issues/743)) ([ed727c6](https://github.com/newrelic/newrelic-browser-agent/commit/ed727c65fe3029b4b9c094880b2f016db2c1cec3))
18
+ * Re-update assets proxy to accept host URL strings ([#752](https://github.com/newrelic/newrelic-browser-agent/issues/752)) ([a7f58a3](https://github.com/newrelic/newrelic-browser-agent/commit/a7f58a3a83804d6102bb159ab2ae410e39ad884f))
19
+ * Set Session Replay first chunk flags more reliably ([#740](https://github.com/newrelic/newrelic-browser-agent/issues/740)) ([42a15e1](https://github.com/newrelic/newrelic-browser-agent/commit/42a15e14a0f13e8b7a2b0afbaf6b30893fd701b4))
20
+ * Tap session entity into storage api for changes across tabs ([#741](https://github.com/newrelic/newrelic-browser-agent/issues/741)) ([81bedc6](https://github.com/newrelic/newrelic-browser-agent/commit/81bedc6d4922379ad6e10a0ec7aaa72f85e253cf))
21
+
22
+ ## [1.242.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.241.0...v1.242.0) (2023-09-25)
23
+
24
+
25
+ ### Features
26
+
27
+ * Add messaging about Session Replay abort behavior ([#734](https://github.com/newrelic/newrelic-browser-agent/issues/734)) ([e5cd3f1](https://github.com/newrelic/newrelic-browser-agent/commit/e5cd3f18b7c3f569dc46f90f1eba40b52092e1d0))
28
+ * Applying new cache headers to assets ([#722](https://github.com/newrelic/newrelic-browser-agent/issues/722)) ([9ab1c37](https://github.com/newrelic/newrelic-browser-agent/commit/9ab1c37783468f423ca8c1db835ea6f0bea504b3))
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * Drain event emitter even when feature fails to initialize ([#730](https://github.com/newrelic/newrelic-browser-agent/issues/730)) ([06edda5](https://github.com/newrelic/newrelic-browser-agent/commit/06edda57f963f68a928244ab6c7e8a26b056b2c3))
34
+ * Validation of SR configurations ([#721](https://github.com/newrelic/newrelic-browser-agent/issues/721)) ([12f5ec0](https://github.com/newrelic/newrelic-browser-agent/commit/12f5ec00e3e13b3d8c2d8884de315752873e4d0e))
35
+
36
+ ## [1.241.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.240.0...v1.241.0) (2023-09-18)
37
+
38
+
39
+ ### Features
40
+
41
+ * Add SR entrypoint to NPM ahead of LP ([#714](https://github.com/newrelic/newrelic-browser-agent/issues/714)) ([4de7e9e](https://github.com/newrelic/newrelic-browser-agent/commit/4de7e9e4ecd563232f4c9a8a2f985c3307e79bf7))
42
+ * Removing hash from chunk asset name ([#706](https://github.com/newrelic/newrelic-browser-agent/issues/706)) ([fdc2c29](https://github.com/newrelic/newrelic-browser-agent/commit/fdc2c29e2b43d691e3b613d8729b1c9615f72114))
43
+
44
+
45
+ ### Bug Fixes
46
+
47
+ * Final harvest does not happen when initial RUM call fails ([#702](https://github.com/newrelic/newrelic-browser-agent/issues/702)) ([feb8726](https://github.com/newrelic/newrelic-browser-agent/commit/feb8726faba6257c2173b9e0a9aebaeee1f449a6))
48
+
49
+ ## [1.240.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.239.1...v1.240.0) (2023-09-12)
50
+
51
+
52
+ ### Features
53
+
54
+ * Add session trace metadata params ([#676](https://github.com/newrelic/newrelic-browser-agent/issues/676)) ([882b21c](https://github.com/newrelic/newrelic-browser-agent/commit/882b21c6e62eb08ea2571348bb9ae1f94bd06201))
55
+ * Add SR to pro and spa builds (only runs for LP customers) ([#677](https://github.com/newrelic/newrelic-browser-agent/issues/677)) ([6d8ddb4](https://github.com/newrelic/newrelic-browser-agent/commit/6d8ddb4fd0eb4120ddfa097249a62e8b9866072d))
56
+ * Centralize web vitals timings ([#635](https://github.com/newrelic/newrelic-browser-agent/issues/635)) ([d912e94](https://github.com/newrelic/newrelic-browser-agent/commit/d912e943470b4dbe8b2544fdcc3f89d757041c35))
57
+ * Origin of agent webpack chunks now changeable ([#659](https://github.com/newrelic/newrelic-browser-agent/issues/659)) ([739e2dd](https://github.com/newrelic/newrelic-browser-agent/commit/739e2dd8032bc92cebd238159c42e8ceb81a6b37))
58
+
59
+ ## [1.239.1](https://github.com/newrelic/newrelic-browser-agent/compare/v1.239.0...v1.239.1) (2023-09-02)
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * Fix internal release process ([#672](https://github.com/newrelic/newrelic-browser-agent/issues/672)) ([ab0309f](https://github.com/newrelic/newrelic-browser-agent/commit/ab0309fbed343b6dab4c2ec82cf7f22e071eb9df))
65
+
66
+ ## [1.239.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.238.0...v1.239.0) (2023-09-01)
67
+
68
+
69
+ ### Features
70
+
71
+ * Add best effort to detect Ajax events before instantiation ([#648](https://github.com/newrelic/newrelic-browser-agent/issues/648)) ([2d3c9d3](https://github.com/newrelic/newrelic-browser-agent/commit/2d3c9d36d4e59343a1b228322e1040d2f3f911b8))
72
+ * Add mode to enable agent to not harvest until user consent ([#656](https://github.com/newrelic/newrelic-browser-agent/issues/656)) ([9141a45](https://github.com/newrelic/newrelic-browser-agent/commit/9141a45cdb3fffd2306fcc5388ed74142d167c53))
73
+ * Remove allow_bfcache flag ([#652](https://github.com/newrelic/newrelic-browser-agent/issues/652)) ([ec113af](https://github.com/newrelic/newrelic-browser-agent/commit/ec113af80fd565ff50ba825b82e5f4d1b74d09b7))
74
+ * Removing old supportability metrics ([#669](https://github.com/newrelic/newrelic-browser-agent/issues/669)) ([c17d344](https://github.com/newrelic/newrelic-browser-agent/commit/c17d344389eb2262ff5d3ca94a1748e519220921))
75
+
76
+
77
+ ### Bug Fixes
78
+
79
+ * Fixing issue with leaking event listeners ([#668](https://github.com/newrelic/newrelic-browser-agent/issues/668)) ([6cb8238](https://github.com/newrelic/newrelic-browser-agent/commit/6cb823842fab406a33b9698edee1932c29204df3))
80
+ * Issues with types resolution ([#670](https://github.com/newrelic/newrelic-browser-agent/issues/670)) ([85336a4](https://github.com/newrelic/newrelic-browser-agent/commit/85336a43595bbf3d2793aafe665a47650a20ed21))
81
+
82
+ ## [1.238.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.237.1...v1.238.0) (2023-08-16)
83
+
84
+
85
+ ### Features
86
+
87
+ * Add API: setApplicationVersion ([#639](https://github.com/newrelic/newrelic-browser-agent/issues/639)) ([4bb3e81](https://github.com/newrelic/newrelic-browser-agent/commit/4bb3e81b9a2fb0c0f075f3f72e90d21ffdde06fb))
88
+ * Reducing the agent chunk count ([#637](https://github.com/newrelic/newrelic-browser-agent/issues/637)) ([043becf](https://github.com/newrelic/newrelic-browser-agent/commit/043becf2d8c766516cecd614b54de3fc5acad1e2))
89
+
90
+
91
+ ### Bug Fixes
92
+
93
+ * Capture potential missing tail data for session trace ([#624](https://github.com/newrelic/newrelic-browser-agent/issues/624)) ([1941427](https://github.com/newrelic/newrelic-browser-agent/commit/194142763a117b7c5ac30f22a73b0577d2112fba))
94
+ * Fix distributed tracing handling of empty string fetch parameter ([#640](https://github.com/newrelic/newrelic-browser-agent/issues/640)) ([5dca741](https://github.com/newrelic/newrelic-browser-agent/commit/5dca741ae0c98ef50cf2170cdd4f075e0c8bbae9))
95
+ * Typo in type declarations ([#634](https://github.com/newrelic/newrelic-browser-agent/issues/634)) ([ada8ad2](https://github.com/newrelic/newrelic-browser-agent/commit/ada8ad2e2c85065c46237fa45cce7ddec8368e53))
96
+
97
+ ## [1.237.1](https://github.com/newrelic/newrelic-browser-agent/compare/v1.237.0...v1.237.1) (2023-08-02)
98
+
99
+
100
+ ### Bug Fixes
101
+
102
+ * Fix serialization issue with array data ([#621](https://github.com/newrelic/newrelic-browser-agent/issues/621)) ([6887940](https://github.com/newrelic/newrelic-browser-agent/commit/6887940a01f74761840058742e04efd0f9130bb9))
103
+ * prevent dollar symbol only variable names ([#631](https://github.com/newrelic/newrelic-browser-agent/issues/631)) ([cff7bc4](https://github.com/newrelic/newrelic-browser-agent/commit/cff7bc4fbc4cd9620e319b3f6f2861515f7b01a8))
104
+ * SPA feature respects ajax deny_list for fetch ([#633](https://github.com/newrelic/newrelic-browser-agent/issues/633)) ([ccfe510](https://github.com/newrelic/newrelic-browser-agent/commit/ccfe51063cd59e946e20ec870ce5979b1ca73054))
105
+ * Undefined deny list ignores block internal ([#629](https://github.com/newrelic/newrelic-browser-agent/issues/629)) ([27a1b04](https://github.com/newrelic/newrelic-browser-agent/commit/27a1b044ae239d83c85c7e25f69979b23b985e54))
106
+
107
+ ## [1.237.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.236.0...v1.237.0) (2023-07-28)
108
+
109
+
110
+ ### Features
111
+
112
+ * Add warning for large payloads ([#620](https://github.com/newrelic/newrelic-browser-agent/issues/620)) ([d616f64](https://github.com/newrelic/newrelic-browser-agent/commit/d616f64e0b6369becea6007a428061932c534f48))
113
+ * reduce jserrors wrapping and remove onerror use ([#614](https://github.com/newrelic/newrelic-browser-agent/issues/614)) ([e393c96](https://github.com/newrelic/newrelic-browser-agent/commit/e393c966239bae2054c6878ce0c0c53180fabc5d))
114
+ * Stop reporting ajax events going to same beacon ([#609](https://github.com/newrelic/newrelic-browser-agent/issues/609)) ([ca43edf](https://github.com/newrelic/newrelic-browser-agent/commit/ca43edfd1c6d477a647e7ce97b6f975134ea1b35))
115
+
116
+
117
+ ### Bug Fixes
118
+
119
+ * Defining agent api methods for ts types ([#613](https://github.com/newrelic/newrelic-browser-agent/issues/613)) ([14d4294](https://github.com/newrelic/newrelic-browser-agent/commit/14d42949668fad44f1553179f2c6897a84d4b771))
120
+ * Fix potential property of undefined errors ([#610](https://github.com/newrelic/newrelic-browser-agent/issues/610)) ([389b5ad](https://github.com/newrelic/newrelic-browser-agent/commit/389b5ad2c17b74574f98ec6bc24d726061b8a3c0))
121
+ * prevent invalid error stack traces ([#617](https://github.com/newrelic/newrelic-browser-agent/issues/617)) ([3d9f2c0](https://github.com/newrelic/newrelic-browser-agent/commit/3d9f2c060d0c06b70c14fc8d2b57828ad78cf7ea))
122
+ * Remove fetch keep-alive unhandled rejection ([#625](https://github.com/newrelic/newrelic-browser-agent/issues/625)) ([dc4fb1b](https://github.com/newrelic/newrelic-browser-agent/commit/dc4fb1babb53b2dcb0abd045ba59390d47a58cb4))
123
+
124
+ ## [1.236.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.235.0...v1.236.0) (2023-06-27)
125
+
126
+
127
+ ### Features
128
+
129
+ * Expose MicroLoader in the npm package ([#589](https://github.com/newrelic/newrelic-browser-agent/issues/589)) ([5175356](https://github.com/newrelic/newrelic-browser-agent/commit/5175356dfa3c959580ae26644948afc7a8f9cd6a))
130
+ * Remove img, jsonp, and xhrGet methods ([#576](https://github.com/newrelic/newrelic-browser-agent/issues/576)) ([f92f88e](https://github.com/newrelic/newrelic-browser-agent/commit/f92f88ec7a90617d644019a32baeab5fd9595201))
131
+
132
+
133
+ ### Bug Fixes
134
+
135
+ * Fix illegal invocation error on final harvest ([#594](https://github.com/newrelic/newrelic-browser-agent/issues/594)) ([de7049f](https://github.com/newrelic/newrelic-browser-agent/commit/de7049f6892424f607b6d09c90ebef2909d0b19f))
136
+ * Handle chunk load promise error introduced in 1.235.0 ([#603](https://github.com/newrelic/newrelic-browser-agent/issues/603)) ([a702e23](https://github.com/newrelic/newrelic-browser-agent/commit/a702e2333b31f9088e7076727eb4a6cf26615841))
137
+
138
+ ## [1.235.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.234.0...v1.235.0) (2023-06-20)
139
+
140
+
141
+ ### Features
142
+
143
+ * Add error mode to session trace ([#583](https://github.com/newrelic/newrelic-browser-agent/issues/583)) ([98e3f18](https://github.com/newrelic/newrelic-browser-agent/commit/98e3f18c182be93b93386968026555c2575fd29d))
144
+ * Decorate error objects to facilitate future UI experiences ([#574](https://github.com/newrelic/newrelic-browser-agent/issues/574)) ([1167c98](https://github.com/newrelic/newrelic-browser-agent/commit/1167c9826cd78be0f4a9c6cb5d74c6d37685ba0e))
145
+ * Minor feature class changes to support testing new features ([#571](https://github.com/newrelic/newrelic-browser-agent/issues/571)) ([a717951](https://github.com/newrelic/newrelic-browser-agent/commit/a717951d12b41ec68f79548c68370cd89502e539))
146
+ * Remove unused data from session trace requests ([276c4f6](https://github.com/newrelic/newrelic-browser-agent/commit/276c4f6ee35063e6b22cb2dc4c70729ffb89ca3d))
147
+ * Use new shared session for Session Trace feature ([#545](https://github.com/newrelic/newrelic-browser-agent/issues/545)) ([dbd995a](https://github.com/newrelic/newrelic-browser-agent/commit/dbd995a995af27f4f99316860ece7bcb24f53e73))
148
+
149
+ ## [1.234.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.233.1...v1.234.0) (2023-06-02)
150
+
151
+
152
+ ### Features
153
+
154
+ * Migrate RUM network call from GET to POST ([#521](https://github.com/newrelic/newrelic-browser-agent/issues/521)) ([937812a](https://github.com/newrelic/newrelic-browser-agent/commit/937812abdc561223028176df6c8bf2b7100b09b2))
155
+
156
+ ## [1.233.1](https://github.com/newrelic/newrelic-browser-agent/compare/v1.233.0...v1.233.1) (2023-05-31)
157
+
158
+
159
+ ### Bug Fixes
160
+
161
+ * Address bug affecting XHR harvest re-schedule ([#561](https://github.com/newrelic/newrelic-browser-agent/issues/561)) ([cd2dc90](https://github.com/newrelic/newrelic-browser-agent/commit/cd2dc90f04bbce81cddaa408413c47596bfb2b2b))
162
+
163
+ ## [1.233.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.232.1...v1.233.0) (2023-05-26)
164
+
165
+
166
+ ### Features
167
+
168
+ * Capture metrics for usage of MooTools and certain polyfills ([#539](https://github.com/newrelic/newrelic-browser-agent/issues/539)) ([903a7e1](https://github.com/newrelic/newrelic-browser-agent/commit/903a7e1e93a09f4e94ae76e95659a203ecb2896b))
169
+ * Update agent internals in early preparation for new features ([#532](https://github.com/newrelic/newrelic-browser-agent/issues/532)) ([1ee675d](https://github.com/newrelic/newrelic-browser-agent/commit/1ee675d232fb9a233c36ad0a2b998739fbaa1b8b))
170
+
171
+
172
+ ### Bug Fixes
173
+
174
+ * Address "configurable" warnings arising from user-agent module ([#546](https://github.com/newrelic/newrelic-browser-agent/issues/546)) ([7a7dace](https://github.com/newrelic/newrelic-browser-agent/commit/7a7daceeaed603396805d81c9afd4cac4364cb40))
175
+ * Ensure runtime is preserved for late-configuration cases ([#538](https://github.com/newrelic/newrelic-browser-agent/issues/538)) ([229b8ed](https://github.com/newrelic/newrelic-browser-agent/commit/229b8ed0f4bc558cae62dd34ab6d32c302084d0b))
176
+ * Refactor usage of Array.from to address MooTools conflict ([#544](https://github.com/newrelic/newrelic-browser-agent/issues/544)) ([f1e6336](https://github.com/newrelic/newrelic-browser-agent/commit/f1e63367f653a957b0a401fbd21d24a1ca898bbd))
177
+
178
+ ## [1.232.1](https://github.com/newrelic/newrelic-browser-agent/compare/v1.232.0...v1.232.1) (2023-05-17)
179
+
180
+
181
+ ### Bug Fixes
182
+
183
+ * Add X-NewRelic-ID header only if defined ([#531](https://github.com/newrelic/newrelic-browser-agent/issues/531)) ([36ceedf](https://github.com/newrelic/newrelic-browser-agent/commit/36ceedf03e88ac0dc48eb9577bdceb8602f08359))
184
+ * Identify inline stack trace URLs more precisely ([#522](https://github.com/newrelic/newrelic-browser-agent/issues/522)) ([1aba92d](https://github.com/newrelic/newrelic-browser-agent/commit/1aba92dbaa57fb8254fa007f65b7173a716e2e8f))
185
+
186
+ ## [1.232.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.231.0...v1.232.0) (2023-05-08)
187
+
188
+
189
+ ### Features
190
+
191
+ * Add internal session metrics ([bcfe6ff](https://github.com/newrelic/newrelic-browser-agent/commit/bcfe6ffff9d0be583bbd9d5d6ef78265aaa753cb))
192
+ * Add new stateful Session Manager ([#464](https://github.com/newrelic/newrelic-browser-agent/issues/464)) ([32e1061](https://github.com/newrelic/newrelic-browser-agent/commit/32e1061646d89d6270f027acd5e35bc089323bda))
193
+ * Add query parameter supportability metrics ([#518](https://github.com/newrelic/newrelic-browser-agent/issues/518)) ([88c2d83](https://github.com/newrelic/newrelic-browser-agent/commit/88c2d83609c2b11aad81d4480fce25b007c4b4fa))
194
+ * Allow custom error grouping ([f95630d](https://github.com/newrelic/newrelic-browser-agent/commit/f95630dfbbb7234950fc37216c059218237eeb11))
195
+
196
+ ## v1.231.0
197
+
198
+ ### Omit CLS scores before web-vitals report them
199
+ Initial snapshots of CLS reported as 0s attached to timing metrics will be omitted, so as to "de-noise" the aggregate CLS dataset. This also temporarily addresses an edge case of long loading pages potentially sending a "final" CLS value of 0, inaccurately. The case of a final 0 CLS when a user only navigates away from the page has also been fixed.
200
+
201
+ ### Fix accepted argument type for `all` and `race` methods of `Promise`
202
+ The wrapped Promise's static `all` and `race` methods now work with iterators per native implementation, rather than only arrays.
203
+
204
+ ### Upgrade Navigation Timing API in `PageView` (RUM) call
205
+ The performance entry data sent for `PageView` now uses the Navigation Timing Level 2 API over the deprecated Level 1 API.
206
+
207
+ ### Fix typo in top-level API causing exception
208
+ An an uncaught reference exception was occurring on pages with more than one initialized agent due to a typo in the name of a variable (`returnsVals`).
209
+
210
+ ### Add null entry checks to certain web-vitals handlers
211
+ For LCP and FID, we will exclude the performance entry info when there are no entries given by web-vitals. This had thrown exceptions.
212
+
213
+ ### Remove previously added console logging measurements
214
+ This reverses performance impacts and exceptions introduced in the prior release by serializing console API arguments.
215
+
216
+ ### Rectify version reported by NPM agent implementations
217
+ Agents installed via the NPM method will report the correct semantic version in data harvests.
218
+
219
+ ### Fix exception when importing NPM package source code
220
+ An error was occurring related to a missing environment variable when importing from the NPM package source directly (versus via the CJS/ESM packages).
221
+
222
+ ## v1.230.0
223
+
224
+ ### Add persistence for custom attributes
225
+ Custom attributes may now optionally be persisted between page loads via session storage. The API method `setCustomAttribute` now takes a third parameter, which defaults to `false`. When `true`, this boolean indicates that the provided custom attribute should be persisted in session storage and restored on subsequent page loads. Session storage is subject to the [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) of the browser.
226
+
227
+ ### Add setUserId API
228
+ A new `setUserId` API method is now available. It defines a custom attribute containing a specified user ID, to be included in all payloads. The `setUserId` API is an extension of the `setCustomAttribute` API and automatically persists between page loads.
229
+
230
+ ### Fix npm package browser targets
231
+ The previous npm package release included code that was not compatible with browsers in our [supported browser list](https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/compatibility-requirements-browser-monitoring/#browser-types). The package exports will now default to code that matches our browser support list. The package will also include the source code for power users that would like more control over how the agent is built.
232
+
233
+ ### Fix npm package exports
234
+ Some dangling, unused, and non-existent imports and exports were causing issues with consuming the NPM package in some projects. These have been removed.
235
+
236
+ ### Fix npm package import for typescript projects
237
+ Fixed an issue where typescript projects attempting to import the browser agent library would not get proper auto-complete in the import statement and would receive module declaration errors. The browser agent will not use tsc to generate type definitions from the JavaScript code at build time. The package.json has been updated with appropriate type export declarations.
238
+
239
+ ### Add error catch around sendBeacon
240
+ Added error catch logic around the sendBeacon usage. In the event sendBeacon throws an error during the final harvest, the final harvest will attempt to fall back to the image data submission method.
241
+
242
+ ### Remove array reduce polyfill
243
+ Removed the array reduce polyfill in favor of the native browser array reduce method.
244
+
245
+ ## v1.229.0
246
+
247
+ ### Use semantic versioning scheme
248
+ The agent will now utilize semantic versioning for subsequent releases. The previous version (1228) will carry forward into 1.229.0, and so on.
249
+
250
+ ### Use `web-vitals` library for internal timing calculations
251
+ In an effort to align and standardize the timings the agent collects, the agent now uses the [Google CWV](https://www.npmjs.com/package/web-vitals) library to track page timings such as CLS, LCP, FCP, TTFB and more. See [Core Web Vitals documentation](https://web.dev/learn-core-web-vitals/) for more information.
252
+
253
+ ### Ship the Browser Agent repository to NPM
254
+ The Browser Agent repository will now be available as a pre-release NPM package. See [@newrelic/browser-agent](https://www.npmjs.com/package/@newrelic/browser-agent) for more information.
255
+
256
+ ## v1228
257
+
258
+ ### Fix negative offset timings
259
+ Fix an issue that caused session trace offset timings to be miscalculated in the early-page lifecycle, sometimes leading to negative "backend" timings.
260
+
261
+ ## v1227
262
+
263
+ ### Added INP and long tasks reporting
264
+ The interaction-to-next-paint metric is now calculated and reported at the end of user sessions, via the [Google CWV](https://github.com/GoogleChrome/web-vitals) library. In addition, long continuously executed and blocking scripts detected by the PerformanceLongTaskTiming API are also forwarded to New Relic. This latter functionality is `off` by default, until a curated UI experience is created to utilize this data.
265
+
266
+ ### Revert unwrapping of globals on agent abort
267
+ Partial revert of graceful handling change made in v1225 that unwrapped modified global APIs and handlers, which caused integration issues with other wrapping libraries and code.
268
+
269
+ ### Add internal metrics to evaluate feasibility page resource harvests
270
+ Internal metrics were added to track the feasibility and impact of collecting page resource information using the PerformanceObserver resource timings, such as scripts, images, network calls, and more.
271
+
272
+ ### Add resiliency around SPA interaction saving
273
+ Added resiliency code around SPA interaction node save functionality to ensure a cancelled interaction node without a parent further up the interaction tree does not cause an exception to be raised from the agent.
274
+
275
+ ### Collect supportability metrics at the end of page life
276
+ Collate all of the internal statistic metrics calls, which--of today--are sent at page start and periodically, into one call made when the end user is leaving the page.
277
+
278
+ ## v1226
279
+
280
+ ### Revert xhr deny list timeslice metrics
281
+ Customers were losing visibility into all calls on the page when denying timeslice metrics based on the deny list. This change reverts to the behaviour seen in all previous versions of the Browser Agent.
282
+
283
+ ### Enable back/forward cache
284
+ Updating the agent default configuration to enable the back/forward cache feature previously released in version 1222 by default.
285
+
286
+ ### Handle unhandledPromiseRejections more gracefully
287
+ The agent will attempt to handle niche objects throw from `unhandledPromiseRejection` events more gracefully. These cases could include objects with frozen or static properties, or custom extensions of the Error class without a `set` method in place.
288
+
289
+ ### Disable metrics for missing entitlement
290
+ Fixing issue where metrics harvesting was not being halted when the agent RUM call indicated the account did not have entitlement to the jserrors endpoint. Before this change, customers missing this entitlement would see network calls to the New Relic jserrors endpoint result in 403 or 409 errors.
291
+
292
+ ### All agents must make a connect call for NR1 entity synthesis
293
+ This change forces all agents to call ingest at runtime to ensure that entities can be synthesized in NR1. This particularly pertains to any bespoke agent builds that did not utilize the `page_view_event` feature.
294
+
295
+ ## v1225
296
+
297
+ ### Gracefully abort agent if not fully instantiated
298
+ When importing of agent code fails, as when content gets blocked, the agent will clean up memory, the global scope, and any wrapped or modified APIs as much as feasible.
299
+
300
+ ### Refactor wrapping of Promise object
301
+ The agent's wrapping of the `Promise` object has been refactored to address conflicts with third party libraries and to add newer methods available on the native object. The new wrapping implementation is more conventional and less error-prone.
302
+
303
+ ### Fix uncaught promise error introduced in v1223
304
+ In some cases of failure to import agent script chunk "629", an error was thrown rather than caught and logged as a warning. The uncaught promise error responsible for this unintended behavior has been fixed.
305
+
306
+ ### Resolve Google indexing of agent relative paths
307
+ In previous versions, the agent script included relative paths to its lazy-loaded chunks, which Googlebot picked up and attempted to index as pages. This change removes those relatives paths from the loader and centralizes our lazy chunk loading of agent features.
308
+
309
+ ## v1224
310
+
311
+ ### Support SPA, XHR, and session trace features on Chrome for iOS
312
+ Previously, the agent didn't collect SPA browser interactions, XHR events, or session trace data in Chrome for iOS, which uses the webkit engine with modifications. The agent now collects the same data in Chrome for iOS as in other supported browsers.
313
+
314
+ ### Fix multiple custom interaction end times
315
+ Fixed an issue where multiple custom interactions harvested at the same time would result in only one interaction being persisted in New Relic.
316
+
317
+ ### Prevent AJAX time slice metrics based on deny list
318
+ Prevent time slice metric collection for AJAX calls when such a call matches an entry in the AJAX deny list.
319
+
320
+ ### Bind navigator scope to sendBeacon
321
+ Some browser versions will throw errors if sendBeacon doesn't have the navigator scope bound to it. A fail-safe action of binding the navigator scope to sendBeacon was added to try to support those browsers.
322
+
323
+ ### Expose build version to newrelic global
324
+ The build version is exposed to the `newrelic` global object. You can access it with `newrelic.intializedAgents[<agentID>].runtime.version`.
325
+
326
+ ### Add automation for documentation site updates on new releases
327
+ A new release of the browser agent will automatically raise a PR to the documentation site with the relevant changelog items.
328
+
329
+ ### Preserve unhandledPromiseRejection reasons as human-readable strings in error payloads
330
+ The agent will attempt to preserve `unhandledPromiseRejection` reasons as human-readable messages on the Error payload that gets harvested. The previous strategy didn't always work, because `Promise.reject` can pass any value, not just strings.
331
+
332
+ ### Fix missing interactions for dynamic routes in Next/React
333
+ Fixed an issue where when using the SPA loader with Next/React, route changes that lazy loaded components wouldn't be captured. While the issue specifically called out Next/React, this should apply to Nuxt/Vue and Angular.
334
+
335
+ ### Fix interactions missing API calls in Angular
336
+ Fixed an issue where when using the SPA loader with Angular, route changes that contained API calls, via Angular resolver, wouldn't capture the xhr/fetch on the interaction. This works with eager and lazy routes in an Angular SPA.
337
+
338
+ ## v1223
339
+
340
+ ### Refactor loader architecture for improved developer experience
341
+ This architectural release simplifies file structure and refactors the way features are composed, in preparation for future developer experience improvements. These changes are not anticipated to have impact on agent behavior or functionality.
342
+
343
+ ## v1222
344
+
345
+ ### EXPERIMENTAL - Unblock instrumented pages from the back/forward cache (w/ feature flag)
346
+ An instrumented page's back-forward cache eligibility was hampered by the agent's `unload` listener, which will be _removed_ when a feature flag is on. With the `allow_bfcache` enabled in the `init` config, the agent's definition of (the end of) an user's session is more refined, and it will no longer be blocking the browser from utilizing its respective b/f cache.
347
+
348
+ ### Prevent feature from collecting and harvesting future data if account entitlements are invalid
349
+ The agent will now attempt to shut down an initialized feature if account entitlements are invalid. Accounts that lack entitlements to use certain endpoints will see many 403 errors in the console without this behavior. This behavior requires the Page View Event feature to be enabled.
350
+
351
+ ### Do not collect XHR events for data URLs
352
+ AJAX events for data URLs have not historically been collected due to errors in the agent when handling URLs without hostnames. Going forward, XHR calls to data URLs will not cause agent errors and will continue to be excluded from collection.
353
+
354
+ ### Reduce size of builds for modern browser targets
355
+ The agent is now compatible with _only modern web syntax (ES6+)_; **this reduces loader size for these browsers by 20% or more**. We target and test support for just the last ten versions of Chrome, Edge, Safari, and Firefox -- see [browser agent EOL policy](https://docs.newrelic.com/docs/browser/browser-monitoring/getting-started/browser-agent-eol-policy/) for more details.
356
+
357
+ ### Fix nrWrapper exclusion in error stack traces
358
+ Restoring previous functionality whereby the `nrWrapper` agent method should be excluded from JavaScript error stack traces.
359
+
360
+ ### Fix errors with global self redefinition
361
+ Fixing an issue where external code redefining the `self` global variable causes the agent async loading to fail and the agent to crash.
362
+
363
+ ### Fix check for sessionStorage object
364
+ Ensure the agent does not crash when sessionStorage is not available or when the quota has been exceeded or set to 0. Safari has been known to set the sessionStorage quota to 0 in private browsing windows.
365
+
366
+ ## v1221
367
+
368
+ ### Add infrastructure to run on web workers
369
+ The agent's infrastructure will now allow for the agent to be built to run on web workers for future projects.
370
+
371
+ ### Expose webpack library as output type "self" vs. "umd"
372
+ To address "mismatched anonymous define" errors thrown by RequireJS, the agent's webpack library output will no longer include UMD checks for CommonJS and AMD module environments, and will instead be exposed globally via `self`.
373
+
374
+ ### Fix custom attribute handling in cases where the info block is loaded after initialization
375
+ Fixed an issue where custom attributes could be cleared and reset if the info block was included on the page below the loader script. Our guidance still remains that **all configurations should be included on the page above the loader code**, however this is an attempt to do no harm when feasible for backwards compatibility.
376
+
377
+ ### Update JS error bucketing algorithm
378
+ The Agent will now take into account the error object type, message, and original stack trace when deciding on whether multiple JS errors should be bucketed together.
379
+
380
+ ### Detect Workflow Changes
381
+ PRs will run an action to detect workflow changes for a warning layer against vulnerability.
382
+
383
+ ### Fix initial page load interaction reporting with Nuxt
384
+ Fixed an issue where when using the SPA loader with Nuxt, the initial page load interaction was never being completed. This resulted in events like errors being retained in memory and never harvested because they were tied to an incomplete interaction.
385
+
386
+ ### Fix error with jsPDF library and SPA agent
387
+ Fixed an issue with the jsPDF library where it was not correctly detecting browser native support for Promises due to our wrapper. This resulted in an exception and jsPDF not generating the PDF. This issue is not present with the pro or lite agent.
388
+
389
+ **Note**: This issue does not affect the pro or lite agent. This change allows the jsPDF library to function correctly when the spa agent is used. However, it does cause an internal error within the agent to be generated. This error does not break the agent, jsPDF, or other functionality. The issue is planned to be addressed in a future update.
390
+
391
+ ### Ship automated PR builds to internal dev components for comparison with stable build
392
+ Pull requests will now generate and ship a build which gets consumed by NR1 `dev` components
393
+
394
+ ## v1220
395
+
396
+ * Internal NR Platform release date: 10/5/2022
397
+ * Production APM-injected release date: 10/6/2022
398
+ * Production Standalone release date: TBD
399
+
400
+ ### Capture unhandled Promise rejections
401
+ The Agent will now observes and captures __*unhandled*__ Promise rejections as JavaScript Error objects.
402
+
403
+ ### Remove non-ASCII characters from builds
404
+ Certain dependencies were appending non-ASCII characters to build files. These characters were affecting older Python agent implementations downstream that worked to encode the agent snippet. The build files are now checked and cleaned of non-ASCII characters before shipping.
405
+
406
+ ### Removed 3rd Party Cookies
407
+
408
+ The browser agent no longer uses 3rd party cookies to maintain and track session information. 1st party implementation using `window.sessionStorage` is now used, which is automatically cleared when a page session ends.
409
+
410
+ ### LCP is no longer reported on initialliy hidden pages
411
+
412
+ LCP metrics are no longer reported on pages whose state is hidden at load time, such as tabs refreshing in the background of a focused tab.
413
+
414
+ ### Async Module Loading
415
+
416
+ Individual features of the browser agent can now be dynamically loaded, enabled, or disabled at runtime.
417
+
418
+ ### Removal of script tag injection
419
+
420
+ The agent no longer inserts other features into the page via a script tag insertion. It now uses network requests to instantiate other code modules.
421
+
422
+ ### Updated test process
423
+ In an effort to better support the majority of our traffic, the test suite required to merge PRs has been updated to run against the __latest 10 major versions__ of Chrome, Firefox, Edge, Android, and the __latest 5 major versions__ of Safari and iOS. As part of this process, outdated code and polyfill libraries aimed at supporting deprecated browsers are no longer included in production builds by default.
424
+
425
+ ### Polyfilling
426
+
427
+ Polyfills for IE11 have been included with the agent bundle.
428
+
429
+ ### Fixed issue with BrowserInteraction nodes generating circular references
430
+
431
+ BrowserInteractions no longer generate circular trees when they are self referential
432
+ ## 0.0.9-beta.121 (2022-05-27)
433
+ **Note:** Version bump only for package newrelic
434
+
435
+ ## v1216
436
+
437
+ * Internal NR Platform release date: 4/19/2022
438
+ * Production APM-injected release date: 4/20/2022
439
+ * Production Standalone release date: 4/27/2022
440
+
441
+ ### Introduced obfuscation mechanism to payloads
442
+
443
+ Added internal mechanism for applying regex and replacement rules to all strings in payloads to obfuscate before sending to ingest.
444
+
445
+ ### Automatically obfuscate `file://` protocol
446
+
447
+ A change has been implemented in our handling of applications hosted locally on a `file://` protocol. For security reasons, we can not send payloads that contain file information, so our previous implementation revolved around completely shutting the agent down when `file://` protocols were detected. This change introduces the ability to obfuscate all `file://` paths from our payloads before sending to ingest.
448
+
449
+ ### Fixed issue with trace ID random hex character length
450
+
451
+ The final character in trace ID hex generation was returning as `undefined`, which translated to always be `0` (`undefined & 15 === 0`). This change fixes this final character and ensures it is valid.
452
+ ## v1215
453
+
454
+ * Internal NR Platform release date: 01/24/2021
455
+ * Production APM-injected release date: 01/25/2021
456
+ * Production Standalone release date: 01/31/2021
457
+
458
+ ### Collect supportability metrics for front end frameworks
459
+
460
+ Added front end framework detection metrics to help guide future priorities for browser agent features. The following front end frameworks will now be detected and analyzed:
461
+ - React
462
+ - Angular
463
+ - AngularJS
464
+ - Backbone
465
+ - Ember
466
+ - Vue
467
+ - Meteor
468
+ - Zepto
469
+ - Jquery
470
+
471
+ ## v1214
472
+
473
+ * Internal NR Platform release date: TBD
474
+ * Production APM-injected release date: TBD
475
+ * Production Standalone release date: TBD
476
+
477
+ ### Exclude Data URL requests from Ajax events and metrics
478
+
479
+ Previously, XMLHttpRequest and Fetch calls made with [Data URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) could prevent the agent from harvesting data.
480
+
481
+ ### Updated LCP identifying attributes to have less generic names
482
+
483
+ Renamed LargestContentfulPaint PageViewTiming attributes from `url` to `elUrl` and `tag` to `elTag`. This makes the names less generic and as a result less likely to collide with custom attributes.
484
+
485
+ ## v1213
486
+
487
+ * Internal NR Platform release date: 12/06/2021
488
+ * Production APM-injected release date: n/a
489
+ * Production Standalone release date: n/a
490
+
491
+ ### Included page view timing data in session trace payload
492
+
493
+ The agent will now include core web vitals page view timings in the session trace waterfall payload. If observed, events such `FI`, `FID`, `LCP`, `FP`, `FCP` etc. will now be available in the browser `Session Traces` UI grouped under the `timing` type.
494
+
495
+ ### Added session trace IDs to harvests
496
+
497
+ If a session trace ID exists, it will now be appended to harvests for the linking of session-related datasets downstream. This ID will be appended to any payload that exists at the time the session ID is determined, meaning the only harvests which won't have a session ID are `PageView` and `Initial Page Load Browser Interaction`.
498
+
499
+ ### Added NetworkInformation attributes to LCP & FI
500
+
501
+ The core web vitals metrics `LCP` and `FI` will now include metadata describing the [network information](https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation) observed on the page. This includes [network type](https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/type), [round trip time (rtt)](https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/rtt) and [downlink](https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/downlink).
502
+
503
+ ### Added element identification attributes to LCP
504
+
505
+ `LCP` metrics will now also report a [tag name](https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName) and an [image URL](https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint/url) if present (for LCP triggered by images).
506
+
507
+ ## v1212
508
+
509
+ * Staging release date: 11/04/2021
510
+ * Production APM-injected release date: 11/08/2021
511
+ * Production Standalone release date: 11/16/2021
512
+
513
+ ### Updated LCP tracking
514
+
515
+ Largest Contentful Paint will now stop being tracked when page visibility changes to hidden. This aligns with the [web-vitals](https://github.com/GoogleChrome/web-vitals) library.
516
+
517
+ ### Added passive flag to addEventListener calls
518
+
519
+ Using the addEventEventListener without the passive flag for the `touchstart` event is flagged in Lighthouse. The passive flag is now applied to all addEventListener calls in the agent.
520
+
521
+ ### Fixed issue with Array.isArray() call
522
+
523
+ `Array.isArray()` call is not supported on old browsers and can cause a runtime error. This call has been replaced with an alternative that works on older browsers.
524
+
525
+ ### Fixed issue with null function argument in the addEventListener API
526
+
527
+ When a null value was passed in to the addEventListener API, the agent would report an internal error. This edge case is now being handled.
528
+
529
+ ### Fixed issue with Ajax deny list
530
+
531
+ There was an edge case where certain ajax calls could have been excluded when they should not have been. This is now handled correctly.
532
+
533
+ ### Added support for collecting internal/supportability metrics
534
+
535
+ The agent can now send metrics that capture information about how the agent itself is working internally.
536
+
537
+ ### Added agent supportability metrics for tracking API usage
538
+
539
+ ### Added agent supportability metrics for tracking excluded Ajax events
540
+
541
+
542
+ ## v1211
543
+
544
+ * Staging release date: 09/27/2021
545
+ * Production APM-injected release date: 09/29/2021
546
+ * Production Standalone release date: 10/21/2021
547
+
548
+ ### AjaxRequest events for all XHR/fetch requests
549
+
550
+ Previously, XHR/fetch requests were captured as AjaxRequest events only when they were part of a route change. With this change, all requests will be captured as events. This feature can be further configured by specifying which requests should not be collected.
551
+
552
+ ### Span events are for all XHR/fetch requests
553
+
554
+ Previously, Span events were generated only for XHR/fetch requests that were part of a route change. With this change, all requests will be captured as Spans.
555
+
556
+ ### Update to Cumulative Layout Shift calculation
557
+
558
+ The CLS calculation has been updated to use session windows in order to align with Google Chrome tooling (Lighthouse, PageSpeed Insights, CrUX). For more information, see this [blog post on web.dev](https://web.dev/cls-web-tooling/).
559
+
560
+ ### Fixed issue with clearing Resources Buffer
561
+
562
+ The agent no longer calls the `clearResourceTimings` API, which had the potential to affect other scripts from accessing all resources. Instead, it now uses the `PerformanceObserver` API to collect information about resources.
563
+
564
+ ### Removed Opera from test matrix
565
+
566
+
567
+ ## v1210
568
+
569
+ * Staging release date: 07/01/2021
570
+ * Production APM-injected release date: 07/06/2021
571
+ * Production Standalone release date: 07/19/2021
572
+
573
+
574
+ ### PageHide PageViewTiming events are now accounted for during page unload events
575
+ `PageHide` PageViewTiming events are used to query CLS values. In cases where the page was never hidden, inconsistencies would arise because the PageViewTiming event with that type would not be collected. Now when `pageUnload` fires, if a `pageHide` PageViewTiming has not already been set, it will set it to the time of unload.
576
+
577
+ ### Perfect Cumulative Layout Scores (CLS) are now recorded as 0
578
+ Perfect CLS scores were being ignored, because a score was only recorded when content shifted. This change reports perfect scores as 0, fixing inconsistent CLS queries.
579
+
580
+ ### Record fetch calls as metrics
581
+ Fetch calls are currently only recorded as AjaxRequest events with SPA browser interactions. This change records fetch calls as AJAX metrics, which will make them visible in the AJAX UI charts.
582
+
583
+
584
+ ## v1209
585
+
586
+ * Staging release date: 05/24/2021
587
+ * Production APM-injected release date: 05/26/2021
588
+ * Production Standalone release date: 6/2/2021
589
+
590
+
591
+ ### Doubled the limit of PageAction events per harvest
592
+ Up to 120 PageAction events can be harvested every 30 seconds.
593
+
594
+ ### Prevent duplicate session trace nodes
595
+ The final Session Trace node in a harvest, captured using the Resource Timing API, is no longer duplicated in the subsequent harvest.
596
+
597
+ This issue lead to 1 duplicate node in a Session Trace, every 10 seconds, over the duration of the trace.
598
+
599
+ ### Memory overhead when agent script
600
+ Fixed a memory leak in the agent when the network request to load the second part of the agent is blocked.
601
+
602
+ ### Update to file protocol restriction
603
+ Fixed an error thrown in the console when the agent is loaded using the `file://` protocol caused by features in the agent trying to run when others had been aborted.
604
+
605
+ ### Removed call to /ping endpoint
606
+ Removed a legacy behavior used to ensure network connection was kept alive in IE 7/8/9.
607
+
608
+ ### setTimeouts without callback functions
609
+ Fixed an issue where route change Browser Interactions would wait forever if a setTimeout was called without a callback function ([passing code in as a string in the first argument](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#syntax)) as the first argument.
610
+
611
+ ### Cypress.io
612
+ Fixed a conflict between the Browser agent and the Cypress.io test framework when instrumenting XMLHttpRequest.
613
+
614
+ ## v1208
615
+
616
+ * Staging release date: 03/10/2021
617
+ * Production APM-injected release date: 03/11/2021
618
+ * Production Standalone release date: 03/22/2021
619
+
620
+ ### Retry harvest network requests
621
+
622
+ The agent retries harvest XHR requests when it receives 408, 429, 500 or 503 response codes.
623
+
624
+ ### File protocol disallowed
625
+
626
+ The agent will not report any data when it is on a page opened from a local file.
627
+
628
+ ## v1198
629
+
630
+ * Staging release date: 01/29/2021
631
+ * Production APM-injected release date: 02/01/2021
632
+ * Production Standalone release date: 02/08/2021
633
+
634
+ ### Send metrics harvest as POST body
635
+
636
+ The agent now sends JS errors and AJAX metrics data as body of a standard XHR request.
637
+
638
+ ## v1194
639
+
640
+ * Staging release date: 01/07/2021
641
+ * Production APM-injected release date: 01/11/2021
642
+ * Production Standalone release date: 01/19/2021
643
+
644
+ ### Optimized instrumentation of promises
645
+
646
+ The promise instrumentation has been updated to reduce performance overhead on web sites that use a large number of promises.
647
+
648
+ ### Fixed issue with SPA overhead
649
+
650
+ In a rare case where large number of callbacks are executed at the end of an interaction, the agent could cause a significant overhead. This has been fixed in this version of the agent.
651
+
652
+ ### Fixed issue with Fetch instrumentation
653
+
654
+ Added handling for the use of fetch with a URL object.
655
+
656
+
657
+ ## v1177
658
+
659
+ * Staging release date: 08/18/2020
660
+ * Production APM-injected release date: 08/19/2020
661
+ * Production Standalone release date: 08/26/2020
662
+
663
+ ### [Timing] Added pageHide and windowLoad PageViewTiming events
664
+
665
+ The agent now reports two additional types of timing values as PageViewTiming events - pageHide and windowLoad. The `pageHide` value represents the first time that the page was hidden (e.g. by switching browser tab). Note that we only collect the first pageHide events at this point. This timing is useful alongside with its CLS (Cumulative Layout Shift) attribute.
666
+
667
+ In addition, the agent now also collects the legacy window load value as a PageViewTiming event. This is useful to query and visualize this metric alongside other types of timing events.
668
+
669
+ ### [Timing] Added Cumulative Layout Shift
670
+
671
+ The agent now collects CLS (Cumulative Layout Shift) values as attributes on PageViewTiming events. CLS measures how much layout of the page shifts and is represented as a score. All types of PageViewTiming events (except FP and FCP) include this attribute, showing the score up until the point the timing measurement was taken.
672
+
673
+ ### [Timing] Fixed unrealistic high values for First Interaction
674
+
675
+ Older browsers report Event.timeStamp as an epoch time instead of value relative to the page navigation start. The agent took this into account for FID (First Input Delay) timing values but not for FI (First Interaction), which goes hand in hand with FID. With this fix, there should no longer be unrealistic outlier values for FI values.
676
+
677
+ ## v1173
678
+
679
+ * Staging release date: 07/23/2020
680
+ * Production APM-injected release date: 07/28/2020
681
+ * Production Standalone release date: 08/03/2020
682
+
683
+ ### [DT] W3C TraceContext headers
684
+
685
+ The agent can now use the W3C TraceContext headers in addition to and instead of the newrelic proprietary header.
686
+
687
+ ## v1169
688
+
689
+ * Staging release date: 05/20/2020
690
+ * Production APM-injected release date: 05/28/2020
691
+ * Production Standalone release date: 06/01/2020
692
+
693
+ ### [Privacy] Added ability to enable/disable cookies
694
+
695
+ The agent now accepts new configuration `privacy.cookies_enabled`. When it is set to false, the agent does not write any cookies, and it also notifies the intake server to not return a cookie. This enables customers to comply with GDPR privacy rules around cookies.
696
+
697
+ ### [xhr] Fixed issue with document XHR requests
698
+
699
+ In some cases, the agent was causing a DOMException error when getting size of XHR responses for requests with `document` response type.
700
+
701
+ ## v1167
702
+
703
+ * Staging release date: 02/07/2020
704
+ * Production APM-injected release date: 02/07/2020
705
+ * Production Standalone release date: 02/07/2020
706
+
707
+ ### [Timing] Fixed a script error on old IE browsers
708
+
709
+ Resolved a bug that caused a script error when the windowUnload event fired. This issue affected only Internet Explorer prior to version 9.
710
+
711
+ ## v1163
712
+
713
+ * Staging release date: 02/03/2020
714
+
715
+ ### [Timing] Largest Contentful Paint
716
+
717
+ The agent is now capturing Largest Contentful Paint (LCP) as a new type of the PageViewTiming event. For more information about LCP, see [this article](https://web.dev/lcp/) from Google.
718
+
719
+ ### [Timing] Window Unload timing
720
+
721
+ The agent is now capturing the timing of the [Window unload](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event) event as a new type of the PageViewTiming event.
722
+
723
+ ### [XHR] Fixed capturing response size for requests with *ms-stream* response type
724
+
725
+ Requests with ms-stream data were previously causing errors in the agent.
726
+
727
+ ## v1158
728
+
729
+ * Staging release date: 12/18/2019
730
+ * Lite release date (US): 12/19/2019
731
+ * Lite release date (EU): 12/19/2019
732
+ * Pro / Enterprise release date: 12/19/2019
733
+ * Standalone/Current release date: 12/30/2019
734
+
735
+ ### [DT] Distributed Tracing for cross-origin AJAX calls
736
+
737
+ The agent can now add the `newrelic` DT header to outgoing cross-origin AJAX calls. The origins that the agent should add headers to must be defined in the `distributed_tracing.allowed_origins` configuration section.
738
+
739
+ ## v1153
740
+
741
+ * Staging release date: 11/08/2019
742
+ * Lite release date (US): 11/14/2019
743
+ * Lite release date (EU): 11/19/2019
744
+ * Pro / Enterprise release date: 11/19/2019
745
+ * Standalone/Current release date: 11/21/2019
746
+
747
+ ### [Timing] New PageViewTiming Event to capture User Centric Perceived Performance metrics in real time
748
+
749
+ With this release, we are tying together the visual and responsiveness performance for our customer's site. With every page view, the agent is now capturing the time of the first interaction along with FID (First Input Delay). The existing paint timing metrics (First Paint and First Contentful Paint) are now collected even when they occur after the load event. All of these new metrics are captured on the new PageViewTiming events, available in Insights. This new event type is available for all agents, but requires a Browser Pro subscription.
750
+
751
+ ### [DT] Distributed Tracing for same-origin AJAX calls
752
+
753
+ The agent can now capture Span events for DT traces. This is accomplished by adding the custom `newrelic` header to outgoing AJAX calls. In this release, the agent adds this header only to same-origin requests. The feature must be enabled using the `distributed_tracing` configuration section.
754
+
755
+ ## v1149
756
+
757
+ * Staging release date: 11/01/2019
758
+ * Lite release date: 11/05/2019
759
+
760
+ ### [Timing] Added First Interaction with delay (FID), improved FP and FCP accuracy
761
+
762
+ With every page view, the agent is now capturing the time of the first interaction along with FID (First Input Delay). The existing paint timing metrics (FP and FCP) are now collected even when they occur after the load event. All of these new metrics are captured on the new PageViewTiming events in Insights.
763
+
764
+ ### [SPA] Browser interactions now wait on external scripts to finish loading
765
+
766
+ Browser interactions measure the time of all Javascript code that runs as a result of an interaction. The agent now includes the time it takes to load and execute external scripts. This is useful, for example, when the code started by an interaction must be loaded first (lazy loading).
767
+
768
+ ## v1130
769
+
770
+ * Staging release date: 07/11/2019
771
+ * Lite release date: 07/16/2019
772
+ * Pro / Enterprise release date: 07/18/2019
773
+ * Standalone/Current release date: 07/25/2019
774
+
775
+ ### [RUM][SPA] First Paint and First Contentful Paint values are now being collected
776
+
777
+ For browsers that implement the Paint Timing API, the agent will now collect paint timing values and make them available as attributes on the PageView and BrowserInteraction (initial-load only) events.
778
+
779
+ ### [SPA] Updated instrumentation of the History API
780
+
781
+ The history API methods are now instrumented on the History object constructor. This is to ensure that our instrumentation does not override other libraries that wrap these methods.
782
+
783
+ ### [SPA] Updated instrumentation of DOM API methods
784
+
785
+ The DOM API methods used for JSONP instrumentation are now instrumented on the Node object prototype (as opposed to HTMLElement lower in the prototype chain). This is to ensure that our instrumentation does not override other libraries that wrap these methods.
786
+
787
+ ## v1123
788
+
789
+ * Staging release date: 04/17/2019
790
+ * Lite release date: 04/19/2019
791
+ * Pro / Enterprise release date: 04/19/2019
792
+ * Standalone/Current release date: 04/26/2019
793
+
794
+ ### [XHR] Fixed capturing status code for Angular apps
795
+
796
+ Angular calls abort() on the XHR object after it successfully finishes. This was seen by our instrumentation as a call that did not finish, and as a result status code was set to `0`. This fix addresses this use case by capturing status code earlier in the call stack.
797
+
798
+ ## v1118
799
+
800
+ * Staging release date: 01/02/2019
801
+ * Lite release date: 01/04/2019
802
+ * Pro / Enterprise release date: 01/08/2019
803
+ * Standalone/Current release date: 01/14/2019
804
+
805
+ ### [ERR] Custom attributes are now included on JavascriptError events.
806
+
807
+ This includes custom attributes added using the setCustomAttribute(), interaction.setAttribute(), and noticeError() APIs.
808
+
809
+ ### [API] The noticeError() API now accepts custom attributes as an additional argument.
810
+
811
+ ### [RUM] The page URL query param now contains value of the URL at the time the RUM call is made
812
+
813
+ Currently, we are using the referer header value from the RUM call for transaction naming and for URL attributes on Insights events. The agent also sends the URL value as a query parameter with the RUM call to get around HTTP header stripping. This update brings the query parameter value on a par with the HTTP header by capturing it at the time the RUM request is made (to account for redirects).
814
+
815
+ ## v1099
816
+
817
+ * Staging release date: 10/02/2018
818
+ * Lite release date: 10/04/2018
819
+ * Pro / Enterprise release date: 10/08/2018
820
+ * Standalone/Current release date: 10/17/2018
821
+
822
+ ### [SPA] Action Text
823
+
824
+ The agent now captures the text of the HTML element that was clicked when a browser interaction started. This value is stored as an attribute called actionText on the BrowserInteraction events.
825
+
826
+ There is also a new API `actionText`, which can be used to manually set the action text value.
827
+
828
+ ### [Harvest] The agent now uses a fallback method for collecting data when sendBeacon fails
829
+
830
+ Browsers can return false from sendBeacon call when it cannot be completed. The agent now detects it and falls back to a different method to ensure data is captured.
831
+
832
+ ### [ERR] Fixed calculating stackHash value in Safari 10 and 11
833
+
834
+ The stackHash value was not being properly calculated for global errors in Safari 10 and 11, causing incorrect grouping of errors across all browsers.
835
+
836
+ ### [SPA] Fixed issue with calling fetch without any arguments
837
+
838
+ On certain versions of the Safari browser, calling fetch without any arguments is permitted. Other browsers, in contrast, do not allow this and throw an error. This also prevented the agent from working properly.
839
+
840
+ ### [SPA] Removed response size calculation for streaming fetch calls
841
+
842
+ Previously, the agent cloned the response of a fetch call and read the response body in order to capture its size. In certain versions of the Safari browser this caused other clone calls to fail. As a result, the agent now only uses the `content-length` header, when available, to capture response size.
843
+
844
+ ## v1071
845
+
846
+ * Staging release date: 11/14/2017
847
+ * Lite release date: 11/28/2017
848
+ * Pro / Enterprise release date: 12/04/2017
849
+ * Standalone/Current release date: 12/08/2017
850
+
851
+ ### [SPA] Add JS Errors to Browser Interactions
852
+
853
+ When a JS error occurs inside a browser interaction event, the error will now be
854
+ associated with the interaction via Insights attributes. The JavaScriptError Insights
855
+ event will have `browserInteractionId` and `parentEventId` attributes, and BrowserInteraction,
856
+ AjaxRequest and BrowserTiming events will have `browserInteractionId`, `eventId`, and `parentEventId`
857
+ attributes.
858
+
859
+ ### [SPA] Fixed JSONP Safari bug
860
+
861
+ Previously, the agent would cause Safari browsers to lock up when JSONP requests
862
+ returned large data. The agent no longer calculates JSONP response size.
863
+ https://newrelic.atlassian.net/browse/JS-3486
864
+
865
+ ## v1059
866
+
867
+ * Staging release date: 09/27/2017
868
+ * Lite release date: 10/02/2017
869
+ * Pro / Enterprise release date: 10/04/2017
870
+ * Standalone/Current release date: 10/11/2017
871
+
872
+ ### [SPA] Add JSONP Support
873
+
874
+ Browser Interactions that include JSONP requests are now correctly tracked.
875
+ Previously, browser interactions that included JSONP were ended early and not
876
+ included in the `Breakdowns` tab.
877
+
878
+ ### [SPA] Fixed a compatibility issue with zone.js
879
+
880
+ When New Relic and Zone.js v0.8.13 were used together, the context (`this`) was not
881
+ being set correctly in `addEventListener` calls.
882
+
883
+ ### [Harvest] Correctly send data when methods aren't wrappable
884
+
885
+ When XHR was not wrappable, the agent did not send data to the collector via XHR.
886
+ We are now correctly sending the data if XHR exists on the page, even if it's not
887
+ wrappable.
888
+
889
+ ## v1044
890
+
891
+ * Staging release date: 06/30/17
892
+ * Lite release date: 07/05/17
893
+ * Pro / Enterprise release date: 07/10/17 1:20PM Pacific
894
+ * Standalone/Current release date: 07/17/17 9:15AM Pacific
895
+
896
+ ### [SPA] Improve aggregator performance
897
+
898
+ The agent verifies interactions are complete by setting and clearing multiple
899
+ timers. Previously, the agent would make many unnecessary calls to clearTimeout,
900
+ and will noow only clear timers when appropriate.
901
+
902
+ ### [STN] Protect against custom events
903
+
904
+ When the agent determine the event origin for Session Traces. In some libraries,
905
+ that use custom event wrappers, when the agent calls `target` on an event it can
906
+ throw an exception. The agent will now catch the exception when building the
907
+ Session Traces.
908
+
909
+ ## v1039
910
+
911
+ * Staging release date: 06/08/17
912
+ * Lite release date: 06/13/17
913
+ * Pro / Enterprise release date: 06/15/17
914
+ * Standalone/Current release date: 06/22/17
915
+
916
+ ### [SPA] Do not instrument SPA without wrappable XHR
917
+
918
+ On a mobile Safari browser all XHR's are not wrappable, resulting in errors in our agent. This change will no longer instrument SPA on these devices.
919
+
920
+ ### [setTimeout] Support setTimeout with a string duration
921
+
922
+ When you call `setTimeout` with a string as the duration, browsers will cast this as a number, but the agent did not handle this correctly. We are now handling this case correctly.
923
+
924
+ ### [XHR] Work around mutation observer memory leak in IE 11
925
+
926
+ We have discovered that MutationObserver in IE causes a memory leak, so the agent now will prefer `setImmediate` for IE, and use a resolved promise to schedule the wrapping in Edge (and other browsers that support promises).
927
+
928
+ ### [SPA] Handle short recursive timers
929
+
930
+ Some libraries recursively set timers that left our interactions open. The agent now handles this by reducing the max time allowable to be included in the interaction.
931
+
932
+ ## v1026
933
+
934
+ * Staging release date: 03/07/17
935
+ * Lite release date: 03/09/17
936
+ * Pro / Enterprise release date: 03/13/17
937
+ * Standalone/Current release date: 03/20/17
938
+
939
+ ### [INS] Increase harvest interval from 10s to 30s
940
+
941
+ Currently, we limit PageAction events to 120 per page load and only 20 events per harvest cycle, resulting in
942
+ dropped data if a user sends more than 20 pageAction events in a single burst. Increasing the harvest time
943
+ to 30 seconds also increases the event buffer, allowing users to send up to 60 events per harvest.
944
+
945
+ ### Improve data accuracy by using a monotonic clock
946
+
947
+ The agent uses the system clock to calculate some timings, and since the system clock can change
948
+ over the lifecycle of a page, the agent will occasionally report inaccurate or unexpectedly negative values.
949
+ Going forward, the agent will use `perfomance.now()`, which is a monotonically increasing clock that starts
950
+ from navigationStart. This change will result in more accurate timing for modern browsers.
951
+
952
+ ### [wrap-event] Preserve event listener functions when the agent doesn't load correctly
953
+
954
+ `add-` and `removeEventListener` should function the same whether the agent is present or not. This change completes
955
+ the bug fix from v993.
956
+
957
+ ## v1016
958
+
959
+ * Staging release date: 01/06/17
960
+ * Lite release date: 01/10/17
961
+ * Pro / Enterprise release date: 01/13/17
962
+ * Standalone release date: 01/19/17
963
+ * Current release date: 01/19/17
964
+
965
+ ### [Sourcemaps] Release ID's API Renamed
966
+
967
+ The release api was renamed from `addReleaseId` to `addRelease`, however the arguments did not change.
968
+
969
+ ### [submit-data] XHR With Credentials
970
+
971
+ Previously, when the agent would send data using an XHR, it would feature-check the `withCredentials` property and set it to `true` if it was available. However, older versions of IE do not allow modification of the `withCredentials` property on unsent XHRs. The agent now wraps the property assignment in a try/catch block to prevent errors.
972
+
973
+ ## v1009
974
+
975
+ * Staging release date: 11/18/16
976
+ * Lite release date: TBD
977
+ * Pro / Enterprise release date: TBD
978
+ * Standalone release date: TBD
979
+ * Current release date: TBD
980
+
981
+ ### Release ID's API
982
+
983
+ A new API was added that allows the client to inform us what version of their JavaScript is currently being ran, so they can access a richer error feature by helping match up which source maps can be used.
984
+
985
+ ### Scroll Listener
986
+
987
+ Previously, the wrapped scroll event listener did not take advantage of an available performance optimization: the passive annotation. By including this annotation, our wrapped scroll listener will allow a non-blocking, smooth scrolling action.
988
+
989
+ ## v998
990
+
991
+ * Staging release date: 10/27/16
992
+ * Lite release date: 11/1/16
993
+ * Pro / Enterprise release date: 11/3/16
994
+ * Standalone release date: 11/10/16
995
+ * Current release date: 11/10/16
996
+
997
+ ### [EE] - Fixed how we handle backlog draining
998
+
999
+ A series of changes created an issue that caused the event-emitter to drop the
1000
+ backlog after 30 seconds.
1001
+
1002
+ ## v995
1003
+
1004
+ * Staging release date: 10/4/16
1005
+ * Lite release date: 10/5/16
1006
+ * Pro / Enterprise release date: 10/10/16
1007
+ * Standalone release date: TBD
1008
+ * Current release date: TBD
1009
+
1010
+ ### [wrap-event] Fixed a bug with addEventListener wrapping introduced in v993.
1011
+
1012
+ Previously Objects implementing the EventListener interface which were registered for multiple events, could only be removed for the last event they were registered for.
1013
+
1014
+ ## v993
1015
+
1016
+ * Staging release date: 9/22/16
1017
+ * Lite release date: TBD
1018
+ * Pro / Enterprise release date: TBD
1019
+ * Standalone release date: TBD
1020
+ * Current release date: TBD
1021
+
1022
+ ### [EE] Fixed a compatibility issue with zone.js
1023
+
1024
+ Previously when the agent and zone.js were both included on a page, additional
1025
+ event handlers would be triggered twice. For example, when event handlers were
1026
+ added as properties, such as `onreadystatechange`, these handlers would be
1027
+ triggered twice in some browsers. This issue has now been resolved.
1028
+
1029
+ ### [wrap-function] Fixed a bug with cross-frame callbacks
1030
+
1031
+ Previously, when adding event handlers for events in iframes, the agent
1032
+ would attempt to wrap the provided callbacks. When the wrapping logic called
1033
+ the callback belonging to another frame, a permissions exception would be
1034
+ thrown. The agent will now only wrap callbacks created in the same frame.
1035
+
1036
+ ### [EE] Agent no longer leaks memory when it does not load correctly
1037
+
1038
+ Previously, the agent would continue to buffer events to be processed and
1039
+ harvested, even if the aggregator portion of the agent failed to load. The agent
1040
+ now will clear the buffers and stop emitting events if it detects a failure, or
1041
+ if the rum request has not completed within 30 seconds of the load event.
1042
+
1043
+ ### [INS] Agent no longer mutates the attributes object passed to the `addPageAction` API
1044
+
1045
+ Previously the agent would mutate the attributes object passed to add page actions
1046
+ by adding the default and page attributes onto this object.
1047
+
1048
+ ### [API] Added the `setCurrentRouteName` API method
1049
+
1050
+ The agent now has an api method to set the current route name for the page.
1051
+ This api can be used to set the `previousRouteName` and `targetRouteName` for
1052
+ `BrowserInteraction` events.
1053
+
1054
+ ### [Harvest] Disabled insecure communication with the router
1055
+
1056
+ Previously the agent would send rum data to the router without TLS if the
1057
+ request was initiated from an insecure page. Now the agent will always use
1058
+ TLS connection when transmitting data.
1059
+
1060
+ ## v974
1061
+
1062
+ * Staging release date: 8/16/2016
1063
+ * Lite release date: 8/18/2016
1064
+ * Pro / Enterprise release date: 8/18/2016
1065
+ * Standalone release date: 8/24/2016
1066
+ * Current release date: 8/24/2016
1067
+
1068
+ This release adds a new setErrorHandler api to agent which allows
1069
+ applications to see the errors collected by the agent, and optionally
1070
+ ignore them.
1071
+
1072
+ ## v971
1073
+
1074
+ * Staging release date: 8/10/2016
1075
+ * Lite release date: 8/15/2016
1076
+ * Pro / Enterprise release date: 8/17/2016
1077
+ * Standalone release date: TBD
1078
+ * Current release date: TBD
1079
+
1080
+ ### [SPA] Add support for keyboard change events
1081
+
1082
+ Browser interaction events are now triggered by keyboard events as part of
1083
+ creating the interaction.
1084
+
1085
+ ### Change harvest to not use sendBeacon
1086
+
1087
+ We now use the `sendBeacon` native API only for page unload.
1088
+ This api restricts the amount of data it can send, so we will use
1089
+ xhr when it is available and save `sendBeacon` for `unload` events.
1090
+
1091
+ ### [SPA] Browser Timing Events now have Traced Callback Duration
1092
+
1093
+ We started sending back traced callback durations with the browser timing
1094
+ events. This is to match the attributes of other events.
1095
+
1096
+ ## v963
1097
+
1098
+ * Staging release date: 7/5/2016
1099
+ * Lite release date: 7/6/2016
1100
+ * Pro / Enterprise release date: 7/7/2016
1101
+ * Standalone release date: TBD
1102
+ * Current release date: TBD
1103
+
1104
+ ### [SPA] Finalize the browser interaction api
1105
+
1106
+ Previously the browser interaction api was only available in
1107
+ the spa loader used by our beta customers. The stubs for the api
1108
+ are now available in all loaders to allow switching between
1109
+ loaders without worrying about calling unavailable apis.
1110
+
1111
+ ### [SPA] Remove stubs for deprecated interaction api
1112
+
1113
+ Previously the browser interaction stubbed out a deprecated version
1114
+ of the interaction api that was used briefly by beta customers. In
1115
+ this release this deprecated api is being removed completely.
1116
+
1117
+ #### [SPA] Update fetch instrumentation
1118
+
1119
+ Previously the agent did not properly wrap the fetch api during
1120
+ browser interactions. The agent now correctly wraps fetch, and the
1121
+ the body getter methods on Request and Response objects. It also
1122
+ correctly clones the fetch body before it is used to insure the agent
1123
+ can correctly measure responseBodySize.
1124
+
1125
+ ### [SPA] Support hash-based routing
1126
+
1127
+ Previously, SPAs that used hash-based routing would need to use
1128
+ the API to get meaningful names for their route change data,
1129
+ because the agent would strip the fragment from a URL and save
1130
+ only the path. The agent now sends the hash part of the fragment
1131
+ along with the path by default.
1132
+
1133
+ ### [SPA] Add queueTime and appTime
1134
+
1135
+ The addition of queueTime and appTime provides application timing
1136
+ data for breakdown charts by passing through server-side timing
1137
+ attributes.
1138
+
1139
+ ### [SPA] Fix Promise wrapping in Firefox 38
1140
+
1141
+ In Firefox 38, copying the toString method from the native Promise
1142
+ class throws an error. The agent now returns a String representation
1143
+ of the original promise function, rather than throwing an error.
1144
+
1145
+ ## v952
1146
+
1147
+ * Staging release date: 6/3/16
1148
+ * Lite release date: 6/6/16
1149
+ * Pro / Enterprise release date: 6/10/16
1150
+ * Standalone release date: TBD
1151
+ * Current release date: TBD
1152
+
1153
+ ### [SPA] Update to bel.3 schema
1154
+
1155
+ SPA agents now send data using the latest schema, and will now
1156
+ send navTiming data for initial page loads, and more detailed data
1157
+ for ajax requests including status codes, and requests/response body
1158
+ sizes.
1159
+
1160
+ ## v943
1161
+
1162
+ * Staging release date: 5/2/16
1163
+ * Lite release date: 5/4/16
1164
+ * Pro / Enterprise release date: 5/5/16
1165
+ * Standalone release date: 6/6/16
1166
+ * Current release date: 6/6/16
1167
+
1168
+ ### Explicitly report the current URL when collection data
1169
+
1170
+ When sending data to the router, all requests will now include a new
1171
+ query parameter which will contain the current url of the page. Previously
1172
+ the consumer used the referer header to determine the url of the page data
1173
+ was being collected for. This caused issues for sites that set a referrer-policy
1174
+ meta tag.
1175
+
1176
+ ### [SPA] Redesign of the API for SPA
1177
+
1178
+ All spa api methods are now attached to an interaction handle returned
1179
+ by calling newrelic.interaction(). This handle will be bound to the interaction
1180
+ that was active when it was first created. The goal of this refactor is to
1181
+ allow more usecases to be handled by the api, and to reduce confusion caused
1182
+ by not knowing when an interaction is active.
1183
+
1184
+ ### Fix recording of PageAction events from newrelic.finished() calls
1185
+
1186
+ The `newrelic.finished()` API call now again correctly records a `PageAction`
1187
+ event with an `actionName` of 'finished' when it is invoked.
1188
+
1189
+ ### [SPA] Allow endInteraction calls before the window load event
1190
+
1191
+ Previously, calling `newrelic.endInteraction` prior to the dispatching of the
1192
+ window load event would cause SPA interactions after the initial page load to
1193
+ not be submitted. This has been fixed.
1194
+
1195
+ ### [SPA] Fix for bogus 'popstate' interactions during page load
1196
+
1197
+ Previous versions of our SPA instrumentation would generate bogus
1198
+ `BrowserInteraction` events with a `trigger` of `popstate` when the hash was
1199
+ changed during the initial page load interaction in some browsers. This has been
1200
+ fixed.
1201
+
1202
+ ### [SPA] Smaller interaction payloads
1203
+
1204
+ Previously, each call to `setTimeout` or `setImmediate` that was recorded as
1205
+ part of an SPA interaction would be sent as a separate record as part of the
1206
+ data submitted for the interaction. For applications with lots of calls to
1207
+ `setTimeout(..., 0)`, this would result in unnecessarily large data payloads
1208
+ being sent to New Relic.
1209
+
1210
+ Callbacks passed to `setTimeout` or `setImmediate` will now have their callback
1211
+ timings rolled into the callback timings of the parent tracer that they were
1212
+ spawned by instead, reducing the size of the submitted data for each
1213
+ interaction.
1214
+
1215
+ ### [SPA] Fix serialization of interaction data containing custom attributes
1216
+
1217
+ When a custom attribute with a value of 'undefined' was attached via the
1218
+ `setInteractionAttribute` or `setCustomAttribute` APIs, any browser interactions
1219
+ containing that attribute would fail to be serialized correctly, and would thus
1220
+ not produce `BrowserInteraction` events. This has been fixed.
1221
+
1222
+ ## v918
1223
+
1224
+ * Standalone release date: 5/4/16
1225
+ * Current release date: 5/4/16
1226
+
1227
+ ### Fix zone.js compatibility for window.addEventListener wrapping
1228
+
1229
+ The way that the JS agent was previously wrapping window.addEventListener was
1230
+ incompatible with the wrapping approach used by zone.js, which could lead to
1231
+ breakage of Angular 2 applications, particularly with respect to popstate
1232
+ handling. This has been fixed.
1233
+
1234
+ ### Fix wrapping of onreadystatechange callbacks
1235
+
1236
+ Previously, the agent's instrumentation of callbacks assigned via the XHR
1237
+ onreadystatechange property could cause those callbacks to not fire in some
1238
+ circumstances. Among other things, this affected the firing of some callbacks
1239
+ passed to jQuery.ajax. This has been fixed, and our test coverage of this area
1240
+ improved.
1241
+
1242
+ ## v910
1243
+
1244
+ ### Fix errors with Angular 2.x applications
1245
+
1246
+ Previous versions of the SPA loader would cause a JS error on page load when
1247
+ used with Angular 2.x applications, due to a conflict with the zone.js library
1248
+ which is a dependency of Angular 2.x. This has been fixed.
1249
+
1250
+ ### Introducing initial page load timing
1251
+
1252
+ The agent currently measures the page load duration as the time between
1253
+ navigationStart and the window load event, which is often a poor proxy for load
1254
+ time as experienced by the user.
1255
+
1256
+ The agent now provides another measure of initial page load timing that includes
1257
+ time spent waiting on XHRs and timers that don't resolve until after the window
1258
+ load event, and should be a more accurate reflection of user-perceived wait
1259
+ time.
1260
+
1261
+ This new timing is captured in the 'duration' attribute of BrowserInteraction
1262
+ events with a category of 'Initial page load'. It is currently only availble
1263
+ when using the SPA loader variant.
1264
+
1265
+ ### More reliable detection of hash changes in IE and Edge
1266
+
1267
+ When instrumenting single-page web applications, the agent relies on detecting
1268
+ changes to the URL that are made by updating window.location.hash, or by
1269
+ using the history API in order to determine whether a given interaction should
1270
+ be counted as a route change or not.
1271
+
1272
+ Previously, route changes accomplished through direct assignments to
1273
+ window.location.hash might not be captured correctly in IE and Edge, but this
1274
+ has now been fixed.
1275
+
1276
+ ## v892
1277
+
1278
+ ### Restore reporting of URLs with JS errors
1279
+
1280
+ Version 885 introduced a regression wherein the agent would fail to report URLs
1281
+ on individual JS error records. This would mean that JS errors might have been
1282
+ assigned a URL based on the URL at the time they were submitted, rather than the
1283
+ time they were recorded. This has been fixed.
1284
+
1285
+ ### Report jsDuration for BrowserInteraction Events
1286
+
1287
+ This release bumps the querypack schema version to `bel.2` which adds support
1288
+ for jsDuration for browser interactions. It also removes the children property
1289
+ from attribute nodes, and removes the className property from elementData nodes.
1290
+
1291
+ ## v885
1292
+
1293
+ ### Fix instrumentation memory leak
1294
+
1295
+ v862 introduced a memory leak in the core event buffering machinery of the
1296
+ agent, which has been fixed in this release. The JS agent loader buffers events
1297
+ to be consumed when the aggregator loads, but these buffers were not being
1298
+ correctly destroyed starting in v862 when events were buffered using the
1299
+ internal `handle` mechanism.
1300
+
1301
+ ### Reduce noise in BrowserInteration event data
1302
+
1303
+ During development of the SPA feature, we collected data for many different
1304
+ types of user interaction. Many of these interactions are redundant (ie: mouseup,
1305
+ mousedown, and click), and added unnecessary noise into the event data. We now
1306
+ collect data for a subset of user interactions: click, submit, and popstate.
1307
+
1308
+ ## v881 (Not publicly released)
1309
+
1310
+ ### Properly account for XHR callbacks made with jQuery.ajax
1311
+
1312
+ Previously, the agent would not correctly time XHR callbacks that were set up
1313
+ using `jQuery.ajax`. It would also fail to include these XHR callbacks in SPA
1314
+ interactions. This has been fixed.
1315
+
1316
+ ### Fix duration on SPA BrowserInteraction events
1317
+
1318
+ v862 included a bug in the quality of our data collection, resulting in
1319
+ recording all BrowserInteraction events with a duration of 0 seconds. The agent
1320
+ now records the correct duration, and had improved test coverage of expected
1321
+ data.
1322
+
1323
+ ### Improved SPA custom instrumentation API
1324
+
1325
+ The previous SPA custom instrumentation API included two methods with
1326
+ confusingly similar signatures for tracking asynchronous and synchronous work.
1327
+ To reduce potential confusion, the two methods have been merged into a single,
1328
+ more general method: `newrelic.createTracer`.
1329
+
1330
+ ### Improve support for SPA hash-based routing
1331
+
1332
+ Previously, Dirac events would only be written for interactions that resulted
1333
+ in a route change, but that determination would be made by URL comparison
1334
+ in the Consumer after the fragment identifier had already been removed by the
1335
+ agent. Route changes that resulted in changes within the fragment only would be
1336
+ ignored by the Consumer. Now, the determination of a valid route change is
1337
+ made in the agent before the fragment is removed, and sent as a flag to the
1338
+ Consumer.
1339
+
1340
+ ### Move SPA-specific API methods to SPA loader
1341
+
1342
+ Previously, new non-finalized SPA-specific API methods were available in all
1343
+ loaders. Now, the SPA-specific API will only be available for applications that
1344
+ opt in to SPA instrumentation by using the SPA loader.
1345
+
1346
+ ### Fixed SPA interaction early-end timing in Edge
1347
+
1348
+ In Edge, some SPA interactions involving Promises might previously have ended
1349
+ prematurely. This has been fixed.
1350
+
1351
+ ## v862 (Not publicly released)
1352
+
1353
+ ### noticeError API now accepts a String argument
1354
+
1355
+ Previously, the noticeError API would only accept an Error object. Now,
1356
+ a user can send either an Error object or a String to the noticeError
1357
+ endpoint.
1358
+
1359
+ ### Expanded API for Single-Page-App interaction tracing
1360
+
1361
+ Added new methods for attaching custom attributes to traced interactions, ending
1362
+ interactions early, adding custom segments to interactions, and assigning
1363
+ custom names to interactions.
1364
+
1365
+ These APIs are not yet considered stable and may change before the SPA feature
1366
+ is released.
1367
+
1368
+ ### Experimental click-tracking support
1369
+
1370
+ The agent now includes a new loader variant called 'cap', which adds
1371
+ experimental support for capturing clicks as Insights events. This loader
1372
+ variant is not selectable in the UI, and should currently only be used for
1373
+ testing purposes.
1374
+
1375
+ ## v852
1376
+
1377
+ ### Use sendBeacon to harvest data on page unload when possible
1378
+
1379
+ In browsers that support it, the agent will now use `navigator.sendBeacon` to
1380
+ harvest buffered data on page unload, rather than using a dummy image tag. A
1381
+ related, issue wherein the next page load could be delayed in Firefox if data
1382
+ submission took a long time has been fixed.
1383
+
1384
+ ### Fixed data submission upon navigating away from pages in Safari 9
1385
+
1386
+ In Safari 9, pages with `unload` event handlers are allowed into the WebKit page
1387
+ cache, meaning that those `unload` handlers may never fire. Since the agent
1388
+ previously relied upon an `unload` handler to submit data when navigating away
1389
+ from a page, this meant that data submission upon navigating away from a page in
1390
+ Safari 9 was unreliable. This has been fixed by submitting data from the
1391
+ `pagehide` event handler instead when possible.
1392
+
1393
+ ### Improved performance for XHRs with responseType=json
1394
+
1395
+ Previously, XHRs requested with responseType='json' would trigger the agent to
1396
+ parse and re-serialize the response in order to measure the size of the response
1397
+ body. This could be a performance issue with large JSON responses requested with
1398
+ responseType='json'. The agent will now instead use XHR progress events to
1399
+ measure response size in most browsers.
1400
+
1401
+ ### Remove call to deprecated prefixed function in Chrome 46
1402
+
1403
+ A deprecation warning caused by calling `webkitClearResourceTimings` in Chrome 46+
1404
+ has been fixed (we now prefer the un-prefixed version of this function if
1405
+ available).
1406
+
1407
+ ### Fix Access Denied error in >= IE10 compatibility mode
1408
+
1409
+ An Access Denied error was thrown when users were running >= IE10 in <= IE9
1410
+ compatibility mode. The error was caused by submitting session trace data
1411
+ from a browser that does not support CORS. The agent will now only attempt
1412
+ session trace collection from browsers with known, working CORS support.
1413
+
1414
+ ## v793 (non-public release)
1415
+
1416
+ ### Alpha support for single-page web applications
1417
+
1418
+ This version of the agent adds a new 'spa' loader which contains initial support
1419
+ for tracking route changes within single-page web applications.
1420
+
1421
+ ## v768
1422
+
1423
+ ### Fix compatibility with pace.js and rollbar.js
1424
+
1425
+ The 3rd-party pace.js and rollbar.js libraries previously would interfere with
1426
+ New Relic's instrumentation of XMLHttpRequests, causing the 'AJAX' section of
1427
+ the browser UI to be empty. Compatibility with both of these libraries has been
1428
+ fixed.
1429
+
1430
+ ### Improved session trace behavior when window.Event is overwritten
1431
+
1432
+ Previously, when application code overwrote the window.Event global, session
1433
+ traces would be missing entries for event and timer callbacks, and internal
1434
+ errors would be generated in the agent, leading to unnecessary CPU usage by the
1435
+ agent when instrumenting high-frequency events. This has been fixed.
1436
+
1437
+ ## v741
1438
+
1439
+ ### Fix long hangs when serializing errors containing circular references
1440
+
1441
+ When attempting to serialize information about JS errors containing circular
1442
+ references in their 'message' property, the agent would previously hang for a
1443
+ long period of time, and then eventually fail to report the error. This has been
1444
+ fixed.
1445
+
1446
+ ## v686
1447
+
1448
+ ### Query string parameters are now stripped from JS error backtraces
1449
+
1450
+ Query string parameters on URLs included within JS error backtraces will now be
1451
+ removed before error information is transmitted to New Relic. In addition,
1452
+ backtrace frames that reference inline scripts will be reported as 'inline',
1453
+ rather than the URL of the HTML resource.
1454
+
1455
+ ### Faster PageAction harvests
1456
+
1457
+ PageAction events are now harvested more quickly - every 10s, rather than
1458
+ every 60s.
1459
+
1460
+ ### Guard against incorrect monkey-patching of XMLHttpRequest
1461
+
1462
+ Some JS libraries monkey-patch XMLHttpRequest in such a way that the `async`
1463
+ parameter will end up as `false` rather than `true` by default if unspecified.
1464
+ To work around this, the agent now specifies the value of the `async` flag
1465
+ explicitly to ensure that its XHRs are asynchronous.