Skip to content

Commit 90f35d2

Browse files
author
perlinson
committed
Remove connected-react-router dependency and use React Router v6
🔧 Remove connected-react-router: - Remove connected-react-router from package.json dependencies - Remove connected-react-router imports from index.js - Create simple router middleware to replace connected-react-router - Update history version back to ^5.3.0 for React Router v6 compatibility 📦 Router middleware: - Add router-middleware.js with simple Redux integration - Support push, replace, go, goBack, goForward actions - Lightweight alternative to connected-react-router 🚀 Workflow fixes: - Remove --legacy-peer-deps from lerna bootstrap (not supported) - Keep --legacy-peer-deps for npm install commands - Simplify dependency management ✅ Benefits: - No more peer dependency conflicts - Smaller bundle size - Better React Router v6 compatibility - Cleaner dependency tree
1 parent 4b0ddeb commit 90f35d2

5 files changed

Lines changed: 57 additions & 11 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
run: npm install --legacy-peer-deps
2828

2929
- name: Bootstrap packages
30-
run: npx lerna bootstrap --no-ci --legacy-peer-deps
30+
run: npx lerna bootstrap --no-ci
3131

3232
- name: Build packages
3333
run: |

.github/workflows/npm-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
run: npm install --legacy-peer-deps
2727

2828
- name: Bootstrap packages
29-
run: npx lerna bootstrap --no-ci --legacy-peer-deps
29+
run: npx lerna bootstrap --no-ci
3030

3131
- name: Build packages
3232
run: |

packages/modernx/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@
3434
"@types/isomorphic-fetch": "^0.0.36",
3535
"@types/react-redux": "^7.1.0",
3636
"@types/react-router-dom": "^5.3.0",
37-
"connected-react-router": "^6.9.0",
3837
"global": "^4.4.0",
39-
"history": "^4.7.2",
38+
"history": "^5.3.0",
4039
"invariant": "^2.2.4",
4140
"isomorphic-fetch": "^3.0.0",
4241
"modernx-core": "*",

packages/modernx/src/index.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,17 @@ import {
1414
import { bindActionCreators } from 'redux';
1515
import { utils, create, saga, createDvaReact18Enhancer } from 'modernx-core';
1616
import * as router from 'react-router-dom';
17-
import * as routerRedux from 'connected-react-router';
17+
import { createRouterMiddleware } from './router-middleware';
1818
import * as routerV6Compat from './router-v6-compat';
1919

20-
const { connectRouter, routerMiddleware } = routerRedux;
2120
const { isFunction } = utils;
2221
const { useHistory, useLocation, useParams, useRouteMatch } = router;
2322

2423
export default function(opts = {}) {
2524
const history = opts.history || createHashHistory();
2625
const createOpts = {
27-
initialReducer: {
28-
router: connectRouter(history),
29-
},
3026
setupMiddlewares(middlewares) {
31-
return [routerMiddleware(history), ...middlewares];
27+
return [createRouterMiddleware(history), ...middlewares];
3228
},
3329
setupApp(app) {
3430
app._history = patchHistory(history);
@@ -150,7 +146,6 @@ export { connect, connectAdvanced, useSelector, useDispatch, useStore, shallowEq
150146
export { bindActionCreators };
151147
export { router };
152148
export { saga };
153-
export { routerRedux };
154149
export { createBrowserHistory, createMemoryHistory, createHashHistory };
155150
export { useHistory, useLocation, useParams, useRouteMatch };
156151
export {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* Simple Router Middleware for React Router v6
3+
* Replaces connected-react-router with a lightweight solution
4+
*/
5+
6+
import { createAction } from 'redux';
7+
8+
// Router actions
9+
export const push = createAction('ROUTER/PUSH');
10+
export const replace = createAction('ROUTER/REPLACE');
11+
export const go = createAction('ROUTER/GO');
12+
export const goBack = createAction('ROUTER/GO_BACK');
13+
export const goForward = createAction('ROUTER/GO_FORWARD');
14+
15+
// Simple router middleware
16+
export function createRouterMiddleware(history) {
17+
return (store) => (next) => (action) => {
18+
switch (action.type) {
19+
case 'ROUTER/PUSH':
20+
history.push(action.payload);
21+
break;
22+
case 'ROUTER/REPLACE':
23+
history.replace(action.payload);
24+
break;
25+
case 'ROUTER/GO':
26+
history.go(action.payload);
27+
break;
28+
case 'ROUTER/GO_BACK':
29+
history.goBack();
30+
break;
31+
case 'ROUTER/GO_FORWARD':
32+
history.goForward();
33+
break;
34+
default:
35+
break;
36+
}
37+
return next(action);
38+
};
39+
}
40+
41+
// Simple router reducer (optional - if you want to track router state in Redux)
42+
export const routerReducer = (state = {}, action) => {
43+
switch (action.type) {
44+
case 'ROUTER/LOCATION_CHANGE':
45+
return {
46+
...state,
47+
location: action.payload,
48+
};
49+
default:
50+
return state;
51+
}
52+
};

0 commit comments

Comments
 (0)