Thank you for your interest in contributing! This document provides guidelines and instructions for contributing to the project.
By participating in this project, you agree to abide by our Code of Conduct. Be respectful, inclusive, and constructive in all interactions.
- Node.js >= 18.x
- npm or yarn
- React Native development environment (for testing native features)
- TypeScript knowledge
-
Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/react-native-sync-vault.git cd react-native-sync-vault -
Install dependencies
npm install
-
Build the project
npm run build
-
Run tests
npm test -
Run linting
npm run lint
main- Stable, production-ready codedevelop- Integration branch for featuresfeature/*- New featuresfix/*- Bug fixesdocs/*- Documentation updates
-
Create a branch
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make your changes
- Write clean, readable code
- Follow existing code style
- Add tests for new features
- Update documentation as needed
-
Test your changes
npm test npm run lint npm run build -
Commit your changes
- Use clear, descriptive commit messages
- Follow conventional commits format when possible:
feat: add new featurefix: resolve bugdocs: update documentationtest: add testsrefactor: improve code structure
-
Push and create a Pull Request
git push origin feature/your-feature-name
- Use TypeScript strict mode
- Provide types for all public APIs
- Avoid
any- use proper types orunknown - Use interfaces for object shapes
- Use type aliases for unions and complex types
- Follow existing code patterns
- Use meaningful variable and function names
- Keep functions focused and single-purpose
- Add JSDoc comments for public APIs
- Keep line length reasonable (100 chars max)
- Write tests for all new features
- Maintain or improve test coverage
- Test both success and error cases
- Mock native modules appropriately
- Test edge cases and boundary conditions
- Keep related code together
- Use clear file and directory names
- Export types from
types.ts - Group hooks in
hooks/directory - Keep utilities in
utils/directory
-
Ensure your PR is ready
- All tests pass
- Code is linted
- TypeScript compiles without errors
- Documentation is updated
- No merge conflicts
-
Create a descriptive PR
- Clear title describing the change
- Detailed description of what and why
- Reference related issues
- Include screenshots/videos if UI changes
- Update CHANGELOG.md if applicable
-
Respond to feedback
- Be open to suggestions
- Make requested changes promptly
- Engage in constructive discussion
- Test Coverage: Help improve test coverage, especially for native modules
- Documentation: Improve docs, add examples, fix typos
- Performance: Identify and fix performance bottlenecks
- Bug Fixes: Fix reported issues
- Cache Layer: Help build the intelligent caching system
- State Management: Build adapters for Redux, Zustand, etc.
- Optimistic Updates: Implement optimistic update system
- Examples: Create example applications
- API Documentation: Improve JSDoc comments
- Guides: Write how-to guides and tutorials
- Examples: Add more code examples
- Migration Guides: Help users migrate from other solutions
Testing native modules requires additional setup:
cd ios
pod installEnsure Android SDK and build tools are installed.
- Open an issue with the
questionlabel - Check existing issues and discussions
- Reach out to maintainers
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes for significant contributions
- Credited in relevant documentation
Thank you for contributing to react-native-sync-vault! 🎉