Part of what makes React great is the rich ecosystem. We'd like the same for Dioxus! So if you have a library in mind that you'd like to write and many people would benefit from, it will be appreciated. You can browse npm.js for inspiration. Once you are done, add your library to the awesome dioxus list or share it in the #I-made-a-thing channel on Discord.
If you've fixed an open issue, feel free to submit a PR! You can also take a look at the roadmap and work on something in there. Consider reaching out to the team first to make sure everyone's on the same page, and you don't do useless work!
All pull requests (including those made by a team member) must be approved by at least one other team member.Larger, more nuanced decisions about design, architecture, breaking changes, trade-offs, etc. are made by team consensus.
The following tools can be helpful when developing Dioxus. Many of these tools are used in the CI pipeline. Running them locally before submitting a PR instead of waiting for CI can save time.
- All code is tested with cargo test
cargo fmt --all
- All code is formatted with rustfmt
cargo check --workspace --examples --tests
- All code is linted with Clippy
cargo clippy --workspace --examples --tests -- -D warnings
- Crates that use unsafe are checked for undefined behavior with MIRI. MIRI can be helpful to debug what unsafe code is causing issues. Only code that does not interact with system calls can be checked with MIRI. Currently, this is used for the two MIRI tests in dioxus-core and dioxus-native-core.
cargo miri test --package dioxus-core --test miri_stress cargo miri test --package dioxus-native-core --test miri_native
- Rust analyzer can be very helpful for quick feedback in your IDE.