Skip to content

[beta] upgrade sandpack and refactor sandpack.css #4843

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Aug 31, 2022
Merged

[beta] upgrade sandpack and refactor sandpack.css #4843

merged 7 commits into from
Aug 31, 2022

Conversation

danilowoz
Copy link
Contributor

A new Sandpack version has been shipped, which contains a ton of improvements to how we manage the styles and make the API more consistent. So this PR upgraded Sandpack and took the change to refactor some parts that weren’t easy to maintain, especially the sandpack.css file.

Why now? React Docs is currently using a different channel (@codesandbox/sandpack-react@experimental), which was introduced due to some hard dependencies from react-devtools-inline. However, over time it started to be very out date from the main Sandpack branch, which contains the new features mentioned above, and doing this migration will make it easier to introduce future feature requests and bug fixes.

What are the risks? As you can see, most of the changes are API breaking changes and the CSS file refactor. I’m pretty confident that the new Sandpack version will not introduce any problem because it’s already running for a few months without any problem. Despite the many tests I did, the style changes might introduce some regression due to the number of changes in this file. But, in order to avoid any visual regression, I did the following testing routine:

  • Ran a visual regression test on all pages and sandboxes 1;
  • Followed a strict checklist based on the problems we have faced on previous PRs 2;
  • Reduced the scope to avoid touching on unnecessary parts, which can be addressed after this PR;
  • Tested on desktop and mobile interacting with the playground, switching between dark and light theme, triggering eslint integration, and running console logs;

