Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changeset/expo-sdk-57-upgrade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'create-expo-stack': minor
'rn-new': minor
---

Upgrade generated templates to Expo SDK 57 and align the CLI with the new Expo release.

- Upgrade generated app dependencies to Expo SDK 57, React Native 0.86, Expo Router 57, and the SDK 57-compatible Expo and Software Mansion packages.
- Remove the generated `newArchEnabled` config from `app.json` now that New Architecture is the default.
- Update the printed prebuild guidance to match SDK 57 behavior, where `expo prebuild` cleans by default.
- Bump the repo and CLI Expo dependencies to SDK 57-compatible versions.
Binary file modified bun.lockb
Binary file not shown.
2 changes: 1 addition & 1 deletion cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"dependencies": {
"@clack/prompts": "^0.11.0",
"ejs-lint": "^2.0.0",
"expo": "^54.0.6",
"expo": "^57.0.4",
"figlet": "^1.6.0",
"gluegun": "latest",
"google-auth-library": "^9.11.0",
Expand Down
3 changes: 0 additions & 3 deletions cli/src/templates/base/app.json.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
"name": "<%= props.projectName %>",
"slug": "<%= props.projectSlug %>",
"version": "1.0.0",
<% if (props.stylingPackage?.name === "unistyles") { %>
"newArchEnabled": true,
<% } %>
<% if (props.navigationPackage?.name === 'expo-router') { %>
"scheme": "<%= props.projectScheme %>",
"platforms": ["ios", "android"],
Expand Down
46 changes: 23 additions & 23 deletions cli/src/templates/base/package.json.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@
"tailwind-merge": "^2.2.1",
"react-native-uitextview": "^1.1.4",
"rn-icon-mapper": "^0.0.1",
"expo-haptics": "~56.0.3",
"expo-symbols": "~56.0.5",
"expo-haptics": "~57.0.0",
"expo-symbols": "~57.0.0",
<% if (props.stylingPackage?.options.selectedComponents.includes('date-picker')) { %>
"@react-native-community/datetimepicker": "9.1.0",
<% } %>
Expand All @@ -56,7 +56,7 @@
"@expo/react-native-action-sheet": "^4.0.1",
<% } %>
<% if (props.stylingPackage?.options.selectedComponents.includes('ratings-indicator')) { %>
"expo-store-review": "~56.0.3",
"expo-store-review": "~57.0.0",
<% } %>
<% if (props.stylingPackage?.options.selectedComponents.includes('slider')) { %>
"@react-native-community/slider": "5.2.0",
Expand All @@ -78,7 +78,7 @@
<% } %>

<% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-gesture-handler")) { %>
"react-native-gesture-handler": "~2.31.1",
"react-native-gesture-handler": "~2.32.0",
<% } %>

<% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-screens")) { %>
Expand All @@ -90,13 +90,13 @@
<% } %>

<% if (props.packages?.some((p) => p.name === "react-native-keyboard-controller")) { %>
"react-native-keyboard-controller": "1.21.6",
"react-native-keyboard-controller": "1.21.9",
<% } %>

<% if (props.navigationPackage?.name === "react-navigation") { %>
"@react-navigation/stack": "^7.4.8",
"@expo/vector-icons": "^15.0.2",
"expo-font": "~56.0.5",
"expo-font": "~57.0.0",
<% } %>

<% if (props.analyticsPackage?.name === "vexo-analytics") { %>
Expand All @@ -116,14 +116,14 @@
<% } %>

