feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(browser): Add graphqlClientIntegration - #13783

Merged
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration
Feb 11, 2025
Merged

feat(browser): Add graphqlClientIntegration#13783
lforst merged 78 commits into
getsentry:developfrom
Zen-cronic:feat/graphqlClientIntegration

Conversation

@Zen-cronic

@Zen-cronicZen-cronic commented Sep 25, 2024

Copy link
Copy Markdown
Contributor

Resolves#13399

Todo:

  • Support fetch spans and tests
  • Support graphql queries without a name
  • Enhance breadcrumb data

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
Comment threadpackages/utils/src/instrument/fetch.ts Outdated
@Zen-cronic

Zen-cronic commented Sep 26, 2024

Copy link
Copy Markdown
ContributorAuthor
  • Todo: fix failing fetch tests by removing body from non-graphql requests

Comment threadpackages/utils/src/graphql.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

Just wanted to inform about the failing tests:

Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/integrations/breadcrumbs.ts Outdated
Comment threadpackages/browser/src/tracing/request.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/browser/src/integrations/graphqlClient.ts
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally found the time to review this in depth. Overall, I really like it, I left some comments with requests for changes. Mostly it is about moving stuff around, and avoiding any graphql-specific code in the "general" places. Also, please note that if you rebase this in develop, there are/will be a bunch of conflicts - this is mostly because the utils package is deprecated and all that code was moved to core.

@Zen-cronic

Zen-cronic commented Dec 20, 2024

Copy link
Copy Markdown
ContributorAuthor

noted, i'll implement the feedback. thanks for the comprehensive review!

  • update span hook
  • update breadcrumb hook
  • resolve rebase conflicts

will move on with the conflicts if the current implementation checks out

@Zen-cronic
Zen-cronic requested a review from a team as a code ownerJanuary 7, 2025 15:53
@@ -0,0 +1,121 @@
import { SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';
import { getBodyString } from '@sentry-internal/replay';

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mydea should this util be in the replay package?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we use/need it here, I would move it to @sentry-internal/browser-utils, and use it from there both in replay and here!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otherwise, this will lead to circular dependency issues :)

Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
@Zen-cronic
Zen-cronic requested a review from mydeaJanuary 7, 2025 18:58
Comment threadpackages/browser/src/integrations/graphqlClient.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
Comment threadpackages/types/src/client.ts Outdated
@mydea

mydea commented Feb 5, 2025

Copy link
Copy Markdown
Member

I can't push changes on your branch, so I opened a PR here: Zen-cronic#1 which should fix the remaining CI issues on your branch!

Lms24and others added 7 commits February 5, 2025 09:33
…y#15265)
Due to a change in the lifecycle of Svelte
components in Svelte 5 (using Rune mode), our SDK can no longer leverage
the `(before|after)Update` hooks to track component update spans.
For v9, this patch therefore disables update tracking by default.
Removes a no longer necessary fallback check that we only needed in
SvelteKit 1.26.0 or older. For Kit 2.x, we can rely on the
`event.isSubRequest` flag to identify sub vs. actual requests in our
request handler.
fixesgetsentry#15244
…try#15282)
- adds a toolbar for cropping and annotations
- changes from inline styles to multiple class names in BEM format
With annotation option:
![Screenshot 2025-02-03 at 3 51
04 PM](https://github.com/user-attachments/assets/97e4ac38-4926-49e5-a6f3-d474174e3c38)
Without annotation option (to confirm that it looks the same as before):
![Screenshot 2025-02-03 at 5 09
01 PM](https://github.com/user-attachments/assets/8b614c38-3c1b-4d7e-986e-ead86a3f4349)
Closesgetsentry#15252
…etsentry#15288)
The debugging ability for Azure Functions when using Azure Static Web
Apps is very limited. But as I could see some Sentry-related logs I
**think** Sentry is generally initialized.
However, server-related logs don't show up in Sentry. This is
**probably** because the Azure Function finishes before the error can be
sent to Sentry.
By adding the Azure environment variable to check whether we should
flush with a timeout, this should possibly fix the issue.
Logs in Application Insights:
![image](https://github.com/user-attachments/assets/ed5ccd37-be87-4338-946b-94ec543e08c5)

@mydeamydea left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left two more comments, where we should use the passed in logger instance - other than, this this is ready to go 🚀 thanks for the work, this was a tricky one but it turned out pretty great! (also needs a rebase, there is one small conflict)

Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Comment threadpackages/browser-utils/src/networkUtils.ts Outdated
Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
@Zen-cronic

Copy link
Copy Markdown
ContributorAuthor

all resolved now!

@lforstlforst self-assigned this Feb 7, 2025
@lforst
lforst merged commit cea9484 into getsentry:developFeb 11, 2025
s1gr1d added a commit to getsentry/sentry-docs that referenced this pull request May 23, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
antonpirker pushed a commit to getsentry/sentry-docs that referenced this pull request Jun 6, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
bitsandfoxes pushed a commit to getsentry/sentry-docs that referenced this pull request Jul 3, 2025
## DESCRIBE YOUR PR
Documents PR getsentry/sentry-javascript#13783
mentioned in issue
getsentry/sentry-javascript#13399closes#13800
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add optional graphqlClientIntegration to @sentry/browser

8 participants

@Zen-cronic@mydea@billyvg@AbhiPrasad@lforst@Lms24@c298lee@s1gr1d