create-expo-stack 2.24.0-next.8fdc608 → 2.24.0-next.f2abac9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -51,6 +51,27 @@ To get started, use npx to run the CLI tool. You will be prompted to opt into th
51
51
 
52
52
  <img src="https://github.com/roninoss/create-expo-stack/assets/5482800/e709dd66-cb9b-463c-91f9-b842bb80585c" />
53
53
 
54
+ ## Try the Nativewind v5 release candidate
55
+
56
+ Create a new Expo 57 project with the `next` release:
57
+
58
+ ```sh
59
+ npx rn-new@next my-app --nativewind --expo-router
60
+ ```
61
+
62
+ The equivalent command is `npx create-expo-stack@next my-app --nativewind --expo-router`.
63
+ Omit `--expo-router` for a project without Router.
64
+
65
+ Nativewind starters pin `nativewind@5.0.0-rc.0`, `react-native-css@3.1.0-rc.0`, and Tailwind CSS 4.1.12.
66
+ NativewindUI starters continue to use Nativewind 4.2.6 and Tailwind CSS 3.
67
+
68
+ For an existing v5 preview project, update Nativewind and its engine together. Follow the
69
+ [RC release notes](https://github.com/nativewind/nativewind/releases/tag/5.0.0-rc.0)
70
+ for Expo alignment, configuration checks, and migration details.
71
+
72
+ For v4 projects, the [migration skill draft](https://github.com/nativewind/nativewind/tree/main/skills/nativewind-v4-to-v5)
73
+ is available for evaluation. It has not yet passed independent application migration verification.
74
+
54
75
  ## Tech Stack for the templates
55
76
 
56
77
  Currently, all of the [templates](https://github.com/roninoss/create-expo-stack/tree/main/cli/src/templates) use the same versions of the following libraries. Not all of the templates include all of the libraries, but they are all available for use.
@@ -5,7 +5,7 @@
5
5
  "version": "1.0.0",
6
6
  <% if (props.navigationPackage?.name === 'expo-router') { %>
7
7
  "scheme": "<%= props.projectScheme %>",
8
- "platforms": ["ios", "android"],
8
+ "platforms": ["ios", "android"<% if (props.stylingPackage?.name === "nativewind") { %>, "web"<% } %>],
9
9
  "web": {
10
10
  "bundler": "metro",
11
11
  "output": "static",
@@ -54,7 +54,7 @@
54
54
  <% } %>
55
55
  "orientation": "portrait",
56
56
  "icon": "./assets/icon.png",
57
- <% if (props.stylingPackage?.name === "nativewindui" || props.stylingPackage?.name === "unistyles") { %>
57
+ <% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui" || props.stylingPackage?.name === "unistyles") { %>
58
58
  "userInterfaceStyle": "automatic",
59
59
  <% } else { %>
60
60
  "userInterfaceStyle": "light",
@@ -15,7 +15,14 @@ module.exports = function(api) {
15
15
  plugins.push('react-native-worklets/plugin');
16
16
 
17
17
  return {
18
- presets: ['babel-preset-expo'],
18
+ presets: [
19
+ <% if (props.stylingPackage?.name === "nativewindui") { %>
20
+ ['babel-preset-expo', { jsxImportSource: 'nativewind' }],
21
+ 'nativewind/babel',
22
+ <% } else { %>
23
+ 'babel-preset-expo',
24
+ <% } %>
25
+ ],
19
26
  plugins,
20
27
  };
21
28
  };
@@ -30,13 +30,15 @@
30
30
  "web": "expo start --web"
31
31
  },
32
32
  "dependencies": {
33
- <% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
34
- "nativewind": "preview",
35
- "react-native-css": "latest",
33
+ <% if (props.stylingPackage?.name === "nativewind") { %>
34
+ "nativewind": "5.0.0-rc.0",
35
+ "react-native-css": "3.1.0-rc.0",
36
36
  "postcss": "^8.5.6",
37
- "@tailwindcss/postcss": "^4.1.13",
37
+ "@tailwindcss/postcss": "4.1.12",
38
+ "expo-system-ui": "~57.0.4",
38
39
  <% } %>
39
40
  <% if (props.stylingPackage?.name === "nativewindui") { %>
41
+ "nativewind": "4.2.6",
40
42
  "@react-navigation/elements": "^2.9.25",
41
43
  "@shopify/flash-list": "2.0.2",
42
44
  "class-variance-authority": "^0.7.0",
@@ -82,7 +84,7 @@
82
84
  <% } %>
83
85
 
84
86
  <% if (props.navigationPackage?.type === "navigation" || props.packages?.some((p) => p.name === "react-native-screens")) { %>
85
- "react-native-screens": "4.25.2",
87
+ "react-native-screens": "<%= props.stylingPackage?.name === 'nativewind' ? '~4.26.0' : '4.25.2' %>",
86
88
  <% } %>
87
89
 
88
90
  <% if (props.packages?.some((p) => p.name === "react-native-svg")) { %>
@@ -96,7 +98,7 @@
96
98
  <% if (props.navigationPackage?.name === "react-navigation") { %>
97
99
  "@react-navigation/stack": "^7.4.8",
98
100
  "@expo/vector-icons": "^15.0.2",
99
- "expo-font": "~57.0.0",
101
+ "expo-font": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.4' : '~57.0.0' %>",
100
102
  <% } %>
101
103
 
102
104
  <% if (props.analyticsPackage?.name === "vexo-analytics") { %>
@@ -116,14 +118,16 @@
116
118
  <% } %>
117
119
 
118
120
  <% if (props.navigationPackage?.name === "expo-router") { %>
119
- "@expo/log-box": "^57.0.0",
121
+ "@expo/log-box": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.4' : '^57.0.0' %>",
120
122
  "@expo/vector-icons": "^15.0.2",
121
- "expo-font": "~57.0.0",
122
- "expo-linking": "~57.0.2",
123
- "expo-router": "~57.0.4",
124
- "expo-constants": "~57.0.3",
123
+ "expo-font": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.4' : '~57.0.0' %>",
124
+ "expo-linking": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.10' : '~57.0.2' %>",
125
+ "expo-router": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.21' : '~57.0.4' %>",
126
+ "expo-constants": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.18' : '~57.0.3' %>",
127
+ <% if (props.stylingPackage?.name !== "nativewind") { %>
125
128
  "expo-system-ui": "~57.0.0",
126
- "expo-web-browser": "~57.0.0",
129
+ <% } %>
130
+ "expo-web-browser": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.3' : '~57.0.0' %>",
127
131
  "react-dom": "19.2.3",
128
132
  "react-native-web": "~0.21.0",
129
133
  <% } %>
@@ -140,32 +144,32 @@
140
144
  <% if (props.internalizationPackage?.name === "i18next") { %>
141
145
  "i18next": "^23.7.20",
142
146
  "react-i18next": "^14.0.1",
143
- "expo-localization": "~57.0.0",
147
+ "expo-localization": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.2' : '~57.0.0' %>",
144
148
  <% } %>
145
149
  <% if (props.flags?.eas || props.stylingPackage?.name === "nativewindui") { %>
146
- "expo-dev-client": "~57.0.5",
147
- "expo-device": "~57.0.0",
150
+ "expo-dev-client": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.19' : '~57.0.5' %>",
151
+ "expo-device": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.2' : '~57.0.0' %>",
148
152
  <% } %>
149
153
 
150
- "react-native-reanimated": "4.5.0",
151
- "react-native-worklets": "0.10.0",
154
+ "react-native-reanimated": "<%= props.stylingPackage?.name === 'nativewind' ? '4.5.1' : '4.5.0' %>",
155
+ "react-native-worklets": "<%= props.stylingPackage?.name === 'nativewind' ? '0.10.1' : '0.10.0' %>",
152
156
 
153
157
  "react-native-safe-area-context": "~5.7.0",
154
- "expo": "~57.0.4",
155
- "expo-splash-screen": "~57.0.2",
156
- "expo-status-bar": "~57.0.0",
158
+ "expo": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.22' : '~57.0.4' %>",
159
+ "expo-splash-screen": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.9' : '~57.0.2' %>",
160
+ "expo-status-bar": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.1' : '~57.0.0' %>",
157
161
  "react": "19.2.3",
158
- "react-native": "0.86.0"
162
+ "react-native": "<%= props.stylingPackage?.name === 'nativewind' ? '0.86.3' : '0.86.0' %>"
159
163
  },
160
164
  "devDependencies": {
161
165
  "@babel/core": "^7.20.0",
162
166
  "@types/react": "~19.2.2",
163
167
  "eslint": "^9.25.1",
164
- "eslint-config-expo": "~57.0.0",
168
+ "eslint-config-expo": "<%= props.stylingPackage?.name === 'nativewind' ? '~57.0.2' : '~57.0.0' %>",
165
169
  "eslint-config-prettier": "^10.1.2",
166
170
  "prettier": "^3.2.5",
167
171
  <% if (props.stylingPackage?.name === "nativewind" || props.stylingPackage?.name === "nativewindui") { %>
168
- "tailwindcss": "^4.1.13",
172
+ "tailwindcss": "<%= props.stylingPackage?.name === 'nativewind' ? '4.1.12' : '^3.4.17' %>",
169
173
  "prettier-plugin-tailwindcss": "^0.6.14",
170
174
  <% } %>
171
175
  "typescript": "~6.0.3"
@@ -1,7 +1,9 @@
1
1
  // Learn more https://docs.expo.io/guides/customizing-metro
2
2
  const { getDefaultConfig } = require('expo/metro-config');
3
- <% if (["nativewind", "nativewindui"].includes(props.stylingPackage?.name)) { %>
3
+ <% if (props.stylingPackage?.name === "nativewind") { %>
4
4
  const { withNativewind } = require("nativewind/metro");
5
+ <% } else if (props.stylingPackage?.name === "nativewindui") { %>
6
+ const { withNativeWind } = require("nativewind/metro");
5
7
  <% } %>
6
8
 
7
9
  /** @type {import('expo/metro-config').MetroConfig} */
@@ -11,7 +13,7 @@ const config = getDefaultConfig(__dirname);
11
13
  <% if (props.stylingPackage?.name === "nativewind") { %>
12
14
  module.exports = withNativewind(config);
13
15
  <% } else if (props.stylingPackage?.name === "nativewindui") { %>
14
- module.exports = withNativewind(config, { inlineRem: 16 });
16
+ module.exports = withNativeWind(config, { input: './global.css', inlineRem: 16 });
15
17
  <% } else { %>
16
18
  module.exports = config;
17
19
  <% } %>
@@ -1,5 +1,4 @@
1
1
  @import 'tailwindcss/theme.css' layer(theme);
2
2
  @import 'tailwindcss/preflight.css' layer(base);
3
3
  @import 'tailwindcss/utilities.css';
4
-
5
4
  @import 'nativewind/theme';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-expo-stack",
3
- "version": "2.24.0-next.8fdc608",
3
+ "version": "2.24.0-next.f2abac9",
4
4
  "description": "CLI tool to initialize a React Native application with Expo",
5
5
  "repository": {
6
6
  "type": "git",