[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10048":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":15,"starSnapshotCount":15,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},10048,"rematch","rematch\u002Frematch","The Redux Framework","https:\u002F\u002Frematchjs.org",null,"TypeScript",8416,417,4,22,0,1,38.86,"MIT License",true,false,"main",[23,24,25,26,27,28,29,30,31,32,5,33,34,35],"angular","hacktoberfest","immer","javascript","react","react-native","react-redux","redux","redux-best-practices","redux-made-easy","state-management","typescript","vue","2026-06-12 02:02:16","\u003Cdiv align=\"center\">\n\u003Ch1>Rematch\u003Csub>js\u003C\u002Fsub>\u003C\u002Fh1>\n\nRematch is Redux best practices without the boilerplate. No more action types, action creators, switch statements or thunks in less than 1.4 kilobytes.\n\n\u003Chr \u002F>\n\n[![Chat on Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-rematch-purple.svg?logo=discord&style=flat-square)](https:\u002F\u002Fdiscord.gg\u002FzMzsMGvEHk) ![Rematch CI](https:\u002F\u002Fgithub.com\u002Frematch\u002Frematch\u002Fworkflows\u002FRematch%20CI\u002Fbadge.svg?branch=main) [![Bundle size](https:\u002F\u002Fimg.shields.io\u002Fbundlephobia\u002Fminzip\u002F@rematch\u002Fcore?style=flat-square)](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbundlesize-~5kb-brightgreen.svg?style=flat-square) [![File size](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdependencies-redux-brightgreen.svg?style=flat-square)](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdependencies-redux-brightgreen.svg?style=flat-square) [![lerna](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmaintained%20with-lerna-cc00ff.svg?style=flat-square)](https:\u002F\u002Flerna.js.org\u002F) [![https:\u002F\u002Fimg.shields.io\u002Flgtm\u002Fgrade\u002Fjavascript\u002Fgithub\u002Frematch\u002Frematch?logo=typescript](https:\u002F\u002Fimg.shields.io\u002Flgtm\u002Fgrade\u002Fjavascript\u002Fgithub\u002Frematch\u002Frematch?logo=typescript)](https:\u002F\u002Flgtm.com\u002Fprojects\u002Fg\u002Frematch\u002Frematch?mode=list)  [![Gitpod Ready-to-Code](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitpod-Ready--to--Code-blue?logo=gitpod)](https:\u002F\u002Fgitpod.io\u002Ffrom-referrer\u002F)\n\n\n[**Documentation**](https:\u002F\u002Frematchjs.org)  · [**Quickstart**](https:\u002F\u002Frematchjs.org\u002Fdocs\u002Fgetting-started\u002Finstallation) · [**Examples**](https:\u002F\u002Frematchjs.org\u002Fexamples\u002F) · [**Contribute**](.\u002FCONTRIBUTING.md) · [**Licence**](#licence)\n\n\u003C\u002Fdiv>\n\n## Features\n\nRedux is an amazing state management tool, supported by a healthy middleware ecosystem and excellent devtools.\nRematch builds upon Redux by reducing boilerplate and enforcing best practices. It provides the following features:\n\n- No configuration needed\n- Reduces Redux boilerplate\n- Built-in side-effects support\n- [React Devtools](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Freact\u002Ftree\u002Fmaster\u002Fpackages\u002Freact-devtools) support\n- TypeScript support\n- Supports dynamically adding reducers\n- Supports hot-reloading\n- Allows to create multiple stores\n- Supports React Native\n- Extendable with plugins\n- Many plugins available out of the box:\n    - for persisting data with [redux-persist](https:\u002F\u002Fgithub.com\u002Frt2zz\u002Fredux-persist)\n    - for wrapping state with [immer.js](https:\u002F\u002Fgithub.com\u002Fimmerjs\u002Fimmer)\n    - for creating selectors with [reselect](https:\u002F\u002Fgithub.com\u002Freduxjs\u002Freselect)\n    - ...and others\n\n## Are you ready to use Rematch?\n\nIn a few lines you can get easily asynchronous calls to an external API and data stored globally. It's amazing, with Redux you will needs tons of boilerplate, libraries and extra configuration.\n\n```ts\ntype PlayersState = {\n    players: PlayerModel[]\n}\n\nexport const players = createModel\u003CRootModel>()({\n    state: {\n        players: [],\n    } as PlayersState,\n    reducers: {\n        SET_PLAYERS: (state: PlayersState, players: PlayerModel[]) => {\n            return {\n                ...state,\n                players,\n            }\n        },\n    },\n    effects: (dispatch) => {\n        const { players } = dispatch\n        return {\n            async getPlayers(): Promise\u003Cany> {\n                let response = await fetch('https:\u002F\u002Fwww.balldontlie.io\u002Fapi\u002Fv1\u002Fplayers')\n                let { data }: { data: PlayerModel[] } = await response.json()\n                players.SET_PLAYERS(data)\n            },\n        }\n    },\n})\n```\n\nCheck it out, [right now!](https:\u002F\u002Frematchjs.org\u002F)\n\n## Redux vs Rematch\n\n|                           | Redux  | Rematch      |\n| :------------------------ | :----: | :----------: |\n| simple setup ‎            |        | ‎✔           |\n| less boilerplate          |        | ‎✔           |\n| readability               |        | ‎✔           |\n| configurable              | ‎   ✔  | ‎✔           |\n| redux devtools            |   ‎✔   |       ‎✔     |\n| generated action creators | ‎      |       ‎✔     |\n| async                     | thunks | ‎async\u002Fawait |\n\n## Migrate From Redux\n\nMigrating from Redux to Rematch may only involve minor changes to your state management, and no necessary changes to your view logic. See the [migration reference](https:\u002F\u002Frematchjs.org\u002Fdocs\u002Fmigrating-from-redux-to-rematch) for the details.\n\n## Composable Plugins\n\nRematch and its internals are all built upon a plugin pipeline. As a result, developers can make complex custom plugins that modify the setup or add data models, often without requiring any changes to Rematch itself. See the [plugins](https:\u002F\u002Frematchjs.org\u002Fdocs\u002Fplugins) developed by the Rematch team or the [API for creating plugins](https:\u002F\u002Frematchjs.org\u002Fdocs\u002Fapi-reference\u002Fplugins).\n\n\n## Contact & Support\n\n- Create a [GitHub issue](https:\u002F\u002Fgithub.com\u002Frematch\u002Frematch\u002Fissues) for bug reports, feature requests, or questions\n- Add a ⭐️ [star on GitHub](https:\u002F\u002Fgithub.com\u002Frematch\u002Frematch) to support the project!\n\n### Contributors\n\nThank you to all the people who have already contributed to rematch!\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frematch\u002Frematch\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontributors-img.web.app\u002Fimage?repo=rematch\u002Frematch\" \u002F>\n\u003C\u002Fa>\n\nMade with [contributors-img](https:\u002F\u002Fcontributors-img.web.app).\n\n## Licence\n\nThis project is licensed under the [MIT license](https:\u002F\u002Fgithub.com\u002Frematch\u002Frematch\u002Fblob\u002Fmain\u002FLICENSE).\n","Rematch 是一个基于 Redux 的状态管理框架，旨在简化 Redux 的使用流程。它通过减少样板代码并内置了副作用处理支持，使得开发者无需编写 action types、action creators 以及 switch 语句即可实现复杂的状态管理。此外，Rematch 支持 TypeScript，并且可以动态添加 reducers、支持热重载及多 store 创建等功能。该项目非常适合需要高效进行状态管理的 React 或 React Native 应用场景，尤其是当项目规模较大时，能够显著提高开发效率和代码可维护性。",2,"2026-06-11 03:26:18","top_topic"]