# Contribute to the JavaScript client library
This document describes how to contribute to the JavaScript client library.
We encourage everyone with knowledge of IOTA technology to contribute.
Thanks! :heart:
Do you have a question :question:
If you have a general or technical question, you can use one of the following resources instead of submitting an issue:
- [**Developer documentation:**](https://docs.iota.org/) For official information about developing with IOTA technology
- [**Discord:**](https://discord.iota.org/) For real-time chats with the developers and community members
- [**IOTA cafe:**](https://iota.cafe/) For technical discussions with the Research and Development Department at the IOTA Foundation
- [**StackExchange:**](https://iota.stackexchange.com/) For technical and troubleshooting questions
Ways to contribute :mag:
To contribute to the JavaScript client library on GitHub, you can:
- Report a bug
- Suggest a new feature
- Build a new feature
- Contribute to the documentation
Report a bug :bug:
This section guides you through reporting a bug. Following these guidelines helps maintainers and the community understand the bug, reproduce the behavior, and find related bugs.
### Before reporting a bug
Please check the following list:
- **Do not open a GitHub issue for [security vulnerabilities](SECURITY.MD)**, instead, please contact us at [security@iota.org](mailto:security@iota.org).
- **Ensure the bug was not already reported** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iota.js/issues). If the bug has already been reported **and the issue is still open**, add a comment to the existing issue instead of opening a new one. You can also find related issues by their [label](https://github.com/iotaledger/iota.js/labels?page=1&sort=name-asc).
**Note:** If you find a **Closed** issue that seems similar to what you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
### Submitting A Bug Report
To report a bug, [open a new issue](https://github.com/iotaledger/iota.js/issues/new), and be sure to include as many details as possible, using the template.
**Note:** Minor changes such as fixing a typo can but do not need an open issue.
If you also want to fix the bug, submit a [pull request](#pull-requests) and reference the issue.
Suggest a new feature :bulb:
This section guides you through suggesting a new feature. Following these guidelines helps maintainers and the community collaborate to find the best possible way forward with your suggestion.
### Before suggesting a new feature
**Ensure the feature has not already been suggested** by searching on GitHub under [**Issues**](https://github.com/iotaledger/iota.js/issues).
### Suggesting a new feature
To suggest a new feature, talk to the IOTA community and IOTA Foundation members on [Discord](https://discord.iota.org/).
If the team members approves your feature, they will create an issue for it.
Build a new feature :hammer:
This section guides you through building a new feature. Following these guidelines helps give your feature the best chance of being approved and merged.
### Before building a new feature
Make sure to discuss the feature with the developers on [Discord](https://discord.iota.org/).
Otherwise, your feature may not be approved at all.
### Building a new feature
To build a new feature, check out a new branch based on the `next` branch, and be sure to consider the following:
- If the feature has a public facing API, make sure to document it, using [JSDoc](https://jsdoc.app/) code comments
Contribute to the documentation :black_nib:
The JavaScript client library documentation is hosted on https://docs.iota.org, which is built from content in the [documentation](https://github.com/iotaledger/documentation) repository.
Please see the [guidelines](https://github.com/iotaledger/documentation/CONTRIBUTING.md) on the documentation repository for information on how to contribute to the documentation.
Pull requests :mega:
This section guides you through submitting a pull request (PR). Following these guidelines helps give your PR the best chance of being approved and merged.
### Before submitting a pull request
When creating a pull request, please follow these steps to have your contribution considered by the maintainers:
- A pull request should have only one concern (for example one feature or one bug). If a PR addresses more than one concern, it should be split into two or more PRs.
- A pull request can be merged only if it references an open issue
**Note:** Minor changes such as fixing a typo can but do not need an open issue.
- All code should be well tested
### Submitting a pull request
The following is a typical workflow for submitting a new pull request:
1. Fork this repository
2. Create a new branch based on your fork
3. Commit changes and push them to your fork
4. Create a pull request against the `next` branch
If all [status checks](https://help.github.com/articles/about-status-checks/) pass, and the maintainer approves the PR, it will be merged.
**Note:** Reviewers may ask you to complete additional work, tests, or other changes before your pull request can be approved and merged.
Code of Conduct :clipboard:
This project and everyone participating in it is governed by the [IOTA Code of Conduct](CODE_OF_CONDUCT.md).