') + ')', 'gi');
if (regex.test(text)) {
found = true;
var frag = document.createDocumentFragment();
var parts = text.split(regex);
parts.forEach(function(part, i) {
if (i % 2 === 0) {
frag.appendChild(document.createTextNode(part));
} else {
var span = document.createElement('span');
span.className = 'userscript-highlight';
span.textContent = part;
frag.appendChild(span);
}
});
node.parentNode.replaceChild(frag, node);
}
});
} else if (node.nodeType === 1 && node.childNodes) { // element
var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];
if (!skipTags.includes(node.tagName)) {
Array.from(node.childNodes).forEach(highlight);
}
}
}
highlight(document.body);
// Re-highlight on dynamic content
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
m.addedNodes.forEach(function(node) {
if (node.nodeType === 1 || node.nodeType === 3) highlight(node);
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); }
})();
(function(){
try {
var __m = "*";
var __re = new RegExp('^' + ".*" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Strip utm_, fbclid, gclid, etc. from all links on page
(function() {
var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',
'ref', 'ref_src', 'source', 'medium', 'campaign'];
function cleanUrl(url) {
try {
var u = new URL(url, window.location.origin);
var changed = false;
trackingParams.forEach(function(p) {
if (u.searchParams.has(p)) {
u.searchParams.delete(p);
changed = true;
}
});
return changed ? u.toString() : url;
} catch (e) {
return url;
}
}
function cleanLinks() {
document.querySelectorAll('a[href]').forEach(function(a) {
var clean = cleanUrl(a.href);
if (clean !== a.href) a.href = clean;
});
}
cleanLinks();
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
m.addedNodes.forEach(function(node) {
if (node.nodeType === 1) {
if (node.tagName === 'A') cleanLinks();
node.querySelectorAll('a[href]').forEach(function(a) {
var clean = cleanUrl(a.href);
if (clean !== a.href) a.href = clean;
});
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); }
})();
(function(){
try {
var __m = "youtube.com";
var __re = new RegExp('^' + "youtube\\.com" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Auto-enable theater mode on YouTube
(function() {
function tryTheater() {
var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]');
if (btn && !btn.classList.contains('activated')) {
btn.click();
}
}
// Try immediately
tryTheater();
// Try after navigation (SPA)
var lastUrl = location.href;
setInterval(function() {
if (location.href !== lastUrl) {
lastUrl = location.href;
setTimeout(tryTheater, 500);
}
}, 1000);
// Also try on player load
var observer = new MutationObserver(tryTheater);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); }
})();
(function(){
try {
var __m = "*";
var __re = new RegExp('^' + ".*" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Remove or un-stick sticky/fixed headers that block content
(function() {
function unstick() {
document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) {
if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {
el.style.position = 'static';
el.style.top = 'auto';
el.style.zIndex = 'auto';
}
});
}
unstick();
var observer = new MutationObserver(unstick);
observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });
})();
}
} catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); }
})();
})();
Since v9.17.0, peer dependencies issues have been introduced · Issue #16245 · getsentry/sentry-javascript · GitHub
Description Is there an existing issue for this? How do you use Sentry? Sentry Saas (sentry.io)
Which SDK are you using? @sentry/nextjs
SDK Version 9.17.0
Framework Version Next 15.3.2
Link to Sentry event No response
Reproduction Example/SDK Setup No response
Steps to Reproduce This issue is more likely to appear in monorepos as I found, but basically since the introduction of @fastify/otel, it clashes with @sentry/opentelemetry, both of them wanting different versions of @opentelemetry packages :
mkdir test && cd test
pnpm init
mkdir packages/node && cd packages/node
pnpm init
pnpm add @sentry/node
cd ..\. . && mkdir services/next && cd services/next
pnpm init
pnpm add @sentry/nextjs
cd ..\. .
echo " packages: - services/* - packages/* " > pnpm-workspace.yaml
pnpm i Expected Result There should be no peer dependencies issues
Actual Result PS C:\Users\EDM115\Desktop\test> pnpm i
Scope: all 3 workspace projects
Packages: +275 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 326 , reused 275 , downloaded 0 , added 275 , done
WARN Issues with peer dependencies found
services/ next
└─┬ @sentry / nextjs 9.17 .0
└─┬ @sentry / opentelemetry 9.17 .0
├── ✕ unmet peer @opentelemetry / core@^1.30 .1 : found 2.0 .0
└── ✕ unmet peer @opentelemetry / instrumentation@^0.57 .1 : found 0.200 .0
╭ Warning ───────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Ignored build scripts: @sentry / cli, sharp. │
│ Run " pnpm approve-builds" to pick which dependencies should be allowed to run scripts. │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
Done in 18. 2s using pnpm v10.7.0
PS C:\Users\EDM115\Desktop\test> pnpm why - r @opentelemetry / core
Legend: production dependency, optional only, dev only
node@1.0.0 C:\Users\EDM115\Desktop\test\packages\node
dependencies:
@sentry / node 9.17 .0
├─┬ @fastify / otel 0.6 .0
│ └── @opentelemetry / core 2.0 .0
├── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- amqplib 0.46 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- connect 0.43 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- express 0.47 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- fs 0.19 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- hapi 0.45 .2
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- http 0.57 .2
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- koa 0.47 .1
│ └── @opentelemetry / core 1.30 .1
└─┬ @opentelemetry / instrumentation- mongoose 0.46 .1
└── @opentelemetry / core 1.30 .1
next@1.0.0 C:\Users\EDM115\Desktop\test\services\next
dependencies:
@sentry / nextjs 9.17 .0
└─┬ @sentry / node 9.17 .0
├─┬ @fastify / otel 0.6 .0
│ └── @opentelemetry / core 2.0 .0
├── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- amqplib 0.46 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- connect 0.43 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- express 0.47 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- fs 0.19 .1
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- hapi 0.45 .2
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- http 0.57 .2
│ └── @opentelemetry / core 1.30 .1
├─┬ @opentelemetry / instrumentation- koa 0.47 .1
│ └── @opentelemetry / core 1.30 .1
└─┬ @opentelemetry / instrumentation- mongoose 0.46 .1
└── @opentelemetry / core 1.30 .1
PS C:\Users\EDM115\Desktop\test> pnpm why - r @opentelemetry / instrumentation
Legend: production dependency, optional only, dev only
node@1.0.0 C:\Users\EDM115\Desktop\test\packages\node
dependencies:
@sentry / node 9.17 .0
├─┬ @fastify / otel 0.6 .0
│ └── @opentelemetry / instrumentation 0.200 .0
├── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- amqplib 0.46 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- connect 0.43 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- dataloader 0.16 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- express 0.47 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- fs 0.19 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- generic- pool 0.43 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- graphql 0.47 .1
│ └── @opentelemetry / instrumentation 0.57 .2
└─┬ @opentelemetry / instrumentation- hapi 0.45 .2
└── @opentelemetry / instrumentation 0.57 .2
next@1.0.0 C:\Users\EDM115\Desktop\test\services\next
dependencies:
@sentry / nextjs 9.17 .0
└─┬ @sentry / node 9.17 .0
├─┬ @fastify / otel 0.6 .0
│ └── @opentelemetry / instrumentation 0.200 .0
├── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- amqplib 0.46 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- connect 0.43 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- dataloader 0.16 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- express 0.47 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- fs 0.19 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- generic- pool 0.43 .1
│ └── @opentelemetry / instrumentation 0.57 .2
├─┬ @opentelemetry / instrumentation- graphql 0.47 .1
│ └── @opentelemetry / instrumentation 0.57 .2
└─┬ @opentelemetry / instrumentation- hapi 0.45 .2
└── @opentelemetry / instrumentation 0.57 .2 Reactions are currently unavailable
You can’t perform that action at this time.
Is there an existing issue for this?
How do you use Sentry?
Sentry Saas (sentry.io)
Which SDK are you using?
@sentry/nextjs
SDK Version
9.17.0
Framework Version
Next 15.3.2
Link to Sentry event
No response
Reproduction Example/SDK Setup
No response
Steps to Reproduce
This issue is more likely to appear in monorepos as I found, but basically since the introduction of
@fastify/otel, it clashes with@sentry/opentelemetry, both of them wanting different versions of@opentelemetrypackages :Expected Result
There should be no peer dependencies issues
Actual Result