Ways to contribute
- Analyze issues — Browse open issues and comment on those that affect you. Triage feedback helps the team prioritize work.
- Report a bug — File a new issue with as much detail as possible.
- Submit a pull request — All code contributions are handled via PRs targeting the
mainbranch. - Improve documentation — If the README or API docs are unclear, let the team know.
Setting up the development environment
Check prerequisites
Make sure you have the following installed:
- Xcode 26.0 or later
- Swift Package Manager (included with Xcode)
- Homebrew (
brew) - Python 3.7+ with
pip(use pyenv to manage versions) - npm 5.2+ (includes
npx)
Run the setup script
Run the collaborator setup script from the repository root. This installs git hooks, SwiftFormat, SwiftLint, Sourcery, and commitizen:The script installs:
- A pre-commit hook that runs SwiftFormat automatically.
- A pre-push hook that runs SwiftLint before your code reaches remote.
- A commit-msg hook that guides you through Conventional Commits format when you run
git commit. - Sourcery for component code generation.
Running tests
Run the full test suite for iOS:FioriThemeManager is supported on watchOS):
xcodebuild directly with the FioriSwiftUI-Package scheme.
Component generation with Sourcery
FioriSwiftUICore components follow a consistent initialization pattern that is generated using Sourcery. If you are contributing a new component, use the generation workflow rather than writing boilerplate by hand.
Define the protocol
Add your component protocol to
BaseComponentProtocols.swift or CompositeComponentProtocols.swift with the appropriate Sourcery annotation:Implement the style
Move the generated style file from
_generated/FioriStyleTemplates to _FioriStyles and remove .generated from the filename. Implement BaseStyle (layout) and FioriStyle (Fiori-specific styling, colors, fonts) in that file.Only edit the style files — all other generated files are managed by Sourcery.Commit messages
This project follows Conventional Commits. After runningsetupForCollaborators.sh, running git commit launches an interactive commitizen prompt that guides you through the format.
Examples of valid commit messages:
The pre-push hook runs SwiftLint. Fix any violations before pushing, or the push will be rejected.
Pull request checklist
Before opening a PR:- Add or update tests to cover your changes.
- Verify all tests pass (
make test_ios). - Confirm there are no SwiftLint violations.
- Check that your commit messages follow Conventional Commits format.
- Target the
mainbranch.