You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Sam Symons f23d851b40 Merge tag '7.63.8' into develop 3 days ago
.github Add autofill (#865) 1 month ago
AtbUITests increase timeout to see if it improves the atb tests (#848) 3 months ago
BookmarksTodayExtension Search in bookmarks (#767) 6 months ago
Configuration Set the version to 7.63.8. 1 week ago
Core Fix repeated webview refreshes (#891) 3 weeks ago
DuckDuckGo Set the version to 7.63.8. 1 week ago
DuckDuckGo.xcodeproj bump BSK to 4.0.2 (#900) 3 days ago
DuckDuckGoTests support future nav property in autocomplete results (#888) 4 weeks ago
FingerprintingUITests New Browsing Menu (#857) 2 months ago
Instruments update to use TDS (#533) 1 year ago
IntegrationTests clean up test targets and schemes (#820) 4 months ago
OpenAction update copy post copy guidelines review (#774) 6 months ago
QuickActionsTodayExtension update copy post copy guidelines review (#774) 6 months ago
ShareExtension update copy post copy guidelines review (#774) 6 months ago
Third-Party/bloom_cpp Add large scale https updates with bloom filter (#355) 2 years ago
TopSitesReport update embedded tracker radar and add integration tests (#645) 1 year ago
Widgets update copy post copy guidelines review (#774) 6 months ago
fastlane update to latest BSK, bump version number, update release notes. 2 weeks ago
fonts/licensed onboarding experiment 2 (#427) 2 years ago
performance update to use TDS (#533) 1 year ago
styleguide Add assertions and fatal errors to style guide (#824) 4 months ago
submodules Add fire button education to onboarding (#813) 4 months ago
.gitignore Update .gitignore (#600) 1 year ago
.gitmodules update privacy grade (#363) 2 years ago
.swiftlint.yml Turn SwiftLint back on (#738) 8 months ago Update readme, add guidelines to contributing. (#397) 2 years ago Update LICENSE (#853) 2 months ago Fix force touch shortcuts and add manual tests script 3 years ago
NOTICE Added NOTICE file (#305) 3 years ago Update LICENSE (#853) 2 months ago ipad improvements (#682) 10 months ago
adhocExportOptions.plist increase hit areas for toolbar buttons (#775) 7 months ago
appStoreExportOptions.plist use an export plist 8 months ago
bitrise.yml Remove retry as it is extending build time, we will fix the tests themselves (#381) 2 years ago [Xcode] adds script preventing version changes 1 year ago Translations (#727) 8 months ago Search in bookmarks (#767) 6 months ago Translations (#727) 8 months ago Make simulator in `./` configurable. (#487) 1 year ago Migrate to Swift Package Manager (#704) 9 months ago Make simulator in `./` configurable. (#487) 1 year ago Migrate to Swift Package Manager (#704) 9 months ago add ui tests, add and expand dividers, show total tracker counts (#282) 3 years ago Update example usage (#766) 7 months ago

DuckDuckGo iOS

We are excited to engage the community in development!

We are hiring!

DuckDuckGo is growing fast and we continue to expand our fully distributed team. We embrace diverse perspectives, and seek out passionate, self-motivated people, committed to our shared vision of raising the standard of trust online. If you are a senior software engineer capable in either iOS or Android, visit our careers page to find out more about our openings!



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:

  1. Run cp Configuration/DuckDuckGoDeveloper.xcconfig Configuration/ExternalDeveloper.xcconfig
  2. Edit Configuration/ExternalDeveloper.xcconfig and change the values of all fields
  3. Clean and rebuild the project


We use Swift Package Manager for dependency management, which shouldn't require any additional set up.


We use SwifLint for enforcing Swift style and conventions, so you'll need to install it.


We use Proxima Nova fonts which are proprietary and cannot be committed to source control, see fonts.



We have Custom Instruments tool to help visualize and track events that happen during runtime.

In order to run it:

  1. Build a Debug version and install it on Simulator/Device.
  2. Select Instruments target and run it on a Mac. A New instance of Instruments app will be run that has a grayed out icon indicating that it works in debug mode with custom instruments attached.
  3. Select 'DDG Trace' template or set up a custom one by importing 'DDG Timeline' instrument from Library.
  4. Start recording.

See Instruments Developer Help for reference how to create custom instruments.


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.


Please refer to contributing.


Contact us at 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".


DuckDuckGo is distributed under the Apache 2.0 license.