Skip to content
DuckDuckGo iOS Application
Swift JavaScript HTML Shell Objective-C Objective-C++ Ruby
Branch: develop
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github improve onboarding experiment 1 (#419) Mar 6, 2019
AtbIntegrationTests remove centred search and favorites experiment details (#466) Jul 29, 2019
BookmarksTodayExtension Bump version number Aug 6, 2019
Core iOS 13 and LHF tweaks (#470) Aug 16, 2019
DuckDuckGo.xcodeproj iOS 13 and LHF tweaks (#470) Aug 16, 2019
DuckDuckGo iOS 13 and LHF tweaks (#470) Aug 16, 2019
DuckDuckGoTests Fix crash when undoing (#463) Jul 29, 2019
Instruments Custom Instrumentation (#434) Jun 24, 2019
IntegrationTests enhance home page ux (#384) Dec 17, 2018
QuickActionsTodayExtension Bump version number Aug 6, 2019
ShareExtension Bump version number Aug 6, 2019
SpeedTests Performance improvements (#458) Jun 28, 2019
Third-Party/bloom_cpp Add large scale https updates with bloom filter (#355) Aug 23, 2018
TopSitesReport update privacy grade (#363) Oct 5, 2018
UITests Update to Xcode 10 and Swift 4.2 (#367) Oct 12, 2018
fastlane Bump version number, tweak release notes Jul 22, 2019
fonts/licensed onboarding experiment 2 (#427) Mar 29, 2019
styleguide add swift lint and style guide (#342) Jul 6, 2018
submodules find in page (#411) Feb 21, 2019
.gitignore Add latest app store screenshots (#298) Apr 13, 2018
.gitmodules update privacy grade (#363) Oct 5, 2018
.swiftlint.yml add swift lint and style guide (#342) Jul 6, 2018 Update readme, add guidelines to contributing. (#397) Feb 1, 2019
Cartfile migrate to Xcode 10.2 and Swift 5 (#431) Apr 2, 2019
Cartfile.resolved migrate to Xcode 10.2 and Swift 5 (#431) Apr 2, 2019
LICENSE Update LICENSE (#392) Jan 9, 2019 Fix force touch shortcuts and add manual tests script Oct 31, 2017
NOTICE Added NOTICE file (#305) May 4, 2018 Custom Instrumentation (#434) Jun 24, 2019 onboarding experiment 3 (#435) Apr 15, 2019
bitrise.yml Remove retry as it is extending build time, we will fix the tests the… Nov 8, 2018 add atb integration tests (#351) Aug 8, 2018 Fix integration tests Oct 10, 2017 add atb integration tests (#351) Aug 8, 2018 add ui tests, add and expand dividers, show total tracker counts (#282) Mar 21, 2018

DuckDuckGo iOS

We are excited to engage the community in development!

We are hiring!

We are looking for a Senior Cross-Platform engineer to help shape our mobile apps. We embrace diverse perspectives, and seek out passionate, self-motivated people, committed to our shared vision of raising the standard of trust online. Visit our careers page to find out more!



We only have one submodule at the moment, but because of that you will need to bring it in to the project in order to build and run it:

Run git submodule update --init --recursive


We use Carthage for dependency management. If you don't have Carthage installed refer to Installing Carthage.

Run carthage bootstrap --platform iOS before opening the project in Xcode

You can also run the unit tests to do the above and ensure everything seems in order: ./


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. 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 setup a custom one by importing 'DDG Timeline' instrument from Library .
  4. Start recording.

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


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.

You can’t perform that action at this time.