Thank you for helping out with Async Storage! We'd like to make contributions as pleasent as possible, so here's a small guide of how we see it. Happy to hear your feedback about anything, so please let us know.
We use flow
for type check, eslint
with prettier
for linting/formatting, jest/detox
for tests (unit and e2e). All tests are run on CircleCI for all opened pull requests, but you should use them locally when making changes.
yarn test
: Run all tests, except for e2e (see note below).yarn test:lint
: Runeslint
check.yarn test:flow
: Runflow
type check.yarn test:e2e:<ios|android>
: Runs e2e tests. Before you can run it, you should build the app that can be run, by usingyarn build:e2e:<ios|android>
.
When you're sending a pull request:
- Communication is a key. If you want fix/add something, please open new/find existing issue, so we can discuss it.
- We prefer small pull requests focused on one change, as those are easier to test/check.
- Please make sure that all tests are passing on your local machine.
- Follow the template when opening a PR.
All PRs are squashed into master
and wrapped up in a single commit, following conventional commit message. Combined with semantic versioning, this allows us to have a frequent releases of the library.
Note: We don't force this convention on Pull Requests from contributors, but it's a clean way to see what type of changes are made, so feel free to follow it.
Most notably prefixes you'll see:
- fix: Bug fixes, triggers patch release
- feat: New feature implemented, triggers minor
- chore: Changes that are not affecting end user (CI config changes, scripts, "grunt work")
- docs: Documentation changes.
- perf: A code change that improves performance.
- refactor: A code change that neither fixes a bug nor adds a feature.
- test: Adding missing tests or correcting existing tests.
We use Semantic Release to automatically release new versions of the library when changes are merged into master. Using the commit message convention described above, it will detect if we need to release a patch, minor, or major version of the library.
You can report issues on our bug tracker. Please search for existing issues and follow the issue template when opening an one.
By contributing to React Native Async Storage, you agree that your contributions will be licensed under the MIT license.