Skip to content

Commit fbdda16

Browse files
authored
fix: remove transient dependency on connect (#161)
1 parent 20d7046 commit fbdda16

File tree

4 files changed

+19
-198
lines changed

4 files changed

+19
-198
lines changed

example/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
"web": "expo start --web"
1212
},
1313
"dependencies": {
14+
"@expo/metro-runtime": "~6.1.1",
1415
"@tailwindcss/postcss": "^4.1.11",
1516
"expo": "54.0.0-preview.13",
1617
"expo-dev-client": "6.0.4",
1718
"expo-status-bar": "3.0.6",
1819
"expo-system-ui": "6.0.6",
1920
"react": "19.1.0",
2021
"react-dom": "19.1.0",
21-
"react-native": "0.81.0",
22+
"react-native": "0.81.1",
2223
"react-native-reanimated": "4.0.2",
2324
"react-native-web": "~0.21.1",
2425
"react-native-worklets": "0.4.1",

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,23 +161,20 @@
161161
"expo": "54.0.0-preview.13",
162162
"lightningcss": ">=1.27.0",
163163
"react": "19.1.0",
164-
"react-native": "0.81.0"
164+
"react-native": "0.81.1"
165165
},
166166
"devDependencies": {
167167
"@babel/core": "^7.28.0",
168168
"@commitlint/config-conventional": "^19.8.1",
169169
"@eslint/js": "^9.30.1",
170-
"@expo/metro-runtime": "~6.1.1",
171170
"@ianvs/prettier-plugin-sort-imports": "^4.4.2",
172171
"@tailwindcss/postcss": "^4.1.12",
173172
"@testing-library/react-native": "^13.3.3",
174173
"@tsconfig/react-native": "^3.0.6",
175174
"@types/babel__core": "^7",
176-
"@types/connect": "^3.4.38",
177175
"@types/debug": "^4.1.12",
178176
"@types/jest": "^30.0.0",
179177
"@types/react": "^19.1.10",
180-
"@types/react-refresh": "^0",
181178
"@types/react-test-renderer": "^19",
182179
"babel-plugin-tester": "^12.0.0",
183180
"babel-preset-expo": "~14.0.6",

src/metro/index.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import { dirname, relative, sep } from "node:path";
33
import { versions } from "node:process";
44

5-
import connect from "connect";
65
import debug from "debug";
76
import type { MetroConfig } from "metro-config";
87

@@ -50,9 +49,6 @@ export function withReactNativeCSS<
5049
setupTypeScript(typescriptEnvPath);
5150
}
5251

53-
const originalMiddleware = config.server?.enhanceMiddleware;
54-
const originalResolver = config.resolver?.resolveRequest;
55-
5652
return {
5753
...config,
5854
transformerPath: require.resolve("./metro-transformer"),
@@ -68,13 +64,14 @@ export function withReactNativeCSS<
6864
return { type: "empty" };
6965
}
7066

67+
const parentResolver =
68+
config.resolver?.resolveRequest ?? context.resolveRequest;
69+
7170
// Don't hijack the resolution of react-native imports
7271
if (!globalClassNamePolyfill) {
73-
const parentResolver = originalResolver ?? context.resolveRequest;
7472
return parentResolver(context, moduleName, platform);
7573
}
7674

77-
const parentResolver = originalResolver ?? context.resolveRequest;
7875
const resolver = platform === "web" ? webResolver : nativeResolver;
7976
const resolved = resolver(
8077
parentResolver,
@@ -88,8 +85,7 @@ export function withReactNativeCSS<
8885
},
8986
server: {
9087
...config.server,
91-
enhanceMiddleware(middleware, metroServer) {
92-
const server = connect();
88+
enhanceMiddleware(metroMiddleware, metroServer) {
9389
const bundler: any = metroServer.getBundler().getBundler();
9490

9591
if (!bundler.__react_native_css__patched) {
@@ -230,9 +226,14 @@ export function withReactNativeCSS<
230226
};
231227
}
232228

233-
return originalMiddleware
234-
? server.use(originalMiddleware(middleware, metroServer))
235-
: server.use(middleware);
229+
/**
230+
* We don't modify the middleware, we just use this function to get the metroServer
231+
* So simply return the existing middleware
232+
*/
233+
return (
234+
config.server?.enhanceMiddleware?.(metroMiddleware, metroServer) ??
235+
metroMiddleware
236+
);
236237
},
237238
},
238239
};

0 commit comments

Comments
 (0)