Conversation
Bundles Sizes Evolution
🚀 CPU Performance
🧠 Memory Performance
|
|
✅ Tests 🎉 All green!❄️ No new flaky tests detected 🎯 Code Coverage (details) 🔗 Commit SHA: 2d54319 | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1d86086b1e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
84e221e to
8846690
Compare
61f19c4 to
09b6061
Compare
78eecf0 to
4fd7473
Compare
5e2e8d3 to
323e229
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 323e2297f6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
aafc358 to
f2f532f
Compare
f2f532f to
0887365
Compare
25b8a69 to
d9e1544
Compare
| }, | ||
| onRumStart({ addError }) { | ||
| globalAddError = addError | ||
| for (const subscriber of onRumStartSubscribers) { |
There was a problem hiding this comment.
Same as you said to me haha we can move the if outside.
| // Bootstrap - dynamically create root element (E2E framework serves bare HTML) | ||
| const rootElement = document.createElement('app-root') | ||
| document.body.appendChild(rootElement) | ||
| // eslint-disable-next-line @typescript-eslint/no-unsafe-call |
There was a problem hiding this comment.
Why is this an unsafe-call? Does it mean customers have to add this too?
| await flushEvents() | ||
| const viewEvents = intakeRegistry.rumViewEvents | ||
| expect(viewEvents.length).toBeGreaterThan(0) | ||
| const lastView = viewEvents[viewEvents.length - 1] |
There was a problem hiding this comment.
Can we use view. referrer? instead of [viewEvents. length - 1]
Motivation
The RUM Browser SDK supports React but has no Angular equivalent. Angular is widely used and customers need RUM views aligned with their Angular route definitions — using route patterns like
/article/:articleIdinstead of resolved URLs like/article/2.This PR adds
@datadog/browser-rum-angular, starting with Angular Router integration as described in the Angular integration RFC.Changes
New package:
@datadog/browser-rum-angularangularPlugin({ router: true })— RUM plugin that enables manual view tracking when router integration is activeprovideDatadogRouter()— Angular provider that listens toGuardsCheckEndevents, computes the view name from the route snapshot tree, and starts a new RUM viewcomputeRouteViewName()— Walks the primary outlet chain to build a stable view name from route patterns (e.g./users/:id/posts/:postId), skipping layout wrappers and named outletsUses
GuardsCheckEndrather thanNavigationEndso that resolver data fetches are attributed to the correct view.Test app & E2E
@ngtools/webpack+ Angular linker (nounsafe-evalneeded)Test instructions
yarn test:unit --spec packages/rum-angular yarn test:e2e -g "angular plugin"Checklist