Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot
, '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" + '
chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster by slorber · Pull Request #4268 · react/react-native-website · GitHub
Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot
, '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('^' + ".*" + ' chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster by slorber · Pull Request #4268 · react/react-native-website · GitHub
Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot
, '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('^' + ".*" + ' chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster by slorber · Pull Request #4268 · react/react-native-website · GitHub
Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot
, '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" + ' chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster by slorber · Pull Request #4268 · react/react-native-website · GitHub
Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot
, '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('^' + ".*" + ' chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster by slorber · Pull Request #4268 · react/react-native-website · GitHub
Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot
, '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); } })(); })(); chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster by slorber · Pull Request #4268 · react/react-native-website · GitHub
Skip to content

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster - #4268

Merged
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6
Nov 7, 2024
Merged

chore(website): Upgrade to Docusaurus v3.6 - Enable Docusaurus Faster#4268
Simek merged 9 commits into
react:mainfrom
slorber:slorber/docusaurus-v3.6

Conversation

@slorber

@slorberslorber commented Oct 10, 2024

Copy link
Copy Markdown
Contributor

Docusaurus Faster should allow the React Native Website to build... faster.

Benchmarks

Cold build:

Site builds 3x+ faster on cold builds.

hyperfine --prepare 'yarn clear' --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 103.536 s ± 1.828 s [User: 184.537 s, System: 19.702 s]
Range (min … max): 101.862 s … 105.487 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 34.091 s ± 0.556 s [User: 67.332 s, System: 9.419 s]
Range (min … max): 33.746 s … 34.733 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
3.04 ± 0.07 times faster than DOCUSAURUS_FASTER=false yarn build

Warm build

About the same time for warm rebuilds, despite the lack of persistent caching (see facebook/docusaurus#10556). Rspack also outperforms

DOCUSAURUS_FASTER=false yarn build
hyperfine --runs 3 'DOCUSAURUS_FASTER=false yarn build''DOCUSAURUS_FASTER=true yarn build'
Benchmark 1: DOCUSAURUS_FASTER=false yarn build
Time (mean ± σ): 41.263 s ± 3.233 s [User: 49.333 s, System: 9.786 s]
Range (min … max): 37.870 s … 44.308 s 3 runs
Benchmark 2: DOCUSAURUS_FASTER=true yarn build
Time (mean ± σ): 36.655 s ± 3.864 s [User: 71.131 s, System: 11.102 s]
Range (min … max): 32.397 s … 39.936 s 3 runs
Summary
DOCUSAURUS_FASTER=true yarn build ran
1.13 ± 0.15 times faster than DOCUSAURUS_FASTER=false yarn build

@netlify

netlifyBot commented Oct 10, 2024

Copy link
Copy Markdown

Deploy Preview for react-native ready!

NameLink
🔨 Latest commit153c7c5
🔍 Latest deploy loghttps://app.netlify.com/sites/react-native/deploys/672cacfdad3d9100087d4eaa
😎 Deploy Previewhttps://deploy-preview-4268--react-native.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@slorberslorber mentioned this pull request Oct 10, 2024
@slorber

Copy link
Copy Markdown
ContributorAuthor

Docusaurus v3.6 is out - PR updated

Blog post coming: https://docusaurus.io/blog/releases/3.6

@Simek ready to review

@slorber
slorber marked this pull request as ready for review November 4, 2024 11:02

@SimekSimek left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for working on the upgrade, tested locally, LGTM! 👍

@Simek
Simek requested a review from cortinicoNovember 4, 2024 17:59
@cortinico

Copy link
Copy Markdown
Contributor

There seems to be something going on with the banner on top (it's like cropped?):

BeforeAftre
Screenshot 2024-11-04 at 18 08 21Screenshot 2024-11-04 at 18 08 25

@Simek

Simek commented Nov 4, 2024

Copy link
Copy Markdown
Collaborator

Nice catch Nico! 👍

Found out that our CSS variable reassignment has been superseded by @media scoped overwrite in the Docusuars code.

Pushed a small fix for that, and also updated the lock after switching from pre-release to stable Docusuars version.

@slorber

Copy link
Copy Markdown
ContributorAuthor

nice catch thanks

Switching for cssnano to lightningcss might have some subtle effects on CSS order. Previously our optimizer was a bit too aggressive/unsafe and removing that aggressivity (that doesn't even exist in lightnings) might change some rules being applied.

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

@cortinico

Copy link
Copy Markdown
Contributor

If you want more confidence than manual review, I can run my visual regression tests on the PR, similarly to what I did for the Docusaurus v3 upgrade here #3780

Yeah that would be nice if is not too much work

@slorber

slorber commented Nov 5, 2024

Copy link
Copy Markdown
ContributorAuthor

I'll do that on Thursday when I'm back on Docusaurus 👍

Yes, it's additional manual work for me because Argos CI is not installed on this repo and I have to work around that using a separate test repo.

In the future, if you want to have visual regression tests simply by adding a PR label on a PR, you could adopt this CI workflow: https://docusaurus.io/blog/upgrading-frontend-dependencies-with-confidence-using-visual-regression-testing

I suggested it on Discord already but not sure who is supposed to make the decision.
I think if the React Native team asks for it, @zpao could add Argos to the repo (free OSS plan, already approved for Docusaurus) and I could help you set it up.

The question is: is it worth it?
Do you see yourself using visual regression tests more regularly?
Can it be useful to you outside of my upgrade PRs?

@cortinico

Copy link
Copy Markdown
Contributor

Do you see yourself using visual regression tests more regularly?

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

@slorber

Copy link
Copy Markdown
ContributorAuthor

I guess our primary use cases would be significant version bumps like this one. We rarely do site-wide changes that are hard to check if regressing from a preview

If I'm the only one doing these bumps, it's probably useless then. If others do it, it may be useful.


Visual regression tests here:

PR: slorber/rnw-visual-tests#9

Only one change reported:

CleanShot 2024-11-07 at 13 26 41

Report: https://app.argos-ci.com/slorber/rnw-visual-tests/builds/75/117730262

Note: this is a false positive and happens because this page has a snack player input autofocus that makes the page scroll: https://reactnative.dev/docs/improvingux

So, it looks safe to merge 👍

@Simek
Simek merged commit f82aaf5 into react:mainNov 7, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@slorber@cortinico@Simek@facebook-github-bot