TODO / known issues

  • react-devtools-inline is still depending on some unpublished React API (confirmed with Brian feat(react-devtools): update to react-devtools-inline  codesandbox/sandpack#537), so after merging this PR, I need to create an updated experimental channel on Sandpack in order to support it again. Hopefully, it’s fine to merge this PR without React Devtools because currently, there’s no playground with this component.

Footnotes

  1. Visual regression tests: left side (main branch), center (current branch), and the right one is the visual difference between them. You can note that there in the NavigationBar component, there is a typo (foooo) that works with the purpose of making sure the visual testing is working. Plus, there are some pages that have some unexplained visual differences (rendering issue?), which can be discarded as many others pages don't contain the same problem.

  2. Regression checklist

    • Decorations are still rendering (/apis/usestate);
    • It’s possible to run multiple DevTools on the same page;
    • Edit content on markdown file;
    • Reset button: it should reset the content and refresh the preview;
    • The line-height of the CodeEditor component is correctly 24px;
    • Navigate in the codebase (command + arrow keys);
    • Scroll tests: jump to the very end of the page, go back to a Sandpack;
    • On loading state: no layout shift between placeholder and editor;
    • Mobile version: no layout shift on the scroll;
    • Show inline error;
    • No extra console logs;
    • Make sure all snippets code are really read-only (focus & tab, command + X);

@@ -1,37 +0,0 @@
diff --git a/node_modules/@codesandbox/sandpack-react/dist/esm/index.js b/node_modules/@codesandbox/sandpack-react/dist/esm/index.js
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sandpack@1.x already supports React 18 templace


{showDevTools && (
<SandpackReactDevTools onLoadModule={onDevToolsLoad} />
<SandpackLayout
Copy link
Contributor Author

Choose a reason for hiding this comment

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

SandpackLayout pretty much does the same thing of the previous code

</SandpackLayout>

{showDevTools && (
// @ts-ignore TODO(@danilowoz): support devtools
Copy link
Contributor Author

@danilowoz danilowoz Jul 27, 2022

Choose a reason for hiding this comment

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

TODO to be addressed after this PR: reimplement react-devtools-inline support

Copy link
Collaborator

Choose a reason for hiding this comment

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

Shall we create an issue so that we don't miss this one?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have a PR waiting to be merged, once we merge this one.

codesandbox/sandpack#537

import cn from 'classnames';
import {Error} from './Error';
import {SandpackConsole} from './Console';
import type {LintDiagnostic} from './useSandpackLint';

/**
* TODO: can we use React.useId?
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Can we?

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think yes

@github-actions
Copy link

github-actions bot commented Jul 27, 2022

Size Changes

📦 Next.js Bundle Analysis

This analysis was generated by the next.js bundle analysis action 🤖

🎉 Global Bundle Size Decreased

Page Size (compressed)
global 82.64 KB (🟢 -2.04 KB)
Details

The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!

Two Hundred Thirty-one Pages Changed Size

The following pages changed size from the code in this PR compared to its base branch:

Page Size (compressed) First Load
/ 48.55 KB (🟡 +2 B) 131.19 KB
/404 47.65 KB (🟡 +2 B) 130.29 KB
/apis/react 49.85 KB (🟡 +2 B) 132.49 KB
/apis/react-dom 48.87 KB (🟡 +2 B) 131.52 KB
/apis/react-dom/client/createRoot 53.28 KB (🟡 +2 B) 135.93 KB
/apis/react-dom/client/hydrateRoot 51.49 KB (🟡 +2 B) 134.14 KB
/apis/react-dom/createPortal 47.85 KB (🟡 +2 B) 130.5 KB
/apis/react-dom/findDOMNode 48.11 KB (🟡 +2 B) 130.76 KB
/apis/react-dom/flushSync 47.86 KB (🟡 +2 B) 130.5 KB
/apis/react-dom/hydrate 50.74 KB (🟡 +2 B) 133.39 KB
/apis/react-dom/render 50.61 KB (🟡 +2 B) 133.25 KB
/apis/react-dom/server/renderToNodeStream 47.84 KB (🟡 +2 B) 130.48 KB
/apis/react-dom/server/renderToPipeableStream 47.84 KB (🟡 +2 B) 130.48 KB
/apis/react-dom/server/renderToReadableStream 47.97 KB (🟡 +2 B) 130.62 KB
/apis/react-dom/server/renderToStaticMarkup 48.04 KB (🟡 +2 B) 130.69 KB
/apis/react-dom/server/renderToStaticNodeStream 47.98 KB (🟡 +2 B) 130.63 KB
/apis/react-dom/server/renderToString 47.95 KB (🟡 +2 B) 130.59 KB
/apis/react-dom/unmountComponentAtNode 47.94 KB (🟡 +2 B) 130.59 KB
/apis/react/Children 47.83 KB (🟡 +2 B) 130.48 KB
/apis/react/Component 47.95 KB (🟡 +2 B) 130.59 KB
/apis/react/Fragment 49.01 KB (🟡 +2 B) 131.65 KB
/apis/react/PureComponent 48.02 KB (🟡 +2 B) 130.67 KB
/apis/react/StrictMode 47.73 KB (🟡 +2 B) 130.37 KB
/apis/react/Suspense 47.8 KB (🟡 +2 B) 130.45 KB
/apis/react/cloneElement 47.8 KB (🟡 +2 B) 130.45 KB
/apis/react/createContext 50.19 KB (🟡 +2 B) 132.83 KB
/apis/react/createElement 47.8 KB (🟡 +2 B) 130.45 KB
/apis/react/createFactory 47.8 KB (🟡 +2 B) 130.44 KB
/apis/react/createRef 47.79 KB (🟡 +2 B) 130.43 KB
/apis/react/forwardRef 47.93 KB (🟡 +2 B) 130.57 KB
/apis/react/isValidElement 47.83 KB (🟡 +2 B) 130.48 KB
/apis/react/lazy 47.92 KB (🟡 +2 B) 130.57 KB
/apis/react/memo 47.82 KB (🟡 +2 B) 130.47 KB
/apis/react/startTransition 47.8 KB (🟡 +2 B) 130.44 KB
/apis/react/useCallback 47.82 KB (🟡 +2 B) 130.46 KB
/apis/react/useContext 56.14 KB (🟡 +2 B) 138.79 KB
/apis/react/useDebugValue 47.86 KB (🟡 +2 B) 130.5 KB
/apis/react/useDeferredValue 47.95 KB (🟡 +2 B) 130.59 KB
/apis/react/useEffect 47.8 KB (🟡 +2 B) 130.45 KB
/apis/react/useId 47.94 KB (🟡 +2 B) 130.58 KB
/apis/react/useImperativeHandle 47.81 KB (🟡 +2 B) 130.46 KB
/apis/react/useInsertionEffect 48.07 KB (🟡 +2 B) 130.71 KB
/apis/react/useLayoutEffect 47.81 KB (🟡 +2 B) 130.46 KB
/apis/react/useMemo 47.82 KB (🟡 +2 B) 130.46 KB
/apis/react/useReducer 55.78 KB (🟡 +2 B) 138.42 KB
/apis/react/useRef 53.47 KB (🟡 +2 B) 136.12 KB
/apis/react/useState 59.42 KB (🟡 +2 B) 142.06 KB
/apis/react/useSyncExternalStore 47.95 KB (🟡 +2 B) 130.6 KB
/apis/react/useTransition 47.81 KB (🟡 +2 B) 130.46 KB
/blog/2013/06/02/jsfiddle-integration 58.46 KB (🟡 +2 B) 141.1 KB
/blog/2013/06/05/why-react 60.19 KB (🟡 +2 B) 142.83 KB
/blog/2013/06/12/community-roundup 59.89 KB (🟡 +2 B) 142.54 KB
/blog/2013/06/19/community-roundup-2 60.55 KB (🟡 +2 B) 143.2 KB
/blog/2013/06/21/react-v0-3-3 58.61 KB (🟡 +2 B) 141.25 KB
/blog/2013/06/27/community-roundup-3 60.92 KB (🟡 +2 B) 143.57 KB
/blog/2013/07/02/react-v0-4-autobind-by-default 59.22 KB (🟡 +2 B) 141.87 KB
/blog/2013/07/03/community-roundup-4 60.29 KB (🟡 +2 B) 142.94 KB
/blog/2013/07/11/react-v0-4-prop-validation-and-default-values 59.1 KB (🟡 +2 B) 141.74 KB
/blog/2013/07/17/react-v0-4-0 59.81 KB (🟡 +2 B) 142.45 KB
/blog/2013/07/23/community-roundup-5 60.68 KB (🟡 +2 B) 143.33 KB
/blog/2013/07/26/react-v0-4-1 58.57 KB (🟡 +2 B) 141.22 KB
/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails 59.17 KB (🟡 +2 B) 141.82 KB
/blog/2013/08/05/community-roundup-6 59.98 KB (🟡 +2 B) 142.63 KB
/blog/2013/08/19/use-react-and-jsx-in-python-applications 59.19 KB (🟡 +2 B) 141.83 KB
/blog/2013/08/26/community-roundup-7 60.15 KB (🟡 +2 B) 142.79 KB
/blog/2013/09/24/community-roundup-8 61.58 KB (🟡 +2 B) 144.23 KB
/blog/2013/10/03/community-roundup-9 60.52 KB (🟡 +2 B) 143.16 KB
/blog/2013/10/16/react-v0.5.0 60.2 KB (🟡 +2 B) 142.85 KB
/blog/2013/10/29/react-v0-5-1 58.56 KB (🟡 +2 B) 141.21 KB
/blog/2013/11/06/community-roundup-10 62.18 KB (🟡 +2 B) 144.82 KB
/blog/2013/11/18/community-roundup-11 61.26 KB (🟡 +2 B) 143.9 KB
/blog/2013/12/18/react-v0.5.2-v0.4.2 59.04 KB (🟡 +2 B) 141.68 KB
/blog/2013/12/19/react-v0.8.0 59.45 KB (🟡 +2 B) 142.1 KB
/blog/2013/12/23/community-roundup-12 60.91 KB (🟡 +2 B) 143.56 KB
/blog/2013/12/30/community-roundup-13 60.69 KB (🟡 +2 B) 143.34 KB
/blog/2014/01/02/react-chrome-developer-tools 58.95 KB (🟡 +2 B) 141.6 KB
/blog/2014/01/06/community-roundup-14 60.29 KB (🟡 +2 B) 142.93 KB
/blog/2014/02/05/community-roundup-15 61.51 KB (🟡 +2 B) 144.15 KB
/blog/2014/02/15/community-roundup-16 61.21 KB (🟡 +2 B) 143.86 KB
/blog/2014/02/16/react-v0.9-rc1 61.63 KB (🟡 +2 B) 144.27 KB
/blog/2014/02/20/react-v0.9 62.07 KB (🟡 +2 B) 144.71 KB
/blog/2014/02/24/community-roundup-17 60.93 KB (🟡 +2 B) 143.58 KB
/blog/2014/03/14/community-roundup-18 61.9 KB (🟡 +2 B) 144.54 KB
/blog/2014/03/19/react-v0.10-rc1 60.21 KB (🟡 +2 B) 142.85 KB
/blog/2014/03/21/react-v0.10 60.23 KB (🟡 +2 B) 142.88 KB
/blog/2014/03/28/the-road-to-1.0 60.34 KB (🟡 +2 B) 142.99 KB
/blog/2014/04/04/reactnet 58.99 KB (🟡 +2 B) 141.63 KB
/blog/2014/05/06/flux 59.11 KB (🟡 +2 B) 141.75 KB
/blog/2014/05/29/one-year-of-open-source-react 59.33 KB (🟡 +2 B) 141.98 KB
/blog/2014/06/27/community-roundup-19 60.88 KB (🟡 +2 B) 143.52 KB
/blog/2014/07/13/react-v0.11-rc1 61.26 KB (🟡 +2 B) 143.91 KB
/blog/2014/07/17/react-v0.11 62.52 KB (🟡 +2 B) 145.16 KB
/blog/2014/07/25/react-v0.11.1 59.46 KB (🟡 +2 B) 142.11 KB
/blog/2014/07/28/community-roundup-20 61.02 KB (🟡 +2 B) 143.66 KB
/blog/2014/07/30/flux-actions-and-the-dispatcher 60.65 KB (🟡 +2 B) 143.3 KB
/blog/2014/08/03/community-roundup-21 60.69 KB (🟡 +2 B) 143.33 KB
/blog/2014/09/03/introducing-the-jsx-specification 58.69 KB (🟡 +2 B) 141.34 KB
/blog/2014/09/12/community-round-up-22 61.17 KB (🟡 +2 B) 143.81 KB
/blog/2014/09/16/react-v0.11.2 59.46 KB (🟡 +2 B) 142.11 KB
/blog/2014/09/24/testing-flux-applications 62.64 KB (🟡 +2 B) 145.29 KB
/blog/2014/10/14/introducing-react-elements 61.6 KB (🟡 +2 B) 144.24 KB
/blog/2014/10/16/react-v0.12-rc1 61.56 KB (🟡 +2 B) 144.21 KB
/blog/2014/10/17/community-roundup-23 62.13 KB (🟡 +2 B) 144.78 KB
/blog/2014/10/27/react-js-conf 58.74 KB (🟡 +2 B) 141.38 KB
/blog/2014/10/28/react-v0.12 61.51 KB (🟡 +2 B) 144.15 KB
/blog/2014/11/24/react-js-conf-updates 59.12 KB (🟡 +2 B) 141.77 KB
/blog/2014/11/25/community-roundup-24 62.36 KB (🟡 +2 B) 145.01 KB
/blog/2014/12/18/react-v0.12.2 59.15 KB (🟡 +2 B) 141.8 KB
/blog/2014/12/19/react-js-conf-diversity-scholarship 59.55 KB (🟡 +2 B) 142.19 KB
/blog/2015/01/27/react-v0.13.0-beta-1 60.52 KB (🟡 +2 B) 143.16 KB
/blog/2015/02/18/react-conf-roundup-2015 62.5 KB (🟡 +2 B) 145.14 KB
/blog/2015/02/20/introducing-relay-and-graphql 61.65 KB (🟡 +2 B) 144.3 KB
/blog/2015/02/24/react-v0.13-rc1 60.55 KB (🟡 +2 B) 143.2 KB
/blog/2015/02/24/streamlining-react-elements 63.1 KB (🟡 +2 B) 145.75 KB
/blog/2015/03/03/react-v0.13-rc2 59.89 KB (🟡 +2 B) 142.53 KB
/blog/2015/03/04/community-roundup-25 60.85 KB (🟡 +2 B) 143.49 KB
/blog/2015/03/10/react-v0.13 61.17 KB (🟡 +2 B) 143.81 KB
/blog/2015/03/16/react-v0.13.1 58.99 KB (🟡 +2 B) 141.63 KB
/blog/2015/03/19/building-the-facebook-news-feed-with-relay 61.75 KB (🟡 +2 B) 144.39 KB
/blog/2015/03/26/introducing-react-native 58.88 KB (🟡 +2 B) 141.53 KB
/blog/2015/03/30/community-roundup-26 60.81 KB (🟡 +2 B) 143.46 KB
/blog/2015/04/17/react-native-v0.4 59.73 KB (🟡 +2 B) 142.37 KB
/blog/2015/04/18/react-v0.13.2 59.07 KB (🟡 +2 B) 141.71 KB
/blog/2015/05/01/graphql-introduction 63.56 KB (🟡 +2 B) 146.2 KB
/blog/2015/05/08/react-v0.13.3 58.95 KB (🟡 +2 B) 141.6 KB
/blog/2015/05/22/react-native-release-process 59.11 KB (🟡 +2 B) 141.75 KB
/blog/2015/06/12/deprecating-jstransform-and-react-tools 59.56 KB (🟡 +2 B) 142.2 KB
/blog/2015/07/03/react-v0.14-beta-1 61.07 KB (🟡 +2 B) 143.71 KB
/blog/2015/08/03/new-react-devtools-beta 59.67 KB (🟡 +2 B) 142.31 KB
/blog/2015/08/11/relay-technical-preview 59.73 KB (🟡 +2 B) 142.38 KB
/blog/2015/08/13/reacteurope-roundup 61.32 KB (🟡 +2 B) 143.96 KB
/blog/2015/09/02/new-react-developer-tools 59.08 KB (🟡 +2 B) 141.73 KB
/blog/2015/09/10/react-v0.14-rc1 64.77 KB (🟡 +2 B) 147.42 KB
/blog/2015/09/14/community-roundup-27 61.24 KB (🟡 +2 B) 143.89 KB
/blog/2015/10/01/react-render-and-top-level-api 60.22 KB (🟡 +2 B) 142.86 KB
/blog/2015/10/07/react-v0.14 65.25 KB (🟡 +2 B) 147.9 KB
/blog/2015/10/19/reactiflux-is-moving-to-discord 60.97 KB (🟡 +2 B) 143.61 KB
/blog/2015/10/28/react-v0.14.1 58.98 KB (🟡 +2 B) 141.62 KB
/blog/2015/11/02/react-v0.14.2 59.01 KB (🟡 +2 B) 141.65 KB
/blog/2015/11/18/react-v0.14.3 59.13 KB (🟡 +2 B) 141.77 KB
/blog/2015/12/04/react-js-conf-2016-diversity-scholarship 60 KB (🟡 +2 B) 142.65 KB
/blog/2015/12/16/ismounted-antipattern 59.6 KB (🟡 +2 B) 142.25 KB
/blog/2015/12/18/react-components-elements-and-instances 63.52 KB (🟡 +2 B) 146.17 KB
/blog/2015/12/29/react-v0.14.4 58.8 KB (🟡 +2 B) 141.44 KB
/blog/2016/01/08/A-implies-B-does-not-imply-B-implies-A 59.82 KB (🟡 +2 B) 142.46 KB
/blog/2016/01/12/discontinuing-ie8-support 58.63 KB (🟡 +2 B) 141.27 KB
/blog/2016/02/19/new-versioning-scheme 60.01 KB (🟡 +2 B) 142.65 KB
/blog/2016/03/07/react-v15-rc1 62.76 KB (🟡 +2 B) 145.4 KB
/blog/2016/03/16/react-v15-rc2 59.62 KB (🟡 +2 B) 142.27 KB
/blog/2016/03/29/react-v0.14.8 58.76 KB (🟡 +2 B) 141.4 KB
/blog/2016/04/07/react-v15 66.95 KB (🟡 +2 B) 149.59 KB
/blog/2016/04/08/react-v15.0.1 59.51 KB (🟡 +2 B) 142.16 KB
/blog/2016/07/11/introducing-reacts-error-code-system 59.22 KB (🟡 +2 B) 141.87 KB
/blog/2016/07/13/mixins-considered-harmful 67.38 KB (🟡 +2 B) 150.02 KB
/blog/2016/07/22/create-apps-with-no-configuration 62.7 KB (🟡 +2 B) 145.35 KB
/blog/2016/08/05/relay-state-of-the-state 62.74 KB (🟡 +2 B) 145.39 KB
/blog/2016/09/28/our-first-50000-stars 64.19 KB (🟡 +2 B) 146.84 KB
/blog/2016/11/16/react-v15.4.0 62.14 KB (🟡 +2 B) 144.79 KB
/blog/2017/04/07/react-v15.5.0 62.71 KB (🟡 +2 B) 145.35 KB
/blog/2017/05/18/whats-new-in-create-react-app 62.11 KB (🟡 +2 B) 144.75 KB
/blog/2017/06/13/react-v15.6.0 60.73 KB (🟡 +2 B) 143.37 KB
/blog/2017/07/26/error-handling-in-react-16 61.08 KB (🟡 +2 B) 143.72 KB
/blog/2017/09/08/dom-attributes-in-react-16 61.51 KB (🟡 +2 B) 144.15 KB
/blog/2017/09/25/react-v15.6.2 59.84 KB (🟡 +2 B) 142.48 KB
/blog/2017/09/26/react-v16.0 64.97 KB (🟡 +2 B) 147.62 KB
/blog/2017/11/28/react-v16.2.0-fragment-support 62.9 KB (🟡 +2 B) 145.55 KB
/blog/2017/12/07/introducing-the-react-rfc-process 59.43 KB (🟡 +2 B) 142.07 KB
/blog/2017/12/15/improving-the-repository-infrastructure 75.21 KB (🟡 +2 B) 157.86 KB
/blog/2018/03/01/sneak-peek-beyond-react-16 59.38 KB (🟡 +2 B) 142.03 KB
/blog/2018/03/27/update-on-async-rendering 64.63 KB (🟡 +2 B) 147.27 KB
/blog/2018/03/29/react-v-16-3 61.44 KB (🟡 +2 B) 144.09 KB
/blog/2018/05/23/react-v-16-4 61.58 KB (🟡 +2 B) 144.23 KB
/blog/2018/06/07/you-probably-dont-need-derived-state 65.24 KB (🟡 +2 B) 147.89 KB
/blog/2018/08/01/react-v-16-4-2 60.23 KB (🟡 +2 B) 142.88 KB
/blog/2018/09/10/introducing-the-react-profiler 61.84 KB (🟡 +2 B) 144.49 KB
/blog/2018/10/01/create-react-app-v2 62.32 KB (🟡 +2 B) 144.96 KB
/blog/2018/10/23/react-v-16-6 61.52 KB (🟡 +2 B) 144.16 KB
/blog/2018/11/13/react-conf-recap 59.23 KB (🟡 +2 B) 141.88 KB
/blog/2018/11/27/react-16-roadmap 65.42 KB (🟡 +2 B) 148.07 KB
/blog/2018/12/19/react-v-16-7 60.35 KB (🟡 +2 B) 143 KB
/blog/2019/02/06/react-v16.8.0 62.62 KB (🟡 +2 B) 145.27 KB
/blog/2019/02/23/is-react-translated-yet 62.18 KB (🟡 +2 B) 144.83 KB
/blog/2019/08/08/react-v16.9.0 65.12 KB (🟡 +2 B) 147.76 KB
/blog/2019/08/15/new-react-devtools 59.72 KB (🟡 +2 B) 142.37 KB
/blog/2019/10/22/react-release-channels 61.54 KB (🟡 +2 B) 144.19 KB
/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense 66.24 KB (🟡 +2 B) 148.88 KB
/blog/2020/02/26/react-v16.13.0 62.46 KB (🟡 +2 B) 145.11 KB
/blog/2020/08/10/react-v17-rc 68.75 KB (🟡 +2 B) 151.39 KB
/community 48.24 KB (🟡 +2 B) 130.89 KB
/community/acknowledgements 49.45 KB (🟡 +2 B) 132.09 KB
/community/meet-the-team 50.13 KB (🟡 +2 B) 132.77 KB
/learn 53.2 KB (🟢 -6 B) 135.84 KB
/learn/add-react-to-a-website 53.32 KB (🟡 +2 B) 135.96 KB
/learn/adding-interactivity 54.89 KB (🟡 +2 B) 137.54 KB
/learn/choosing-the-state-structure 60.61 KB (🟡 +2 B) 143.25 KB
/learn/conditional-rendering 52.84 KB (🟡 +2 B) 135.48 KB
/learn/describing-the-ui 52.06 KB (🟡 +2 B) 134.7 KB
/learn/editor-setup 49.52 KB (🟡 +2 B) 132.17 KB
/learn/escape-hatches 47.57 KB (🟡 +2 B) 130.21 KB
/learn/extracting-state-logic-into-a-reducer 58.25 KB (🟡 +2 B) 140.89 KB
/learn/importing-and-exporting-components 51.24 KB (🟡 +2 B) 133.88 KB
/learn/installation 48.85 KB (🟡 +2 B) 131.49 KB
/learn/javascript-in-jsx-with-curly-braces 51.31 KB (🟡 +2 B) 133.96 KB
/learn/keeping-components-pure 55.44 KB (🟡 +2 B) 138.09 KB
/learn/lifecycle-of-reactive-effects 62.62 KB (🟡 +2 B) 145.26 KB
/learn/managing-state 54.16 KB (🟡 +2 B) 136.81 KB
/learn/manipulating-the-dom-with-refs 56.41 KB (🟡 +2 B) 139.06 KB
/learn/passing-data-deeply-with-context 55.96 KB (🟡 +2 B) 138.6 KB
/learn/passing-props-to-a-component 55.01 KB (🟡 +2 B) 137.66 KB
/learn/preserving-and-resetting-state 58.98 KB (🟡 +2 B) 141.63 KB
/learn/queueing-a-series-of-state-updates 52.81 KB (🟡 +2 B) 135.45 KB
/learn/react-developer-tools 48.8 KB (🟡 +2 B) 131.45 KB
/learn/reacting-to-input-with-state 57.42 KB (🟡 +2 B) 140.07 KB
/learn/referencing-values-with-refs 54.33 KB (🟡 +2 B) 136.97 KB
/learn/removing-effect-dependencies 60.18 KB (🟡 +2 B) 142.83 KB
/learn/render-and-commit 51.38 KB (🟡 +2 B) 134.02 KB
/learn/rendering-lists 55.4 KB (🟡 +2 B) 138.04 KB
/learn/responding-to-events 54.33 KB (🟡 +2 B) 136.98 KB
/learn/scaling-up-with-reducer-and-context 52.38 KB (🟡 +2 B) 135.03 KB
/learn/separating-events-from-effects 60.25 KB (🟡 +2 B) 142.89 KB
/learn/sharing-state-between-components 53.46 KB (🟡 +2 B) 136.1 KB
/learn/start-a-new-react-project 49.88 KB (🟡 +2 B) 132.52 KB
/learn/state-a-components-memory 58.54 KB (🟡 +2 B) 141.18 KB
/learn/state-as-a-snapshot 52.11 KB (🟡 +2 B) 134.76 KB
/learn/synchronizing-with-effects 65.23 KB (🟡 +2 B) 147.87 KB
/learn/thinking-in-react 54.18 KB (🟡 +2 B) 136.82 KB
/learn/updating-arrays-in-state 56.41 KB (🟡 +2 B) 139.05 KB
/learn/updating-objects-in-state 56.14 KB (🟡 +2 B) 138.78 KB
/learn/writing-markup-with-jsx 51.56 KB (🟡 +2 B) 134.2 KB
/learn/you-might-not-need-an-effect 64.61 KB (🟡 +2 B) 147.25 KB
/learn/your-first-component 52.15 KB (🟡 +2 B) 134.79 KB
Details

Only the gzipped size is provided here based on an expert tip.

First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.

Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis

Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 10% or more, there will be a red status indicator applied, indicating that special attention should be given to this.

autorun,
initMode: 'user-visible',
initModeObserverOptions: {rootMargin: '1400px 0px'},
bundlerURL: 'https://6b760a26.sandpack-bundler.pages.dev',
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I didn't update the bundler in order to avoid unnecessary changes, but I'd recommend upgrading it later.

@@ -10,7 +10,6 @@ import '@docsearch/css';
import '../styles/algolia.css';
import '../styles/index.css';
import '../styles/sandpack.css';
import '@codesandbox/sandpack-react/dist/index.css';
Copy link
Contributor Author

Choose a reason for hiding this comment

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

👋


const MyDocument = () => {
// @todo specify language in HTML?
return (
<Html lang="en">
<Head />
<body className="font-sans antialiased text-lg bg-wash dark:bg-wash-dark text-secondary dark:text-secondary-dark leading-base">
<style id="sandpack">{getSandpackCssText()}</style>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This will inject the CSS variables, and later the components styles after Suspense rendering Sandpack components

@@ -2,289 +2,268 @@
* Copyright (c) Facebook, Inc. and its affiliates.
Copy link
Contributor Author

@danilowoz danilowoz Jul 27, 2022

Choose a reason for hiding this comment

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

Most of the changes from this PR are on this file. Here are the highlights of these changes:

  • Removed unnecessaries !important;
  • Tried to reuse tailwind variables instead of hardcoded colors;
  • Addressed breaking changes due to the new Sandpack version;
  • Reorganized and regrouped styles by categories;
  • Kept the "See more" section as it was; there was no need to changes it;

@@ -467,6 +479,19 @@
"@codemirror/view" "^0.19.0"
"@lezer/javascript" "^0.15.1"

"@codemirror/lang-markdown@^0.19.3":
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't know if it's useful, but from now on, Sandpack supports plain text and markdown files

@danilowoz
Copy link
Contributor Author

danilowoz commented Jul 27, 2022

@harish-sethuraman, I'd appreciate it if you could help out by reviewing this. I know it's a big PR, but you can navigate through commits, then make it'll easier to understand all changes.

Plus, after merging this PR, I believe we can reduce the first-load bundle size even more.

@harish-sethuraman
Copy link
Collaborator

harish-sethuraman commented Jul 28, 2022

Screenshot 2022-07-28 at 11 08 46 AM

Screenshot 2022-07-28 at 11 32 55 AM

  • Small NIT: A new border radius has been introduced here :)
Screen.Recording.2022-07-28.at.11.35.23.AM.mov

There is a difference in background color when we shift to mobile view

@harish-sethuraman
Copy link
Collaborator

There a also seems to be a little bit different in sandbox sizes for laptop devices probably there is a change in font

Before ( main branch) After (current one)
Screenshot 2022-07-28 at 11 46 36 AM Screenshot 2022-07-28 at 11 47 19 AM

Seems like when a line is highlighted for error we introduced a border radius there as well. Not sure if that was intentional or not :)

These are the changes I noticed between main and this branch

@danilowoz
Copy link
Contributor Author

danilowoz commented Jul 28, 2022

@harish-sethuraman

  • ✅ console error: there was a wrong decorator configuration on a code block;
  • onLoadModule: comment out until we address it in a follow-up PR;
  • ✅ border radius on code-editor: good catch!
  • ✅ background color shift: I standardized it, from now on it uses always the same background;
  • ✨ error highlight border-radius: good catch again. It was introduced on Sandpack, and I intentionally kept it because I believe it's a nice touch

Copy link
Collaborator

@harish-sethuraman harish-sethuraman left a comment

Choose a reason for hiding this comment

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

LGTM Almost all the things look clear and changes are good ✅

Copy link
Member

@gaearon gaearon left a comment

Choose a reason for hiding this comment

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

On a long page like https://beta-reactjs-8lyhiud9b-fbopensource.vercel.app/learn/thinking-in-react, when you "show more" and expand the sandbox, the preview area should be sticky. I don't think this works now.

@danilowoz
Copy link
Contributor Author

✅ Sticky long sandboxes;
✅ Just found another issue where the syntax highlight wasn't working on json code snippets;

@gaearon
Copy link
Member

gaearon commented Aug 5, 2022

If you turn on "highlight updates", there's something weird happening with preview re-renders. I think it constantly re-renders every example in a loop.

@danilowoz
Copy link
Contributor Author

Hey, @gaearon I couldn't reproduce it. Is it happening in a specific sandbox or all of them?

Screen.Recording.2022-08-08.at.09.40.42.mov

@gaearon
Copy link
Member

gaearon commented Aug 31, 2022

Can't repro either. Not sure what this was. Let's give it a try?

@gaearon
Copy link
Member

gaearon commented Sep 1, 2022

I think this added a development regression. When I edit regular code blocks, Fast Refresh seems to no longer (or at least not consistently) pick up my edits.

@gaearon
Copy link
Member

gaearon commented Sep 2, 2022

Reverted in #4959 (comment)

@gaearon
Copy link
Member

gaearon commented Sep 10, 2022

wait this one has colors in SSR?????!!!

gaearon added a commit that referenced this pull request Sep 10, 2022
@gaearon gaearon mentioned this pull request Sep 10, 2022
gaearon added a commit that referenced this pull request Sep 10, 2022
* Revert "Revert "[beta] upgrade sandpack and refactor sandpack.css (#4843)" (#4959)"

This reverts commit da6a06e.

* Fix tabbing

* Fixes

* More bump

* Bump bundler

* Fix overflows
@gaearon
Copy link
Member

gaearon commented Sep 10, 2022

merged via #5033

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants