{"id":22454340,"url":"https://github.com/roblox/rodux","last_synced_at":"2026-01-12T01:55:44.684Z","repository":{"id":27175099,"uuid":"106594329","full_name":"Roblox/rodux","owner":"Roblox","description":"A state management library for Roblox Lua inspired by Redux","archived":false,"fork":false,"pushed_at":"2024-03-23T17:09:10.000Z","size":1577,"stargazers_count":250,"open_issues_count":13,"forks_count":57,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-09-21T20:39:50.160Z","etag":null,"topics":["lua","redux","roblox","state"],"latest_commit_sha":null,"homepage":"https://roblox.github.io/rodux","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Roblox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-11T18:37:04.000Z","updated_at":"2024-09-09T00:51:41.000Z","dependencies_parsed_at":"2024-10-26T04:53:42.323Z","dependency_job_id":"8688eb1f-616d-4663-bd50-387b17ea2f6a","html_url":"https://github.com/Roblox/rodux","commit_stats":{"total_commits":120,"total_committers":19,"mean_commits":6.315789473684211,"dds":0.5916666666666667,"last_synced_commit":"9099e95c19761830d4c73044c69fef5d40997683"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Frodux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Frodux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Frodux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roblox%2Frodux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Roblox","download_url":"https://codeload.github.com/Roblox/rodux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228426122,"owners_count":17917790,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lua","redux","roblox","state"],"created_at":"2024-12-06T07:07:31.371Z","updated_at":"2026-01-12T01:55:44.677Z","avatar_url":"https://github.com/Roblox.png","language":"Lua","readme":"\u003ch1 align=\"center\"\u003eRodux\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/Roblox/rodux/actions\"\u003e\n\t\t\u003cimg src=\"https://github.com/Roblox/rodux/workflows/CI/badge.svg\" alt=\"GitHub Actions Build Status\" /\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://coveralls.io/github/Roblox/rodux?branch=master\"\u003e\n\t\t\u003cimg src=\"https://coveralls.io/repos/github/Roblox/rodux/badge.svg?branch=master\" alt=\"Coveralls Coverage\" /\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://roblox.github.io/rodux\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/docs-website-green.svg\" alt=\"Documentation\" /\u003e\n\t\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\tA state management library for Roblox Lua inspired by \u003ca href=\"https://redux.js.org\"\u003eRedux\u003c/a\u003e.\n\u003c/div\u003e\n\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\n\n## Installation\n\n### Method 1: Model File (Roblox Studio)\n* Download the `rbxm` model file attached to the latest release from the [GitHub releases page](https://github.com/Roblox/rodux/releases).\n* Insert the model into Studio into a place like `ReplicatedStorage`\n\n### Method 2: Filesystem\n* Copy the `src` directory into your codebase\n* Rename the folder to `Rodux`\n* Use a plugin like [Rojo](https://github.com/LPGhatguy/rojo) to sync the files into a place\n\n## Usage\nRodux works just like [Redux](https://redux.js.org)'s base API.\n\nSee the official [Rodux Documentation](https://roblox.github.io/rodux/) for more details.\n\n```lua\nlocal Rodux = require(script.Parent.Rodux)\n\nlocal function reducer(state, action)\n\tstate = state or {\n\t\tfrobulations = 0,\n\t}\n\n\tif action.type == \"frobulate\" then\n\t\treturn {\n\t\t\tfrobulations = state.frobulations + 1,\n\t\t}\n\tend\n\n\treturn state\nend\n\nlocal store = Rodux.Store.new(reducer)\n\nstore:getState() -- { frobulations = 0 }\n\nstore:dispatch({\n\ttype = \"frobulate\",\n})\n\nstore:getState() -- { frobulations = 1 }\n```\n\n## Contributing\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for information.\n\n## License\nRodux is available under the Apache 2.0 license. See [LICENSE](LICENSE) for details.\n","funding_links":[],"categories":["Hooks"],"sub_categories":["React-Reflex \u003cimg src=\"luau.svg\" width=\"18px\" /\u003e\u003cimg src=\"roblox-ts.svg\" width=\"18px\" /\u003e"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froblox%2Frodux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froblox%2Frodux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froblox%2Frodux/lists"}