From 9b4c56a210cd2df5e7a94b9bfeb66902b79ec318 Mon Sep 17 00:00:00 2001
From: Monica Powell
Date: Tue, 5 Sep 2023 09:20:45 -0400
Subject: [PATCH 01/27] update conferences to move React Rally 23 to previous
and add upcoming conferences (#6246)
* update conferences to move react rally to previous and add reactjs day
* Add React Alicante
* Update conferences.md
* Update conferences.md to include year of the event
* add anchor link
* Update conferences.md
* Update conferences.md
* chore: update country name
---------
Co-authored-by: Strek
---
src/content/community/conferences.md | 32 +++++++++++++++++++++++++---
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/src/content/community/conferences.md b/src/content/community/conferences.md
index 974e4a825..19080024b 100644
--- a/src/content/community/conferences.md
+++ b/src/content/community/conferences.md
@@ -10,10 +10,20 @@ Do you know of a local React.js conference? Add it here! (Please keep the list c
## Upcoming Conferences {/*upcoming-conferences*/}
-### React Rally 2023 🐙 {/*react-rally-2023*/}
-August 17 & 18, 2023. Salt Lake City, UT, USA
+### RedwoodJS Conference 2023 {/*redwoodjs-conference-2023*/}
+September 26 - 29, 2023. Grants Pass, Oregon + remote (hybrid event)
-[Website](https://www.reactrally.com/) - [Twitter](https://twitter.com/ReactRally) - [Instagram](https://www.instagram.com/reactrally/)
+[Website](https://www.redwoodjsconf.com/) - [Twitter](https://twitter.com/redwoodjs)
+
+### React Alicante 2023 {/*react-alicante-2023*/}
+September 28 - 30, 2023. Alicante, Spain
+
+[Website](https://reactalicante.es/) - [Twitter](https://twitter.com/reactalicante)
+
+### React Live 2023 {/*react-live-2023*/}
+September 29, 2023. Amsterdam, Netherlands
+
+[Website](https://reactlive.nl/)
### React Native EU 2023 {/*react-native-eu-2023*/}
September 7 & 8, 2023. Wrocław, Poland
@@ -26,11 +36,22 @@ October 5 - 7, 2023. In-person in Goa, India (hybrid event) + Oct 3 2023 - remot
[Website](https://www.reactindia.io) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia) - [Youtube](https://www.youtube.com/channel/UCaFbHCBkPvVv1bWs_jwYt3w)
+### React Brussels 2023 {/*react-brussels-2023*/}
+October 13th 2023. In-person in Brussels, Belgium + Remote (hybrid)
+
+[Website](https://www.react.brussels/) - [Twitter](https://twitter.com/BrusselsReact)
+
### React Advanced 2023 {/*react-advanced-2023*/}
October 20 & 23, 2023. In-person in London, UK + remote first interactivity (hybrid event)
[Website](https://www.reactadvanced.com/) - [Twitter](https://twitter.com/ReactAdvanced) - [Facebook](https://www.facebook.com/ReactAdvanced) - [Videos](https://portal.gitnation.org/events/react-advanced-conference-2023)
+### reactjsday 2023 {/*reactjsday-2023*/}
+October 27th 2023. In-person in Verona, Italy and online (hybrid event)
+
+[Website](https://2023.reactjsday.it/) - [Twitter](https://twitter.com/reactjsday) - [Facebook](https://www.facebook.com/GrUSP/) - [YouTube](https://www.youtube.com/c/grusp)
+
+
### React Summit US 2023 {/*react-summit-us-2023*/}
November 13 & 15, 2023. In-person in New York, US + remote first interactivity (hybrid event)
@@ -43,6 +64,11 @@ December 8 & 12, 2023. In-person in Berlin, Germany + remote first interactivity
## Past Conferences {/*past-conferences*/}
+### React Rally 2023 🐙 {/*react-rally-2023*/}
+August 17 & 18, 2023. Salt Lake City, UT, USA
+
+[Website](https://www.reactrally.com/) - [Twitter](https://twitter.com/ReactRally) - [Instagram](https://www.instagram.com/reactrally/)
+
### React Nexus 2023 {/*react-nexus-2023*/}
July 07 & 08, 2023. Bangalore, India (In-person event)
From be6c39d8b7d4baf1199d695e5c179e5e511e5183 Mon Sep 17 00:00:00 2001
From: Saksham Gupta <90046016+0xSaksham@users.noreply.github.com>
Date: Tue, 5 Sep 2023 21:44:53 +0530
Subject: [PATCH 02/27] Update tutorial-tic-tac-toe.md (#6259)
Grammar fix
---
src/content/learn/tutorial-tic-tac-toe.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/content/learn/tutorial-tic-tac-toe.md b/src/content/learn/tutorial-tic-tac-toe.md
index 16e5f518d..7c5adb118 100644
--- a/src/content/learn/tutorial-tic-tac-toe.md
+++ b/src/content/learn/tutorial-tic-tac-toe.md
@@ -2266,7 +2266,7 @@ to
Alexa: 5 tasks left
```
-In addition to the updated counts, a human reading this would probably say that you swapped Alexa and Ben's ordering and inserted Claudia between Alexa and Ben. However, React is a computer program and can't know what you intended, so you need to specify a _key_ property for each list item to differentiate each list item from its siblings. If your data was from a database, Alexa, Ben, and Claudia's database IDs could be used as keys.
+In addition to the updated counts, a human reading this would probably say that you swapped Alexa and Ben's ordering and inserted Claudia between Alexa and Ben. However, React is a computer program and does not know what you intended, so you need to specify a _key_ property for each list item to differentiate each list item from its siblings. If your data was from a database, Alexa, Ben, and Claudia's database IDs could be used as keys.
```js {1}
From 05380da53eb139b0141ad48f85e6d099138af151 Mon Sep 17 00:00:00 2001
From: "Justin E. Samuels" <9955512+ThugDebugger@users.noreply.github.com>
Date: Tue, 5 Sep 2023 12:15:13 -0400
Subject: [PATCH 03/27] Update conferences.md (#6256)
Added RenderATL 2024 to the conferences Markdown page
---
src/content/community/conferences.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/content/community/conferences.md b/src/content/community/conferences.md
index 19080024b..6e85bd6f9 100644
--- a/src/content/community/conferences.md
+++ b/src/content/community/conferences.md
@@ -62,6 +62,11 @@ December 8 & 12, 2023. In-person in Berlin, Germany + remote first interactivity
[Website](https://reactday.berlin) - [Twitter](https://twitter.com/reactdayberlin) - [Facebook](https://www.facebook.com/reactdayberlin/) - [Videos](https://portal.gitnation.org/events/react-day-berlin-2023)
+### Render(ATL) 2024 🍑 {/*renderatl-2024-*/}
+June 12 - June 14, 2024. Atlanta, GA, USA
+
+[Website](https://renderatl.com) - [Discord](https://www.renderatl.com/discord) - [Twitter](https://twitter.com/renderATL) - [Instagram](https://www.instagram.com/renderatl/) - [Facebook](https://www.facebook.com/renderatl/) - [LinkedIn](https://www.linkedin.com/company/renderatl) - [Podcast](https://www.renderatl.com/culture-and-code#/)
+
## Past Conferences {/*past-conferences*/}
### React Rally 2023 🐙 {/*react-rally-2023*/}
From cd09ffbc352608f5bc04c8e8f788c5f9ffe164fa Mon Sep 17 00:00:00 2001
From: Rohit Sekh <96457403+venom-10@users.noreply.github.com>
Date: Tue, 5 Sep 2023 23:55:56 +0530
Subject: [PATCH 04/27] Update Twitter(X) icon for light and dark mode (#6235)
Update Twitter(X) icon for light and dark mode
---
src/components/Icon/IconTwitter.tsx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/components/Icon/IconTwitter.tsx b/src/components/Icon/IconTwitter.tsx
index 951171524..e7b0cf09e 100644
--- a/src/components/Icon/IconTwitter.tsx
+++ b/src/components/Icon/IconTwitter.tsx
@@ -9,13 +9,13 @@ export const IconTwitter = memo(
return (
);
}
From 230c39bd91db9005d10985776222fa6aeea95386 Mon Sep 17 00:00:00 2001
From: Max Jacobson
Date: Tue, 5 Sep 2023 16:35:49 -0400
Subject: [PATCH 05/27] Fix link in new typescript docs (#6232)
While reading the new typescript docs introduced in #6120, I noticed this link points to a fork. This commit changes it to a relative link so it should work everywhere.
---
src/content/learn/typescript.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/content/learn/typescript.md b/src/content/learn/typescript.md
index 5695b755f..56fa5be5b 100644
--- a/src/content/learn/typescript.md
+++ b/src/content/learn/typescript.md
@@ -20,7 +20,7 @@ TypeScript is a popular way to add type definitions to JavaScript codebases. Out
## Installation {/*installation*/}
-All [production-grade React frameworks](https://react-dev-git-fork-orta-typescriptpage-fbopensource.vercel.app/learn/start-a-new-react-project#production-grade-react-frameworks) offer support for using TypeScript. Follow the framework specific guide for installation:
+All [production-grade React frameworks](/learn/start-a-new-react-project#production-grade-react-frameworks) offer support for using TypeScript. Follow the framework specific guide for installation:
- [Next.js](https://nextjs.org/docs/pages/building-your-application/configuring/typescript)
- [Remix](https://remix.run/docs/en/1.19.2/guides/typescript)
From 14629a7e19e283e415976973f33ceb2a0e4756e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?N=C3=A9stor=20Guillermo=20Hern=C3=A1ndez?=
Date: Tue, 5 Sep 2023 18:39:45 -0300
Subject: [PATCH 06/27] Fix incorrect link in select.md (#6227)
Fix incorrect link in select.md
---
src/content/reference/react-dom/components/select.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/content/reference/react-dom/components/select.md b/src/content/reference/react-dom/components/select.md
index 46710908c..0dbdc1537 100644
--- a/src/content/reference/react-dom/components/select.md
+++ b/src/content/reference/react-dom/components/select.md
@@ -52,7 +52,7 @@ These `
}>
+
+
+ );
+}
+```
+
+The Client Component then takes the Promise it received as a prop and passes it to the `use` Hook. This allows the Client Component to read the value from the Promise that was initially created by the Server Component.
+
+```js [[2, 6, "Message"], [4, 6, "messagePromise"], [4, 7, "messagePromise"], [5, 7, "use"]]
+// message.js
+'use client';
+
+import { use } from 'react';
+
+export function Message({ messagePromise }) {
+ const messageContent = use(messagePromise);
+ return
Here is the message: {messageContent}
;
+}
+```
+Because `Message` is wrapped in [`Suspense`](/reference/react/Suspense), the fallback will be displayed until the Promise is resolved. When the Promise is resolved, the value will be read by the `use` Hook and the `Message` component will replace the Suspense fallback.
+
+
+
+```js message.js active
+"use client";
+
+import { use, Suspense } from "react";
+
+function Message({ messagePromise }) {
+ const messageContent = use(messagePromise);
+ return
Here is the message: {messageContent}
;
+}
+
+export function MessageContainer({ messagePromise }) {
+ return (
+ ⌛Downloading message...}>
+
+
+ );
+}
+```
+
+```js App.js hidden
+import { useState } from "react";
+import { MessageContainer } from "./message.js";
+
+function fetchMessage() {
+ return new Promise((resolve) => setTimeout(resolve, 1000, "⚛️"));
+}
+
+export default function App() {
+ const [messagePromise, setMessagePromise] = useState(null);
+ const [show, setShow] = useState(false);
+ function download() {
+ setMessagePromise(fetchMessage());
+ setShow(true);
+ }
+
+ if (show) {
+ return ;
+ } else {
+ return ;
+ }
+}
+```
+
+```js index.js hidden
+// TODO: update to import from stable
+// react instead of canary once the `use`
+// Hook is in a stable release of React
+import React, { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import './styles.css';
+
+// TODO: update this example to use
+// the Codesandbox Server Component
+// demo environment once it is created
+import App from './App';
+
+const root = createRoot(document.getElementById('root'));
+root.render(
+
+
+
+);
+```
+
+```json package.json hidden
+{
+ "dependencies": {
+ "react": "18.3.0-canary-9377e1010-20230712",
+ "react-dom": "18.3.0-canary-9377e1010-20230712",
+ "react-scripts": "^5.0.0"
+ },
+ "main": "/index.js"
+}
+```
+
+
+
+
+When passing a Promise from a Server Component to a Client Component, its resolved value must be serializable to pass between server and client. Data types like functions aren't serializable and cannot be the resolved value of such a Promise.
+
+
+
+
+
+
+#### Should I resolve a Promise in a Server or Client Component? {/*resolve-promise-in-server-or-client-component*/}
+
+A Promise can be passed from a Server Component to a Client Component and resolved in the Client component with the `use` Hook. You can also resolve the Promise in a Server Component with `await` and pass the required data to the Client Component as a prop.
+
+```js
+export default function App() {
+ const messageContent = await fetchMessage();
+ return
+}
+```
+
+But using `await` in a [Server Component](/reference/react/components#server-components) will block its rendering until the `await` statement is finished. Passing a Promise from a Server Component to a Client Component prevents the Promise from blocking the rendering of the Server Component.
+
+
+
+### Dealing with rejected Promises {/*dealing-with-rejected-promises*/}
+
+In some cases a Promise passed to `use` could be rejected. You can handle rejected Promises by either:
+
+1. [Displaying an error to users with error boundary.](#displaying-an-error-to-users-with-error-boundary)
+2. [Providing an alternative value with `Promise.catch`](#providing-an-alternative-value-with-promise-catch)
+
+
+`use` cannot be called in a try-catch block. Instead of a try-catch block [wrap your component in an Error Boundary](#displaying-an-error-to-users-with-error-boundary), or [provide an alternative value to use with the Promise's `.catch` method](#providing-an-alternative-value-with-promise-catch).
+
+
+#### Displaying an error to users with a error boundary {/*displaying-an-error-to-users-with-error-boundary*/}
+
+If you'd like to display an error to your users when a Promise is rejected, you can use an [error boundary](/reference/react/Component#catching-rendering-errors-with-an-error-boundary). To use an error boundary, wrap the component where you are calling the `use` Hook in an error boundary. If the Promise passed to `use` is rejected the fallback for the error boundary will be displayed.
+
+
+
+```js message.js active
+"use client";
+
+import { use, Suspense } from "react";
+import { ErrorBoundary } from "react-error-boundary";
+
+export function MessageContainer({ messagePromise }) {
+ return (
+ ⚠️Something went wrong}>
+ ⌛Downloading message...}>
+
+
+
+ );
+}
+
+function Message({ messagePromise }) {
+ const content = use(messagePromise);
+ return
Here is the message: {content}
;
+}
+```
+
+```js App.js hidden
+import { useState } from "react";
+import { MessageContainer } from "./message.js";
+
+function fetchMessage() {
+ return new Promise((resolve, reject) => setTimeout(reject, 1000));
+}
+
+export default function App() {
+ const [messagePromise, setMessagePromise] = useState(null);
+ const [show, setShow] = useState(false);
+ function download() {
+ setMessagePromise(fetchMessage());
+ setShow(true);
+ }
+
+ if (show) {
+ return ;
+ } else {
+ return ;
+ }
+}
+```
+
+```js index.js hidden
+// TODO: update to import from stable
+// react instead of canary once the `use`
+// Hook is in a stable release of React
+import React, { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import './styles.css';
+
+// TODO: update this example to use
+// the Codesandbox Server Component
+// demo environment once it is created
+import App from './App';
+
+const root = createRoot(document.getElementById('root'));
+root.render(
+
+
+
+);
+```
+
+```json package.json hidden
+{
+ "dependencies": {
+ "react": "18.3.0-canary-9377e1010-20230712",
+ "react-dom": "18.3.0-canary-9377e1010-20230712",
+ "react-scripts": "^5.0.0",
+ "react-error-boundary": "4.0.3"
+ },
+ "main": "/index.js"
+}
+```
+
+
+#### Providing an alternative value with `Promise.catch` {/*providing-an-alternative-value-with-promise-catch*/}
+
+If you'd like to provide an alternative value when the Promise passed to `use` is rejected you can use the Promise's [`catch`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch) method.
+
+```js [[1, 6, "catch"],[2, 7, "return"]]
+import { Message } from './message.js';
+
+export default function App() {
+ const messagePromise = new Promise((resolve, reject) => {
+ reject();
+ }).catch(() => {
+ return "no new message found.";
+ });
+
+ return (
+ waiting for message...}>
+
+
+ );
+}
+```
+
+To use the Promise's `catch` method, call `catch` on the Promise object. `catch` takes a single argument: a function that takes an error message as an argument. Whatever is returned by the function passed to `catch` will be used as the resolved value of the Promise.
+
+---
+
+## Troubleshooting {/*troubleshooting*/}
+
+### "Suspense Exception: This is not a real error!" {/*suspense-exception-error*/}
+
+You are either calling `use` outside of a React component or Hook function, or calling `use` in a try–catch block. If you are calling `use` inside a try–catch block, wrap your component in an error boundary, or call the Promise's `catch` to catch the error and resolve the Promise with another value. [See these examples](#dealing-with-rejected-promises).
+
+If you are calling `use` outside a React component or Hook function, move the `use` call to a React component or Hook function.
+
+```jsx
+function MessageComponent({messagePromise}) {
+ function download() {
+ // ❌ the function calling `use` is not a Component or Hook
+ const message = use(messagePromise);
+ // ...
+```
+
+Instead, call `use` outside any component closures, where the function that calls `use` is a component or Hook.
+
+```jsx
+function MessageComponent({messagePromise}) {
+ // ✅ `use` is being called from a component.
+ const message = use(messagePromise);
+ // ...
+```
diff --git a/src/sidebarReference.json b/src/sidebarReference.json
index 3251873c1..627256937 100644
--- a/src/sidebarReference.json
+++ b/src/sidebarReference.json
@@ -10,6 +10,11 @@
"title": "Hooks",
"path": "/reference/react",
"routes": [
+ {
+ "title": "use",
+ "path": "/reference/react/use",
+ "canary": true
+ },
{
"title": "useCallback",
"path": "/reference/react/useCallback"
From 5219d736a7c181a830f7646e616eb97774b43272 Mon Sep 17 00:00:00 2001
From: Abhinav Mahajan <113239388+abhinav-m22@users.noreply.github.com>
Date: Sat, 9 Sep 2023 06:50:59 +0530
Subject: [PATCH 14/27] Removed the multiple checks (#5759)
From 43ada1f1b1dcca0f0852927670faf95eeaab2e99 Mon Sep 17 00:00:00 2001
From: Danilo Woznica
Date: Tue, 12 Sep 2023 18:49:14 +0100
Subject: [PATCH 15/27] Sandpack 2.0: upgrade playgrounds (#5917)
* Update 17 files
* remove: legacy react devtool
* Update 3 files
* fix(editor): allow horizontal scroll
* Update SandpackRoot.tsx
---
.env.development | 1 -
.env.production | 3 +-
next.config.js | 8 +-
package.json | 2 +-
.../@codemirror+lang-javascript+0.19.6.patch | 30 --
.../@codesandbox+sandpack-react+1.15.5.patch | 62 ---
patches/@lezer+javascript+0.15.2.patch | 345 ------------
src/components/MDX/CodeBlock/CodeBlock.tsx | 7 +-
src/components/MDX/Sandpack/Console.tsx | 5 +-
src/components/MDX/Sandpack/CustomPreset.tsx | 23 +-
.../MDX/Sandpack/DownloadButton.tsx | 2 +-
.../MDX/Sandpack/LoadingOverlay.tsx | 2 +-
src/components/MDX/Sandpack/NavigationBar.tsx | 2 +-
.../MDX/Sandpack/OpenInCodeSandboxButton.tsx | 2 +-
src/components/MDX/Sandpack/Preview.tsx | 17 +-
src/components/MDX/Sandpack/SandpackRoot.tsx | 15 +-
src/components/MDX/Sandpack/createFileMap.ts | 2 +-
src/content/community/conferences.md | 2 +-
src/styles/sandpack.css | 19 +-
src/utils/emptyShim.js | 6 -
yarn.lock | 508 ++++++++----------
21 files changed, 248 insertions(+), 815 deletions(-)
delete mode 100644 patches/@codemirror+lang-javascript+0.19.6.patch
delete mode 100644 patches/@codesandbox+sandpack-react+1.15.5.patch
delete mode 100644 patches/@lezer+javascript+0.15.2.patch
delete mode 100644 src/utils/emptyShim.js
diff --git a/.env.development b/.env.development
index a692f21c7..e69de29bb 100644
--- a/.env.development
+++ b/.env.development
@@ -1 +0,0 @@
-SANDPACK_BARE_COMPONENTS=true
\ No newline at end of file
diff --git a/.env.production b/.env.production
index 445c9c4d0..d25eb7dd4 100644
--- a/.env.production
+++ b/.env.production
@@ -1,2 +1 @@
-NEXT_PUBLIC_GA_TRACKING_ID = 'UA-41298772-4'
-SANDPACK_BARE_COMPONENTS=true
\ No newline at end of file
+NEXT_PUBLIC_GA_TRACKING_ID = 'UA-41298772-4'
\ No newline at end of file
diff --git a/next.config.js b/next.config.js
index 414728580..61ff1944a 100644
--- a/next.config.js
+++ b/next.config.js
@@ -14,9 +14,7 @@ const nextConfig = {
scrollRestoration: true,
legacyBrowsers: false,
},
- env: {
- SANDPACK_BARE_COMPONENTS: process.env.SANDPACK_BARE_COMPONENTS,
- },
+ env: {},
webpack: (config, {dev, isServer, ...options}) => {
if (process.env.ANALYZE) {
const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer');
@@ -35,10 +33,6 @@ const nextConfig = {
const {IgnorePlugin, NormalModuleReplacementPlugin} = require('webpack');
config.plugins.push(
- new NormalModuleReplacementPlugin(
- /^@stitches\/core$/,
- require.resolve('./src/utils/emptyShim.js')
- ),
new NormalModuleReplacementPlugin(
/^raf$/,
require.resolve('./src/utils/rafShim.js')
diff --git a/package.json b/package.json
index e47c10ff7..5ff6adbab 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
"check-all": "npm-run-all prettier lint:fix tsc"
},
"dependencies": {
- "@codesandbox/sandpack-react": "1.15.5",
+ "@codesandbox/sandpack-react": "2.6.0",
"@docsearch/css": "3.0.0-alpha.41",
"@docsearch/react": "3.0.0-alpha.41",
"@headlessui/react": "^1.7.0",
diff --git a/patches/@codemirror+lang-javascript+0.19.6.patch b/patches/@codemirror+lang-javascript+0.19.6.patch
deleted file mode 100644
index 3436b8e37..000000000
--- a/patches/@codemirror+lang-javascript+0.19.6.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff --git a/node_modules/@codemirror/lang-javascript/dist/index.cjs b/node_modules/@codemirror/lang-javascript/dist/index.cjs
-index 4475e4f..e1255c9 100644
---- a/node_modules/@codemirror/lang-javascript/dist/index.cjs
-+++ b/node_modules/@codemirror/lang-javascript/dist/index.cjs
-@@ -135,7 +135,9 @@ const javascriptLanguage = language.LRLanguage.define({
- JSXText: highlight.tags.content,
- "JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": highlight.tags.angleBracket,
- "JSXIdentifier JSXNameSpacedName": highlight.tags.tagName,
-- "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": highlight.tags.attributeName
-+ "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": highlight.tags.attributeName,
-+ "JSXAttribute/JSXLowerIdentifier JSXAttribute/JSXNameSpacedName": highlight.tags.attributeName,
-+ "JSXBuiltin/JSXIdentifier": highlight.tags.standard(highlight.tags.tagName)
- })
- ]
- }),
-diff --git a/node_modules/@codemirror/lang-javascript/dist/index.js b/node_modules/@codemirror/lang-javascript/dist/index.js
-index d089f6b..db09ea6 100644
---- a/node_modules/@codemirror/lang-javascript/dist/index.js
-+++ b/node_modules/@codemirror/lang-javascript/dist/index.js
-@@ -131,7 +131,9 @@ const javascriptLanguage = /*@__PURE__*/LRLanguage.define({
- JSXText: tags.content,
- "JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag": tags.angleBracket,
- "JSXIdentifier JSXNameSpacedName": tags.tagName,
-- "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": tags.attributeName
-+ "JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName": tags.attributeName,
-+ "JSXAttribute/JSXLowerIdentifier JSXAttribute/JSXNameSpacedName": tags.attributeName,
-+ "JSXBuiltin/JSXIdentifier": tags.standard(tags.tagName),
- })
- ]
- }),
diff --git a/patches/@codesandbox+sandpack-react+1.15.5.patch b/patches/@codesandbox+sandpack-react+1.15.5.patch
deleted file mode 100644
index b68a5303d..000000000
--- a/patches/@codesandbox+sandpack-react+1.15.5.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-diff --git a/node_modules/@codesandbox/sandpack-react/dist/cjs/index.js b/node_modules/@codesandbox/sandpack-react/dist/cjs/index.js
-index 6b8518e..ada84f5 100644
---- a/node_modules/@codesandbox/sandpack-react/dist/cjs/index.js
-+++ b/node_modules/@codesandbox/sandpack-react/dist/cjs/index.js
-@@ -92,7 +92,7 @@ h1 {
-
-
-
--