You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 24, 2025. It is now read-only.
👋 Thanks for your interest in DuckDuckGo! The source code for this project has been moved to duckduckgo/apple-browsers and this repo no longer accepts contributions.
Please file any bug reports or feature requests in the new repo.
We are excited to engage the community in development!
Building
Submodules
We use submodules, so you will need to bring them into the project in order to build and run it:
Run git submodule update --init --recursive
Developer details
If you're not part of the DuckDuckGo team, you should provide your Apple developer account id, app id, and group id prefix in an ExternalDeveloper.xcconfig file. To do that:
Run cp Configuration/DuckDuckGoDeveloper.xcconfig Configuration/ExternalDeveloper.xcconfig
Edit Configuration/ExternalDeveloper.xcconfig and change the values of all fields
Clean and rebuild the project
Dependencies
We use Swift Package Manager for dependency management, which shouldn't require any additional set up.
SwiftLint
We use SwifLint for enforcing Swift style and conventions, so you'll need to install it.
Debugging
Instruments
We have a Custom Instruments tool to help visualize and track events that happen during runtime.
In order to run it:
Build a debug version and install it on a simulator or device.
Select the Instruments target and run it on a Mac. A new instance of the Instruments app will run. It will have a grayed out icon indicating that it works in debug mode with custom instruments attached.
Select the 'DDG Trace' template or set up a custom one by importing the 'DDG Timeline' instrument from Library.
We have taken steps to update our terminology and remove words with problematic racial connotations, most notably the change to main branches, allow lists, and blocklists. Closed issues or PRs may contain deprecated terminology that should not be used going forward.
Contact us at https://duckduckgo.com/feedback if you have feedback, questions or want to chat. You can also use the feedback form embedded within our Mobile App - to do so please navigate to Settings and select "Send Feedback".
License
DuckDuckGo is distributed under the Apache 2.0 license.