@atlaskit/react-ufo 5.2.8 → 5.2.9
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.
- package/AGENTS.md +118 -73
- package/CHANGELOG.md +7 -0
- package/dist/cjs/experience-trace-id-context/index.js +3 -3
- package/dist/es2019/experience-trace-id-context/index.js +3 -3
- package/dist/es2019/vc/vc-observer-new/metric-calculator/vc-next/index.js +1 -1
- package/dist/esm/experience-trace-id-context/index.js +3 -3
- package/dist/esm/vc/vc-observer-new/metric-calculator/vc-next/index.js +1 -1
- package/dist/types/create-payload/utils/get-visibility-state-from-performance.d.ts +1 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/vc-next/index.d.ts +2 -2
- package/dist/types-ts4.5/create-payload/utils/get-visibility-state-from-performance.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/vc-next/index.d.ts +2 -2
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
React UFO (User-Facing Observability) is a performance instrumentation library that captures key
|
|
5
|
+
React UFO (User-Facing Observability) is a performance instrumentation library that captures key
|
|
6
|
+
user experience metrics across Atlassian products. It produces structured performance events that
|
|
7
|
+
are consumed by downstream analytics systems, primarily the **Glance (Performance Portal)** system.
|
|
6
8
|
|
|
7
9
|
## Team & Product Context
|
|
8
10
|
|
|
9
|
-
- **Team**: Frontend Observability (FeObs) — provides end-to-end solutions for frontend
|
|
10
|
-
|
|
11
|
+
- **Team**: Frontend Observability (FeObs) — provides end-to-end solutions for frontend
|
|
12
|
+
observability (performance + reliability)
|
|
13
|
+
- **Product**: Glance (formerly Performance Portal) — the one-stop shop for frontend performance
|
|
14
|
+
data at Atlassian
|
|
11
15
|
- **Mission**: Make performance data available, accountable, and actionable
|
|
12
16
|
- **Support channel**: `#help-devinfra-fe-observability` (Slack)
|
|
13
17
|
- **Jira project**: AFO on `product-fabric.atlassian.net`
|
|
@@ -27,7 +31,7 @@ graph TD
|
|
|
27
31
|
E[UFOLabel] --> B
|
|
28
32
|
F[Custom Data/Timings] --> B
|
|
29
33
|
end
|
|
30
|
-
|
|
34
|
+
|
|
31
35
|
subgraph "React UFO Core"
|
|
32
36
|
B --> G[VCObserver - Visual Completion]
|
|
33
37
|
B --> H[HoldTracking]
|
|
@@ -36,7 +40,7 @@ graph TD
|
|
|
36
40
|
H --> J
|
|
37
41
|
I --> J
|
|
38
42
|
end
|
|
39
|
-
|
|
43
|
+
|
|
40
44
|
subgraph "Output"
|
|
41
45
|
J --> K[GASv3 Analytics Events]
|
|
42
46
|
K --> L[Performance Portal / Databricks]
|
|
@@ -52,38 +56,42 @@ graph LR
|
|
|
52
56
|
subgraph "Client Instrumentation"
|
|
53
57
|
A[React UFO in Products]
|
|
54
58
|
end
|
|
55
|
-
|
|
59
|
+
|
|
56
60
|
subgraph "Transport Layer"
|
|
57
61
|
B[GASv3 analytics-service]
|
|
58
62
|
C[StreamHub / Kinesis]
|
|
59
63
|
end
|
|
60
|
-
|
|
64
|
+
|
|
61
65
|
subgraph "Event Processing - perf-portal-monorepo"
|
|
62
66
|
D[UFO Service - splits events]
|
|
63
67
|
E[BM Data Pipeline]
|
|
64
68
|
end
|
|
65
|
-
|
|
69
|
+
|
|
66
70
|
subgraph "Data Storage"
|
|
67
71
|
F[Socrates - data lake]
|
|
68
72
|
G[Databricks - aggregation]
|
|
69
73
|
end
|
|
70
|
-
|
|
74
|
+
|
|
71
75
|
subgraph "Data Serving"
|
|
72
76
|
H[Perf Portal GQL]
|
|
73
77
|
I[Glance UI]
|
|
74
78
|
end
|
|
75
|
-
|
|
79
|
+
|
|
76
80
|
A --> B --> C --> D --> E --> F --> G --> H --> I
|
|
77
81
|
```
|
|
78
82
|
|
|
79
83
|
**Key Pipeline Details:**
|
|
80
|
-
|
|
84
|
+
|
|
85
|
+
- **UFO Service** splits root interactions from page segments (e.g., `jira.fe.page-load.issue-view`
|
|
86
|
+
generates multiple `jira.fe.page-segment-load.*` events)
|
|
81
87
|
- **Databricks** has streaming (high-resolution) and daily aggregation jobs
|
|
82
|
-
- **External dependencies**: Socrates (data lake), Observo (high-cardinality data), SignalFx
|
|
88
|
+
- **External dependencies**: Socrates (data lake), Observo (high-cardinality data), SignalFx
|
|
89
|
+
(metrics/alerting)
|
|
83
90
|
|
|
84
91
|
## Key Concepts
|
|
85
92
|
|
|
86
93
|
### Interaction Types
|
|
94
|
+
|
|
87
95
|
- **`page_load`**: Initial page rendering measurement
|
|
88
96
|
- **`transition`**: SPA navigation between routes
|
|
89
97
|
- **`press`**: User click/tap interactions
|
|
@@ -91,14 +99,18 @@ graph LR
|
|
|
91
99
|
- **`typing`**: Keyboard input performance
|
|
92
100
|
|
|
93
101
|
### Core Metrics
|
|
102
|
+
|
|
94
103
|
- **TTI (Time to Interactive)**: Legacy metric from BM3 (Browser Metrics 3)
|
|
95
104
|
- **TTAI (Time to All Interactive)**: When all holds are released
|
|
96
|
-
- **TTVC (Time to Visual Completion)**: When visual changes stabilize at various thresholds (VC50,
|
|
105
|
+
- **TTVC (Time to Visual Completion)**: When visual changes stabilize at various thresholds (VC50,
|
|
106
|
+
VC80, VC90, VC99)
|
|
97
107
|
- **FMP (First Meaningful Paint)**: When primary content is visible
|
|
98
108
|
- **Speed Index**: Weighted average of visual progress over time
|
|
99
109
|
|
|
100
110
|
### TTVC Revisions
|
|
111
|
+
|
|
101
112
|
The package supports multiple TTVC calculation algorithms:
|
|
113
|
+
|
|
102
114
|
- `fy25.01`, `fy25.02`: Legacy revisions
|
|
103
115
|
- `fy25.03`: Current default revision (`DEFAULT_TTVC_REVISION`)
|
|
104
116
|
- `fy26.04`, `next`: Experimental revisions
|
|
@@ -139,13 +151,16 @@ src/
|
|
|
139
151
|
## Key Entry Points
|
|
140
152
|
|
|
141
153
|
### Interaction Initialization
|
|
154
|
+
|
|
142
155
|
- [`traceUFOPageLoad`](./src/trace-pageload/index.ts) - Start page load measurement
|
|
143
156
|
- [`traceUFOTransition`](./src/trace-transition/index.ts) - Start transition measurement
|
|
144
157
|
- [`traceUFOPress`](./src/trace-press/index.ts) - Start press interaction measurement
|
|
145
|
-
- [`traceUFOInteraction`](./src/trace-interaction/index.ts) - Generic interaction from browser
|
|
158
|
+
- [`traceUFOInteraction`](./src/trace-interaction/index.ts) - Generic interaction from browser
|
|
159
|
+
events
|
|
146
160
|
- [`traceUFORedirect`](./src/trace-redirect/index.ts) - Track route redirects
|
|
147
161
|
|
|
148
162
|
### React Components
|
|
163
|
+
|
|
149
164
|
- [`UFOSegment`](./src/segment/segment.tsx) - Define measurable page sections
|
|
150
165
|
- [`UFOLoadHold`](./src/load-hold/UFOLoadHold.tsx) - Hold interaction completion during loading
|
|
151
166
|
- [`UFOLabel`](./src/label/UFOLabel.tsx) - Annotate component tree for debugging
|
|
@@ -154,16 +169,21 @@ src/
|
|
|
154
169
|
- [`UFOCustomCohortData`](./src/custom-cohort-data/index.ts) - Add cohort data for experiments
|
|
155
170
|
|
|
156
171
|
### Configuration
|
|
172
|
+
|
|
157
173
|
- [`setUFOConfig`](./src/config/index.ts) - Configure UFO behavior, sampling rates, and features
|
|
158
174
|
|
|
159
175
|
### Payload Generation
|
|
160
|
-
|
|
176
|
+
|
|
177
|
+
- [`createPayloads`](./src/create-payload/index.ts) - Generate analytics payloads from interaction
|
|
178
|
+
data
|
|
161
179
|
|
|
162
180
|
## Payload Schema
|
|
163
181
|
|
|
164
|
-
Events are sent with `experience:key` of `custom.interaction-metrics` and follow the schema defined
|
|
182
|
+
Events are sent with `experience:key` of `custom.interaction-metrics` and follow the schema defined
|
|
183
|
+
in [`react-ufo-payload-schema.ts`](./src/common/react-ufo-payload-schema.ts).
|
|
165
184
|
|
|
166
185
|
Key payload fields:
|
|
186
|
+
|
|
167
187
|
- `experience:name` - The UFO interaction name (e.g., `issue-view`)
|
|
168
188
|
- `interactionMetrics.type` - Interaction type (page_load, transition, press, etc.)
|
|
169
189
|
- `interactionMetrics.start/end` - Timing boundaries
|
|
@@ -177,17 +197,18 @@ Key payload fields:
|
|
|
177
197
|
|
|
178
198
|
## Downstream Consumer: Glance (Performance Portal)
|
|
179
199
|
|
|
180
|
-
The events produced by this package are consumed by the **Glance** system
|
|
200
|
+
The events produced by this package are consumed by the **Glance** system
|
|
201
|
+
(https://bitbucket.org/atlassian/perf-portal-monorepo):
|
|
181
202
|
|
|
182
203
|
### perf-portal-monorepo Apps
|
|
183
204
|
|
|
184
|
-
| App
|
|
185
|
-
|
|
186
|
-
| `apps/ufo`
|
|
187
|
-
| `apps/bm-data-pipeline`
|
|
188
|
-
| `apps/databricks-jobs`
|
|
189
|
-
| `apps/perf-portal-gql`
|
|
190
|
-
| `apps/performance-portal` | React frontend (Glance UI)
|
|
205
|
+
| App | Purpose | Role in Pipeline |
|
|
206
|
+
| ------------------------- | ----------------------------- | --------------------------- |
|
|
207
|
+
| `apps/ufo` | UFO event processing service | Event Ingestion & Splitting |
|
|
208
|
+
| `apps/bm-data-pipeline` | Browser Metrics data pipeline | Event Processing (BM3) |
|
|
209
|
+
| `apps/databricks-jobs` | Data aggregation notebooks | Data Aggregation |
|
|
210
|
+
| `apps/perf-portal-gql` | GraphQL API server | Data Serving + Alerts |
|
|
211
|
+
| `apps/performance-portal` | React frontend (Glance UI) | Data Visualization |
|
|
191
212
|
|
|
192
213
|
### Event Flow
|
|
193
214
|
|
|
@@ -201,7 +222,7 @@ sequenceDiagram
|
|
|
201
222
|
participant DB as Databricks
|
|
202
223
|
participant GQL as Perf Portal GQL
|
|
203
224
|
participant UI as Glance UI
|
|
204
|
-
|
|
225
|
+
|
|
205
226
|
App->>UFO: traceUFOPageLoad('issue-view')
|
|
206
227
|
UFO->>UFO: Measure TTAI, TTVC
|
|
207
228
|
UFO->>GAS: Send interaction-metrics event
|
|
@@ -226,20 +247,22 @@ sequenceDiagram
|
|
|
226
247
|
|
|
227
248
|
## Feature Flags
|
|
228
249
|
|
|
229
|
-
The package uses platform feature flags for gradual rollouts. Key flags are defined in
|
|
250
|
+
The package uses platform feature flags for gradual rollouts. Key flags are defined in
|
|
251
|
+
[`package.json`](./package.json):
|
|
230
252
|
|
|
231
|
-
| Flag
|
|
232
|
-
|
|
233
|
-
| `platform_ufo_enable_ttai_with_3p`
|
|
234
|
-
| `platform_ufo_enable_vc_raw_data`
|
|
235
|
-
| `platform_ufo_segment_critical_metrics`
|
|
236
|
-
| `platform_ufo_enable_terminal_errors`
|
|
237
|
-
| `platform_ufo_raw_data_thirdparty`
|
|
253
|
+
| Flag | Purpose |
|
|
254
|
+
| --------------------------------------------------- | -------------------------------- |
|
|
255
|
+
| `platform_ufo_enable_ttai_with_3p` | Third-party segment timing |
|
|
256
|
+
| `platform_ufo_enable_vc_raw_data` | Raw VC data inclusion |
|
|
257
|
+
| `platform_ufo_segment_critical_metrics` | Segment-level metrics |
|
|
258
|
+
| `platform_ufo_enable_terminal_errors` | Terminal error tracking |
|
|
259
|
+
| `platform_ufo_raw_data_thirdparty` | Third-party raw data behavior |
|
|
238
260
|
| `platform_ufo_enable_finish_interaction_transition` | Finish interaction on transition |
|
|
239
261
|
|
|
240
262
|
## Testing
|
|
241
263
|
|
|
242
264
|
### Unit Tests
|
|
265
|
+
|
|
243
266
|
```bash
|
|
244
267
|
cd platform && afm test unit packages/react-ufo/atlaskit/src/<test-file>
|
|
245
268
|
# Or run all:
|
|
@@ -247,6 +270,7 @@ cd platform && yarn test packages/react-ufo
|
|
|
247
270
|
```
|
|
248
271
|
|
|
249
272
|
### Integration Tests
|
|
273
|
+
|
|
250
274
|
```bash
|
|
251
275
|
# Terminal 1: Start dev server
|
|
252
276
|
cd platform && yarn start:rspack react-ufo
|
|
@@ -258,7 +282,9 @@ cd platform && yarn test:integration packages/react-ufo/atlaskit/__tests__/ \
|
|
|
258
282
|
```
|
|
259
283
|
|
|
260
284
|
### Verifying Non-Flaky Tests
|
|
285
|
+
|
|
261
286
|
To simulate CI-like environment:
|
|
287
|
+
|
|
262
288
|
```bash
|
|
263
289
|
yarn test:integration packages/react-ufo/atlaskit/__tests__/playwright/base.spec.ts \
|
|
264
290
|
--retries 0 --reporter list --reuse-dev-server \
|
|
@@ -271,22 +297,26 @@ Integration tests are located in `__tests__/playwright/` and use example pages f
|
|
|
271
297
|
## Common Tasks
|
|
272
298
|
|
|
273
299
|
### Adding a New Interaction Type
|
|
300
|
+
|
|
274
301
|
1. Create trace function in `src/trace-{type}/`
|
|
275
302
|
2. Update `InteractionType` in common types
|
|
276
303
|
3. Add configuration support in `src/config/`
|
|
277
304
|
4. Update payload generation in `src/create-payload/`
|
|
278
305
|
|
|
279
306
|
### Modifying VC Calculation
|
|
307
|
+
|
|
280
308
|
1. VC observers are in `src/vc/vc-observer-new/` (current) and `src/vc/vc-observer/` (legacy)
|
|
281
309
|
2. Revisions are controlled by `enabledVCRevisions` config
|
|
282
310
|
3. Test changes against existing integration tests
|
|
283
311
|
|
|
284
312
|
### Adding Custom Metrics
|
|
313
|
+
|
|
285
314
|
1. Use `addUFOCustomData` for custom attributes
|
|
286
315
|
2. Use `addCustomTiming` for custom timing spans
|
|
287
316
|
3. Custom data appears in payload under `interactionMetrics.customData`
|
|
288
317
|
|
|
289
318
|
### Adding Feature Flags
|
|
319
|
+
|
|
290
320
|
1. Import `fg` from `@atlaskit/platform-feature-flags`
|
|
291
321
|
2. Register flag in `package.json` under `platform-feature-flags`
|
|
292
322
|
3. Put fg check as **last condition** in if statements: `if (a === b && fg('my_fg'))`
|
|
@@ -294,7 +324,9 @@ Integration tests are located in `__tests__/playwright/` and use example pages f
|
|
|
294
324
|
## Important Patterns
|
|
295
325
|
|
|
296
326
|
### Singleton Pattern
|
|
327
|
+
|
|
297
328
|
The package uses a singleton pattern for global state:
|
|
329
|
+
|
|
298
330
|
```typescript
|
|
299
331
|
// VCObserver is global per interaction
|
|
300
332
|
globalThis.__vcObserver = new VCObserverWrapper(opts);
|
|
@@ -304,7 +336,9 @@ let config: Config | undefined;
|
|
|
304
336
|
```
|
|
305
337
|
|
|
306
338
|
### Hold System
|
|
339
|
+
|
|
307
340
|
Holds prevent interaction completion until all loading states resolve:
|
|
341
|
+
|
|
308
342
|
```typescript
|
|
309
343
|
// Hold is added when loading starts
|
|
310
344
|
const release = addHold(interactionId, labelStack, 'my-loading');
|
|
@@ -314,7 +348,9 @@ release();
|
|
|
314
348
|
```
|
|
315
349
|
|
|
316
350
|
### Segment Tree
|
|
351
|
+
|
|
317
352
|
Segments are tracked hierarchically for nested measurement:
|
|
353
|
+
|
|
318
354
|
```typescript
|
|
319
355
|
// Parent segment
|
|
320
356
|
<UFOSegment name="page">
|
|
@@ -326,7 +362,9 @@ Segments are tracked hierarchically for nested measurement:
|
|
|
326
362
|
```
|
|
327
363
|
|
|
328
364
|
### Third-Party Segments
|
|
365
|
+
|
|
329
366
|
For external/plugin content:
|
|
367
|
+
|
|
330
368
|
```typescript
|
|
331
369
|
import { UFOThirdPartySegment } from '@atlaskit/react-ufo/segment';
|
|
332
370
|
|
|
@@ -338,44 +376,50 @@ import { UFOThirdPartySegment } from '@atlaskit/react-ufo/segment';
|
|
|
338
376
|
## Debugging
|
|
339
377
|
|
|
340
378
|
### Performance Tracing
|
|
379
|
+
|
|
341
380
|
Enable Chrome DevTools performance tracing:
|
|
381
|
+
|
|
342
382
|
```typescript
|
|
343
383
|
window.__REACT_UFO_ENABLE_PERF_TRACING = true;
|
|
344
384
|
```
|
|
345
385
|
|
|
346
386
|
### Event Inspection
|
|
387
|
+
|
|
347
388
|
Listen for interaction completion:
|
|
389
|
+
|
|
348
390
|
```typescript
|
|
349
391
|
window.addEventListener('UFO_FINISH_INTERACTION', (event) => {
|
|
350
|
-
|
|
392
|
+
console.log('UFO interaction finished:', event.detail);
|
|
351
393
|
});
|
|
352
394
|
```
|
|
353
395
|
|
|
354
396
|
### Chrome Extension
|
|
355
|
-
|
|
397
|
+
|
|
398
|
+
Use the **UFO Chrome Extension** (`apps/ufo-chrome-extension` in perf-portal-monorepo) for DevTools
|
|
399
|
+
integration.
|
|
356
400
|
|
|
357
401
|
## Related Packages
|
|
358
402
|
|
|
359
|
-
| Package
|
|
360
|
-
|
|
361
|
-
| `@atlaskit/react-ufo`
|
|
362
|
-
| `ufo-load-hold`
|
|
363
|
-
| `ufo-apollo-log`
|
|
364
|
-
| `ufo-resource-router-log`
|
|
365
|
-
| `ufo-use-layout-effect-safe` | SSR-safe useLayoutEffect
|
|
403
|
+
| Package | Purpose |
|
|
404
|
+
| ---------------------------- | --------------------------------------- |
|
|
405
|
+
| `@atlaskit/react-ufo` | Core UFO instrumentation (this package) |
|
|
406
|
+
| `ufo-load-hold` | Standalone load hold component |
|
|
407
|
+
| `ufo-apollo-log` | Apollo Client integration |
|
|
408
|
+
| `ufo-resource-router-log` | react-resource-router integration |
|
|
409
|
+
| `ufo-use-layout-effect-safe` | SSR-safe useLayoutEffect |
|
|
366
410
|
|
|
367
411
|
## Key Confluence References
|
|
368
412
|
|
|
369
|
-
| Topic
|
|
370
|
-
|
|
371
|
-
| Team Home (FeObs)
|
|
372
|
-
| Glance Product Page
|
|
373
|
-
| Data Architecture Diagram | `go/glance-data-architecture`
|
|
374
|
-
| UFO Pipeline Architecture | [UFO Design - M1 Pipeline Architecture](https://hello.atlassian.net/wiki/spaces/UFO/pages/1050787866)
|
|
375
|
-
| Team Onboarding
|
|
376
|
-
| React UFO Onboarding
|
|
377
|
-
| React UFO v2 Design
|
|
378
|
-
| Performance Blog
|
|
413
|
+
| Topic | Link |
|
|
414
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
415
|
+
| Team Home (FeObs) | `go/feo` |
|
|
416
|
+
| Glance Product Page | `go/glance` |
|
|
417
|
+
| Data Architecture Diagram | `go/glance-data-architecture` |
|
|
418
|
+
| UFO Pipeline Architecture | [UFO Design - M1 Pipeline Architecture](https://hello.atlassian.net/wiki/spaces/UFO/pages/1050787866) |
|
|
419
|
+
| Team Onboarding | [Onboarding](https://hello.atlassian.net/wiki/spaces/APD/pages/1386514416) |
|
|
420
|
+
| React UFO Onboarding | [React UFO and UFO Onboarding](https://hello.atlassian.net/wiki/spaces/APD/pages/3615063023) |
|
|
421
|
+
| React UFO v2 Design | [react-ufo UFO v2](https://hello.atlassian.net/wiki/spaces/UFO/pages/2305847386) |
|
|
422
|
+
| Performance Blog | [react-UFO: A deeper understanding of performance](https://hello.atlassian.net/wiki/spaces/UFO/blog/2022/12/16/2280380649) |
|
|
379
423
|
|
|
380
424
|
## Configuration Reference
|
|
381
425
|
|
|
@@ -383,33 +427,34 @@ Key configuration options in `setUFOConfig`:
|
|
|
383
427
|
|
|
384
428
|
```typescript
|
|
385
429
|
interface Config {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
430
|
+
product: string; // Product identifier (e.g., 'jira', 'confluence')
|
|
431
|
+
region: string; // Deployment region
|
|
432
|
+
population?: string; // Event population for segmentation
|
|
433
|
+
rates?: Record<string, number>; // Sampling rates per experience
|
|
434
|
+
kind?: Record<InteractionKind, number>; // Rates by interaction type
|
|
435
|
+
vc?: {
|
|
436
|
+
enabled?: boolean;
|
|
437
|
+
enabledVCRevisions?: {
|
|
438
|
+
all: TTVCRevision[];
|
|
439
|
+
byExperience?: Record<string, TTVCRevision[]>;
|
|
440
|
+
};
|
|
441
|
+
heatmapSize?: number;
|
|
442
|
+
selectorConfig?: SelectorConfig;
|
|
443
|
+
};
|
|
444
|
+
ssr?: {
|
|
445
|
+
getSSRTimings?: () => SSRTiming[];
|
|
446
|
+
getSSRDoneTime?: () => number | undefined;
|
|
447
|
+
};
|
|
448
|
+
postInteractionLog?: { enabled?: boolean; rates?: Rates };
|
|
449
|
+
experimentalInteractionMetrics?: { enabled?: boolean; rates?: Rates };
|
|
450
|
+
terminalErrors?: { enabled?: boolean };
|
|
407
451
|
}
|
|
408
452
|
```
|
|
409
453
|
|
|
410
454
|
## Contributing
|
|
411
455
|
|
|
412
456
|
When making changes:
|
|
457
|
+
|
|
413
458
|
1. Run unit tests: `cd platform && yarn test packages/react-ufo`
|
|
414
459
|
2. Run integration tests to verify VC measurement accuracy
|
|
415
460
|
3. Consider impact on downstream Glance/Performance Portal processing
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 5.2.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`9adf0a8a1c055`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9adf0a8a1c055) -
|
|
8
|
+
FG cleanup - platform_ufo_enable_late_mutation_label_stacks
|
|
9
|
+
|
|
3
10
|
## 5.2.8
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -17,9 +17,9 @@ var _makeTraceHttpRequestHeaders = require("./utils/make-trace-http-request-head
|
|
|
17
17
|
var state = {
|
|
18
18
|
context: null
|
|
19
19
|
};
|
|
20
|
-
var traceIdKey = (0, _api.createContextKey)(
|
|
21
|
-
var spanIdKey = (0, _api.createContextKey)(
|
|
22
|
-
var experienceTypeKey = (0, _api.createContextKey)(
|
|
20
|
+
var traceIdKey = (0, _api.createContextKey)('traceId');
|
|
21
|
+
var spanIdKey = (0, _api.createContextKey)('spanId');
|
|
22
|
+
var experienceTypeKey = (0, _api.createContextKey)('type');
|
|
23
23
|
|
|
24
24
|
// DO NOT CALL THIS FUNCTION DIRECTLY!!!!
|
|
25
25
|
// It is only to be called by React UFO libraries for the automatic handling of trace context for experiences.
|
|
@@ -5,9 +5,9 @@ import { makeTraceHttpRequestHeaders } from './utils/make-trace-http-request-hea
|
|
|
5
5
|
const state = {
|
|
6
6
|
context: null
|
|
7
7
|
};
|
|
8
|
-
const traceIdKey = createContextKey(
|
|
9
|
-
const spanIdKey = createContextKey(
|
|
10
|
-
const experienceTypeKey = createContextKey(
|
|
8
|
+
const traceIdKey = createContextKey('traceId');
|
|
9
|
+
const spanIdKey = createContextKey('spanId');
|
|
10
|
+
const experienceTypeKey = createContextKey('type');
|
|
11
11
|
|
|
12
12
|
// DO NOT CALL THIS FUNCTION DIRECTLY!!!!
|
|
13
13
|
// It is only to be called by React UFO libraries for the automatic handling of trace context for experiences.
|
|
@@ -5,9 +5,9 @@ import { makeTraceHttpRequestHeaders } from './utils/make-trace-http-request-hea
|
|
|
5
5
|
var state = {
|
|
6
6
|
context: null
|
|
7
7
|
};
|
|
8
|
-
var traceIdKey = createContextKey(
|
|
9
|
-
var spanIdKey = createContextKey(
|
|
10
|
-
var experienceTypeKey = createContextKey(
|
|
8
|
+
var traceIdKey = createContextKey('traceId');
|
|
9
|
+
var spanIdKey = createContextKey('spanId');
|
|
10
|
+
var experienceTypeKey = createContextKey('type');
|
|
11
11
|
|
|
12
12
|
// DO NOT CALL THIS FUNCTION DIRECTLY!!!!
|
|
13
13
|
// It is only to be called by React UFO libraries for the automatic handling of trace context for experiences.
|
|
@@ -7,7 +7,7 @@ import _inherits from "@babel/runtime/helpers/inherits";
|
|
|
7
7
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
8
8
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
9
9
|
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
10
|
-
import VCCalculator_FY26_04 from
|
|
10
|
+
import VCCalculator_FY26_04 from '../fy26_04';
|
|
11
11
|
var getConsideredEntryTypes = function getConsideredEntryTypes() {
|
|
12
12
|
var consideredEntryTypes = [];
|
|
13
13
|
return consideredEntryTypes;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { PageVisibility } from
|
|
1
|
+
import type { PageVisibility } from '../../common/react-ufo-payload-schema';
|
|
2
2
|
export declare function getVisibilityStateFromPerformance(stop: number): PageVisibility | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { VCObserverEntry } from
|
|
2
|
-
import VCCalculator_FY26_04 from
|
|
1
|
+
import type { VCObserverEntry } from '../../types';
|
|
2
|
+
import VCCalculator_FY26_04 from '../fy26_04';
|
|
3
3
|
export default class VCCalculator_Next extends VCCalculator_FY26_04 {
|
|
4
4
|
constructor();
|
|
5
5
|
protected isEntryIncluded(entry: VCObserverEntry, include3p?: boolean, excludeSmartAnswersInSearch?: boolean): boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { PageVisibility } from
|
|
1
|
+
import type { PageVisibility } from '../../common/react-ufo-payload-schema';
|
|
2
2
|
export declare function getVisibilityStateFromPerformance(stop: number): PageVisibility | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { VCObserverEntry } from
|
|
2
|
-
import VCCalculator_FY26_04 from
|
|
1
|
+
import type { VCObserverEntry } from '../../types';
|
|
2
|
+
import VCCalculator_FY26_04 from '../fy26_04';
|
|
3
3
|
export default class VCCalculator_Next extends VCCalculator_FY26_04 {
|
|
4
4
|
constructor();
|
|
5
5
|
protected isEntryIncluded(entry: VCObserverEntry, include3p?: boolean, excludeSmartAnswersInSearch?: boolean): boolean;
|