<% if (props.navigationPackage?.name === "expo-router") { %>
"@expo/log-box": "^56.0.12",
"@expo/log-box": "^57.0.0",
"@expo/vector-icons": "^15.0.2",
"expo-font": "~56.0.5",
"expo-linking": "~56.0.11",
"expo-router": "~56.2.6",
"expo-constants": "~56.0.15",
"expo-system-ui": "~56.0.5",
"expo-web-browser": "~56.0.5",
"expo-font": "~57.0.0",
"expo-linking": "~57.0.2",
"expo-router": "~57.0.4",
"expo-constants": "~57.0.3",
"expo-system-ui": "~57.0.0",
"expo-web-browser": "~57.0.0",
"react-dom": "19.2.3",
"react-native-web": "~0.21.0",
<% } %>
Expand All @@ -140,28 +140,28 @@
<% if (props.internalizationPackage?.name === "i18next") { %>
"i18next": "^23.7.20",
"react-i18next": "^14.0.1",
"expo-localization": "~56.0.6",
"expo-localization": "~57.0.0",
<% } %>
<% if (props.flags?.eas || props.stylingPackage?.name === "nativewindui") { %>
"expo-dev-client": "~56.0.15",
"expo-device": "~56.0.4",
"expo-dev-client": "~57.0.5",
"expo-device": "~57.0.0",
<% } %>

"react-native-reanimated": "4.3.1",
"react-native-worklets": "0.8.3",
"react-native-reanimated": "4.5.0",
"react-native-worklets": "0.10.0",

"react-native-safe-area-context": "~5.7.0",
"expo": "~56.0.4",
"expo-splash-screen": "~56.0.10",
"expo-status-bar": "~56.0.4",
"expo": "~57.0.4",
"expo-splash-screen": "~57.0.2",
"expo-status-bar": "~57.0.0",
"react": "19.2.3",
"react-native": "0.85.3"
"react-native": "0.86.0"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@types/react": "~19.2.2",
"eslint": "^9.25.1",
"eslint-config-expo": "~56.0.4",
"eslint-config-expo": "~57.0.0",
"eslint-config-prettier": "^10.1.2",
"prettier": "^3.2.5",
<% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
Expand Down
2 changes: 1 addition & 1 deletion cli/src/utilities/printOutput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ export async function printOutput(
highlight(`${step}. cd ${projectDir}`);
if (flags.noInstall) highlight(`${++step}. ${packageManager} install`);
if (stylingPackage.name === 'unistyles' || stylingPackage.name === 'nativewindui') {
highlight(`${++step}. ${expoCommand} prebuild --clean`);
highlight(`${++step}. ${expoCommand} prebuild`);
}
highlight(`${++step}. ${runCommand} ios`);
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"packageManager": "bun@1.2.11",
"dependencies": {
"@clack/prompts": "^0.7.0",
"expo": "~56.0.4",
"expo": "~57.0.4",
"lucide-astro": "^0.395.0",
"picocolors": "^1.0.0",
"google-auth-library": "^9.11.0",
Expand Down
8 changes: 4 additions & 4 deletions www/demo/steps/printOutput.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function generateStepsToRunProject(cliResults) {
stylingPackage.name === "unistyles" ||
stylingPackage.name === "nativewindui"
) {
output += color.blue(`${++step}. npx expo prebuild --clean\n`);
output += color.blue(`${++step}. npx expo prebuild\n`);
}
output += color.blue(`${++step}. npm run ios`);
} else if (cliResults.flags.packageManager === "pnpm") {
Expand All @@ -25,7 +25,7 @@ function generateStepsToRunProject(cliResults) {
stylingPackage.name === "unistyles" ||
stylingPackage.name === "nativewindui"
) {
output += color.blue(`${++step}. pnpm expo prebuild --clean\n`);
output += color.blue(`${++step}. pnpm expo prebuild\n`);
}
output += color.blue(`${++step}. pnpm run ios`);
} else if (cliResults.flags.packageManager === "bun") {
Expand All @@ -34,7 +34,7 @@ function generateStepsToRunProject(cliResults) {
stylingPackage.name === "unistyles" ||
stylingPackage.name === "nativewindui"
) {
output += color.blue(`${++step}. bun expo prebuild --clean\n`);
output += color.blue(`${++step}. bun expo prebuild\n`);
}
output += color.blue(`${++step}. bun run ios`);
} else {
Expand All @@ -43,7 +43,7 @@ function generateStepsToRunProject(cliResults) {
stylingPackage.name === "unistyles" ||
stylingPackage.name === "nativewindui"
) {
output += color.blue(`${++step}. yarn expo prebuild --clean\n`);
output += color.blue(`${++step}. yarn expo prebuild\n`);
}
output += color.blue(`${++step}. yarn ios`);
}
Expand Down