Skip to content

Help build the best iOS network debugger.

Trace is open source and community-driven. Contributions are welcome in many forms—code, documentation, bug reports, feature requests, and more.

Ways to contribute

Code

Fix bugs, implement features, or optimize performance. Browse issues labeled "good first issue" to get started with a manageable first contribution.

View good first issues →

Documentation

Improve guides, fix typos, add examples, or clarify confusing sections.

Browse docs →

Translations

Help make Trace accessible to non-English speakers.

View translations →

Community

Help others in discussions, share debugging workflows, or write tutorials.

Join discussions →

Bug reports & feature requests

Found a bug? Report it with steps to reproduce and device details. Have an idea? Open a discussion describing the use case. We prioritize features based on user feedback.

Code contribution workflow

1

Find or create an issue

Browse open issues or create a new one to discuss your proposed changes. For significant features, open a discussion first to validate the approach before writing code.
2

Fork and clone

Fork the repository on GitHub, then clone your fork:
bash
git clone https://github.com/Trace-iOS/Trace
3

Create a feature branch

Create a new branch from main:
bash
git checkout -b feature/your-feature-name
4

Write and test your changes

Follow the project's coding style. Write tests for new features. Run existing tests to ensure nothing breaks. See the building guide for development setup.
5

Submit a pull request

Push your branch and open a pull request on GitHub. Include a clear description of what changed and why. Reference any related issues. Participate in code review.

Guidelines

Code style

Follow Swift conventions and Apple's API Design Guidelines. Use SwiftLint configuration from the repository. Keep functions focused and well-named. Add comments for non-obvious logic.

Commit messages

Write clear commit messages in present tense: "Add WebSocket frame filtering" not "Added...". Reference issue numbers when relevant.

Testing

Add tests for new features. Ensure existing tests pass. Manual testing on physical devices is important—simulators don't support Network Extension.

Documentation

Update relevant documentation when adding features. Include code examples where helpful. Keep the README and guides in sync with actual behavior.

Breaking changes

Avoid breaking changes when possible. If necessary, discuss in an issue first. Provide migration guides and deprecation warnings.

Ready to contribute?

Whether you're fixing a typo or implementing a major feature, your contribution helps make Trace better for everyone.