diff --git a/packages/expo-router/CHANGELOG.md b/packages/expo-router/CHANGELOG.md
index 223666023c588..7db962b5ccada 100644
--- a/packages/expo-router/CHANGELOG.md
+++ b/packages/expo-router/CHANGELOG.md
@@ -10,6 +10,7 @@
- Fix `useLocalSearchParams` not passing all parameters to nested navigators. ([#28468](https://github.com/expo/expo/pull/28468) by [@marklawlor](https://github.com/marklawlor))
- Fix incorrect require.context regex for Android ([#28490](https://github.com/expo/expo/pull/28490) by [@marklawlor](https://github.com/marklawlor))
+- Switch to react-native-helmet-async (fork of react-helmet-async) in order remove react-dom peer dependency. ([#28532](https://github.com/expo/expo/pull/28532) by [@brentvatne](https://github.com/brentvatne))
### 💡 Others
diff --git a/packages/expo-router/build/head/ExpoHead.d.ts b/packages/expo-router/build/head/ExpoHead.d.ts
index ad0df04303aca..a271fa44eda61 100644
--- a/packages/expo-router/build/head/ExpoHead.d.ts
+++ b/packages/expo-router/build/head/ExpoHead.d.ts
@@ -1,5 +1,5 @@
import React from 'react';
-import { HelmetProvider } from 'react-helmet-async';
+import { HelmetProvider } from 'react-native-helmet-async';
export declare const Head: React.FC<{
children?: React.ReactNode;
}> & {
diff --git a/packages/expo-router/build/head/ExpoHead.d.ts.map b/packages/expo-router/build/head/ExpoHead.d.ts.map
index bbf6c1a75a603..526db7493a348 100644
--- a/packages/expo-router/build/head/ExpoHead.d.ts.map
+++ b/packages/expo-router/build/head/ExpoHead.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"ExpoHead.d.ts","sourceRoot":"","sources":["../../src/head/ExpoHead.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE5D,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC,GAAG;IAC5D,QAAQ,EAAE,OAAO,cAAc,CAAC;CAGjC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"ExpoHead.d.ts","sourceRoot":"","sources":["../../src/head/ExpoHead.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEnE,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC,GAAG;IAC5D,QAAQ,EAAE,OAAO,cAAc,CAAC;CAGjC,CAAC"}
\ No newline at end of file
diff --git a/packages/expo-router/build/head/ExpoHead.js b/packages/expo-router/build/head/ExpoHead.js
index 8ffae025afee0..8f889ac8b92f0 100644
--- a/packages/expo-router/build/head/ExpoHead.js
+++ b/packages/expo-router/build/head/ExpoHead.js
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.Head = void 0;
const react_1 = __importDefault(require("react"));
-const react_helmet_async_1 = require("react-helmet-async");
+const react_native_helmet_async_1 = require("react-native-helmet-async");
const Head = ({ children }) => {
- return {children};
+ return {children};
};
exports.Head = Head;
-exports.Head.Provider = react_helmet_async_1.HelmetProvider;
+exports.Head.Provider = react_native_helmet_async_1.HelmetProvider;
//# sourceMappingURL=ExpoHead.js.map
\ No newline at end of file
diff --git a/packages/expo-router/build/head/ExpoHead.js.map b/packages/expo-router/build/head/ExpoHead.js.map
index 07bba492ed466..e75b9eb639120 100644
--- a/packages/expo-router/build/head/ExpoHead.js.map
+++ b/packages/expo-router/build/head/ExpoHead.js.map
@@ -1 +1 @@
-{"version":3,"file":"ExpoHead.js","sourceRoot":"","sources":["../../src/head/ExpoHead.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,2DAA4D;AAErD,MAAM,IAAI,GAEb,CAAC,EAAE,QAAQ,EAAsB,EAAE,EAAE;IACvC,OAAO,CAAC,2BAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,2BAAM,CAAC,CAAC;AACrC,CAAC,CAAC;AAJW,QAAA,IAAI,QAIf;AAEF,YAAI,CAAC,QAAQ,GAAG,mCAAc,CAAC","sourcesContent":["import React from 'react';\nimport { Helmet, HelmetProvider } from 'react-helmet-async';\n\nexport const Head: React.FC<{ children?: React.ReactNode }> & {\n Provider: typeof HelmetProvider;\n} = ({ children }: { children?: any }) => {\n return {children};\n};\n\nHead.Provider = HelmetProvider;\n"]}
\ No newline at end of file
+{"version":3,"file":"ExpoHead.js","sourceRoot":"","sources":["../../src/head/ExpoHead.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yEAAmE;AAE5D,MAAM,IAAI,GAEb,CAAC,EAAE,QAAQ,EAAsB,EAAE,EAAE;IACvC,OAAO,CAAC,kCAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,kCAAM,CAAC,CAAC;AACrC,CAAC,CAAC;AAJW,QAAA,IAAI,QAIf;AAEF,YAAI,CAAC,QAAQ,GAAG,0CAAc,CAAC","sourcesContent":["import React from 'react';\nimport { Helmet, HelmetProvider } from 'react-native-helmet-async';\n\nexport const Head: React.FC<{ children?: React.ReactNode }> & {\n Provider: typeof HelmetProvider;\n} = ({ children }: { children?: any }) => {\n return {children};\n};\n\nHead.Provider = HelmetProvider;\n"]}
\ No newline at end of file
diff --git a/packages/expo-router/package.json b/packages/expo-router/package.json
index d18ef5733c43c..208d1455a48ba 100644
--- a/packages/expo-router/package.json
+++ b/packages/expo-router/package.json
@@ -99,7 +99,7 @@
"@react-navigation/native": "~6.1.6",
"@react-navigation/native-stack": "~6.9.12",
"expo-splash-screen": "0.27.2",
- "react-helmet-async": "^1.3.0",
+ "react-native-helmet-async": "2.0.4",
"schema-utils": "^4.0.1"
}
}
diff --git a/packages/expo-router/src/head/ExpoHead.tsx b/packages/expo-router/src/head/ExpoHead.tsx
index 7d67d6d44fefa..5e7d86817fca3 100644
--- a/packages/expo-router/src/head/ExpoHead.tsx
+++ b/packages/expo-router/src/head/ExpoHead.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Helmet, HelmetProvider } from 'react-helmet-async';
+import { Helmet, HelmetProvider } from 'react-native-helmet-async';
export const Head: React.FC<{ children?: React.ReactNode }> & {
Provider: typeof HelmetProvider;
diff --git a/yarn.lock b/yarn.lock
index 7795089e53d65..a8c3e1448e8b1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -16723,27 +16723,16 @@ react-fast-compare@^2.0.0:
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
-react-fast-compare@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.1.tgz#53933d9e14f364281d6cba24bfed7a4afb808b5f"
- integrity sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==
+react-fast-compare@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
+ integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==
react-freeze@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.0.tgz#b21c65fe1783743007c8c9a2952b1c8879a77354"
integrity sha512-yQaiOqDmoKqks56LN9MTgY06O0qQHgV4FUrikH357DydArSZHQhl0BJFqGKIZoTqi8JizF9Dxhuk1FIZD6qCaw==
-react-helmet-async@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e"
- integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==
- dependencies:
- "@babel/runtime" "^7.12.5"
- invariant "^2.2.4"
- prop-types "^15.7.2"
- react-fast-compare "^3.2.0"
- shallowequal "^1.1.0"
-
"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
@@ -16804,6 +16793,15 @@ react-native-gesture-handler@~2.16.0:
lodash "^4.17.21"
prop-types "^15.7.2"
+react-native-helmet-async@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz#93f53a1ff22d6898039688a541653a2d6b6866bb"
+ integrity sha512-m3CkXWss6B1dd6mCMleLpzDCJJGGaHOLQsUzZv8kAASJmMfmVT4d2fx375iXKTRWT25ThBfae3dECuX5cq/8hg==
+ dependencies:
+ invariant "^2.2.4"
+ react-fast-compare "^3.2.2"
+ shallowequal "^1.1.0"
+
react-native-infinite-scroll-view@^0.4.5:
version "0.4.5"
resolved "https://registry.yarnpkg.com/react-native-infinite-scroll-view/-/react-native-infinite-scroll-view-0.4.5.tgz#5200590519716ee0694f12b81d2f091b6df4571f"