Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
docs: Add Safari ITP documentation for setActive() decorateUrl by nikosdouvlis · Pull Request #3013 · clerk/clerk-docs · GitHub
Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' docs: Add Safari ITP documentation for setActive() decorateUrl by nikosdouvlis · Pull Request #3013 · clerk/clerk-docs · GitHub
Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', '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('^' + ".*" + ' docs: Add Safari ITP documentation for setActive() decorateUrl by nikosdouvlis · Pull Request #3013 · clerk/clerk-docs · GitHub
Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny
, '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" + ' docs: Add Safari ITP documentation for setActive() decorateUrl by nikosdouvlis · Pull Request #3013 · clerk/clerk-docs · GitHub
Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny
, '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('^' + ".*" + ' docs: Add Safari ITP documentation for setActive() decorateUrl by nikosdouvlis · Pull Request #3013 · clerk/clerk-docs · GitHub
Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny
, '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); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' docs: Add Safari ITP documentation for setActive() decorateUrl by nikosdouvlis · Pull Request #3013 · clerk/clerk-docs · GitHub
Skip to content

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

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

docs: Add Safari ITP documentation for setActive() decorateUrl - #3013

Merged
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs
Feb 6, 2026
Merged

docs: Add Safari ITP documentation for setActive() decorateUrl#3013
nikosdouvlis merged 7 commits into
core-3from
nikos/safari-itp-docs

Conversation

@nikosdouvlis

@nikosdouvlisnikosdouvlis commented Jan 29, 2026

Copy link
Copy Markdown
Member

🔎 Preview:

What changed?

Adds documentation for the Safari ITP cookie workaround introduced in clerk/javascript#7623

Summary

  • Added decorateUrl parameter to SetActiveParams navigate callback documentation
  • Added "Safari cookie limitations" section to the Clerk class reference explaining:
    • Why Safari's ITP limits cookies to 7 days
    • How to use decorateUrl to enable automatic cookie refresh
    • Code example showing the recommended pattern

Related

Add decorateUrl to navigate callbacks for Safari ITP support PR updates all code examples to use this new feature

@nikosdouvlis
nikosdouvlis requested a review from a team as a code ownerJanuary 29, 2026 13:37
@vercel

vercelBot commented Jan 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
clerk-docsReadyReadyPreviewFeb 5, 2026 0:55am

Request Review

Add documentation for the Safari cookie limitation workaround:
- Added decorateUrl parameter to SetActiveParams navigate callback
- Added Safari cookie limitations section to Clerk class reference
Comment threaddocs/reference/javascript/clerk.mdx Outdated
Comment threaddocs/reference/javascript/types/set-active-params.mdx Outdated
Comment threaddocs/reference/javascript/clerk.mdx Outdated
- Fix Sarah's comments: navigation URLs → destination URLs, em-dash → spaced dash
- Address Bryce's comment: clarify that ITP affects __client cookie specifically,
not all JS cookies. The limitation is due to CNAME cloaking on clerk. subdomain
Comment threadCLAUDE.md Outdated
@SarahSoutoul

SarahSoutoul commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

This looks good to me but just left one comment around the CLAUDE.md file, feeling out of place? Will approve once that's responded.

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other PR that's related to this but the base branch is core-3?

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@alexisintech if I can have a second pair of eyes on this?

@alexisintech

alexisintech commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

@alexisintech

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.

e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support
which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

@nikosdouvlis

Copy link
Copy Markdown
MemberAuthor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Alexis is correct! I've updated the base branch, the mismatch between the repos got me once again. Apologies for the confusion

@SarahSoutoul

Copy link
Copy Markdown
Contributor

@SarahSoutoul pushed a minor docs review. once @nikosdouvlis confirms if its for core 2 or for core 3, the relevant code examples across the docs need to be updated. so this PR is going to need another update.
e.g. if its for core 2, there are many custom flows that use the navigate() parameter and will need to use this decorateUrl() function.

actually, i've just seen this PR: Add decorateUrl to navigate callbacks for Safari ITP support which is doing just that, and its for the core-3 branch. i think this PR is meant to go to the core-3 branch 😅 which would make sense because the clerk/javascript PR was merged to their main, which is core 3

Yup, that's why I had this question here:

Also, @nikosdouvlis this change is meant to go into main right? Cause there is the other https://github.com/clerk/clerk-docs/pull/3037 that's related to this but the base branch is core-3?

Glad we've got it all figured out.

@nikosdouvlis
nikosdouvlis merged commit e5a6830 into core-3Feb 6, 2026
8 checks passed
@nikosdouvlis
nikosdouvlis deleted the nikos/safari-itp-docs branch February 6, 2026 09:11
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.

5 participants

@nikosdouvlis@SarahSoutoul@alexisintech@brkalow@manovotny