Firefox Focus for iOS

Last update: May 12, 2022

Firefox Focus for iOS

Browse like no one’s watching. The new Firefox Focus automatically blocks a wide range of online trackers — from the moment you launch it to the second you leave it. Easily erase your history, passwords and cookies, so you won’t get followed by things like unwanted ads.

Download on the App Store.

Getting Involved

We encourage you to participate in this open source project. We love Pull Requests, Bug Reports, ideas, (security) code reviews or any kind of positive contribution. Please read the Community Participation Guidelines.

If you're looking for a good way to get started contributing, check out some good first issues.

We also tag recommended bugs for contributions with help wanted.

Main Branch

This branch works with Xcode 13 and supports iOS 13.0 and newer.

Pull requests should be submitted with main as the base branch.

Build Instructions

  1. Install Xcode 13 Xcode developer tools from Apple.
  2. Clone the repository:
git clone https://github.com/mozilla-mobile/focus-ios.git
  1. Pull in the project dependencies:
cd focus-ios
./checkout.sh
  1. Open Blockzilla.xcodeproj in Xcode.
  2. Build the Focus scheme in Xcode.

GitHub

https://github.com/mozilla-mobile/focus-ios
Comments
  • 1. Share tracker stats

    Fixes #858.

    To do:

    • Make the button on the home screen look tappable - ideas welcome
    • Only show on devices of Phone 6, 6+, or X form factor

    http://recordit.co/xlmzogfW3Y

    Reviewed by joeyg at 2018-01-31 23:57
  • 2. "What's new" in app

    We want to inform our users of updates inside the app, rather than via the store update description.

    UX to come up with a solution how to achieve that.

    Requirements:

    • needs to show the content of a What's New SUMO Page
    • shows after update of the app
    • the presentation does not conflict with the simplicity of the app
    Reviewed by bbinto at 2017-08-24 10:48
  • 3. [ux] Ability to add search engines and or remove existing search engines

    User Story

    • I want to add a search engine default that is not in the pre-defined list of search engines, e.g. Bing

    User Value

    • Pick their preferred search engine, give user control

    Business Value

    • Give users choice over their preferred search engine

    Success Criteria

    • We know this feature is successful by looking at usage of this feature
    • Retention by users using this feature
    Reviewed by bbinto at 2017-07-17 15:33
  • 4. Fixes #533 - changing to retain the keyword searched instead final url

    Hi, this is my first contribution to Firefox Focus.

    I tried to make the simplest solution to the problem presented by changing only to the keyword instead of retaining the final url.

    Sorry if something is wrong.

    Reviewed by marchiore at 2017-10-11 02:45
  • 5. Add custom search engine

    Fixes issues #724 . A bit of a work in progress but I think it is ready to start getting feedback.

    TODO:

    • Add some basic URL validation
    • Add tests to SearchEngineManager
    Reviewed by joeyg at 2017-11-19 04:29
  • 6. The erase message obscures the tracker stats label

    When erasing, the message that indicates browser history has been erased obscures the tracker stats label.

    Erase message blocks tracker label by pdil

    This causes a delay if you quickly want to see your tracker stats after a browsing session.

    It appears that both the Toast and trackerStatsView in the HomeView are using the same offset constraint of -24.

    Sent with GitHawk

    Reviewed by pdil at 2018-06-26 15:48
  • 7. Display settings as a modal

    I took a crack at improving the Settings screen on iPad (issue #346) and displayed it as a modal like the Firefox app does. Some more testing needs to be done and I need to check that this won't break the UI Tests but I wanted to get the team's thoughts.

    iPad screencast: http://recordit.co/UJnGN6kmO2 iPhone screencast: http://recordit.co/WetCVbGxhc

    cc: @lime124, @boek, @Sdaswani

    Reviewed by joeyg at 2018-01-04 00:26
  • 8. Start Screen Tips

    @brampitoyo for 7.0 iOS, @oliviabrown9 has a stretch goal to build screen tips in iOS too (like Android): https://github.com/mozilla-mobile/focus-android/issues/2816#issuecomment-408743647

    We can deep link to settings for Siri, search engines, autocomplete, etc., and we can rotate them in over the 'Share Trackers' experiment. Can you design how this would look like you did for Android?

    Telemetry: #1327

    Reviewed by Sdaswani at 2018-07-31 18:12
  • 9. [l10n] Improve localization process

    Spin-off from #389

    cc @st3fan, @delphine, @Sdaswani

    I realized a few flaws in the process while doing the string import, something worth discussing when everyone is back from PTO:

    • To have screenshots for a new locale (es-AR), it needs to be imported in the tree, and it will ship with the next version in App Store.
    • The Go script only imports complete locales, which means a locale in-tree at 99% doesn't get any updated strings, even if it's shipping. That's far from great.
    • Removing a locale requires removing the localization from Xcode, and manually removing the folders from the tree.

    For the first point: in Firefox for iOS, since localizations are not stored in-tree, you can create a build for screenshots with all locales, and a "release" build with only shipping locales (defined in a text file).

    We should really look into unifying the two processes ;-)

    Reviewed by flodolo at 2017-08-31 19:09
  • 10. Show trackers blocked in collapsed URL bar (on-scroll)

    EDIT: New design preview

    screen shot 2017-08-17 at 3 27 35 pm

    @Sdaswani from our meeting, we mentioned we need to know how/what knobs-and-dials we have to play with here. I.e. Can we show total trackers per page? tally that per session? different types of trackers?

    To be clear, we might not do all of the above, but its still helpful knowledge for future considerations.

    Reviewed by antlam at 2017-08-01 20:30
  • 11. Fix overlaps for #1437

    Fix for #1437 I made the Firefox Focus logo hidden in the landscape orientation and moved the tips a little and made it more compact to accommodate for different keyboards

    Before screen shot 2018-10-21 at 11 53 41 screen shot 2018-10-21 at 11 54 12 screen shot 2018-10-21 at 11 54 40

    After screen shot 2018-10-21 at 11 50 43 screen shot 2018-10-21 at 11 50 36 screen shot 2018-10-21 at 11 50 29

    Reviewed by Botary at 2018-10-21 03:15
  • 12. Tracker block count problem

    After update to the version below the tracker block count is 0. Client version:Firefox Focus 99.0(11983) System:iPadOS 15.4.1

    I tried to surf twitter/google …which contains a lot of trackers on their website ,but the count is still 0. I have tried to reinstall but it still happen. I have turned All opinion in Tracking Protection ON.And block web front as well.

    I don’t know the problem is on counter OR Tracking Protection is not work.

    Reviewed by HahiHahiK at 2022-05-03 16:11
  • 13. Face ID animation after start

    Steps to reproduce

    1. Enable Face ID protection
    2. Close the app completely
    3. Open the app

    Expected behavior

    No Face ID, because no URL was opened before

    Actual behavior

    Face ID Animation

    Device & build information

    • Device: iPhone 12 mini
    • Build version: 99.0 (11983) / iOS 15.4.1

    Notes

    This has been the case for me since the update to 99.0. Before, there was no Face ID animation when the app was reopened, but now there is. This makes it seem slower and choppier than before. Is this an intentional behavior?

    Reviewed by no-one at 2022-04-23 13:07
  • 14. Swiftlint: Add the l10n-screenshots-dd path to the excluded ones

    The L10nBuild is failing due to that. And since we can not apply the swiftlint changes to the files that are failing, we need to exclude the affected testing paths. ❌ /Users/vagrant/git/l10n-screenshots-dd/SourcePackages/checkouts/telemetry-ios/Sources/Telemetry/TelemetryScheduler.swift:40:22: Comma Spacing Violation: There should be no space before and one after any comma. (comma) https://app.bitrise.io/build/c4e6bfc3-d317-4216-a79b-39b961a1b8f4

    Reviewed by isabelrios at 2022-04-22 14:30
  • 15. [XCUITest] SearchSuggestion.EnableThenDisable is failing

    This test was passing before but it fails on latest main.

    https://app.bitrise.io/build/4038472a-de23-4931-b42d-bb686c0be1dc

    The failure is in last line, when going to type in the url bar, before we could just see the text typed, but now, the url contains previous text and so the new text is added at the end. Due to that the seach suggestion expected is not the correct one.

    @abodea not sure if this could be bug or a new behaviour we need to adjust the test for so it passes again

    Reviewed by isabelrios at 2022-04-22 14:28
  • 16. Bumps rust components to 93.2.0 and uses focus specific components

    Bumps application services to 93.0.1 from 93.2.0. This also uses a Focus specific binary for the rust components.

    This means that the binary linked to focus should be noticeably smaller, the actual impact on the application size I'm not exactly sure it depends how Xcode optimizes dead code and how it's linked, but we can verify it by archiving and checking the size (I don't have the right certificate permission to do that)

    In terms of actual changes, the changelog is in: https://github.com/mozilla/application-services/blob/main/CHANGELOG.md, focus only uses Nimbus (and not the Nimbus FML yet) so I would look at those for changelogs!

    Reviewed by tarikeshaq at 2022-04-21 20:05
Brave iOS Browser

Brave for iOS ?? Download on the App Store. This branch (development) This branch is for mainline development that will ship in the next release. This

May 16, 2022
An unofficial E-Hentai App for iOS built with SwiftUI.
An unofficial E-Hentai App for iOS built with SwiftUI.

EhPanda An unofficial E-Hentai App for iOS. English・ Deutsch・ 한국어・ 日本語・ 繁體中文・ 简体中文 ?? Translations Wanted ?? Please submit a pull request if you want

May 21, 2022
Legacy Ghostery Browser for iOS

DEPRECATED - Ghostery for iOS version 2.x This project is no longer active. Please see our current iOS browser project for Ghostery iOS v3+. Ghostery

May 1, 2022
An open-source, privacy-enhancing web browser for iOS, utilizing the Tor anonymity network

Onion Browser Official Site | Support | Release History | Donate © 2012-2020, Tigas Ventures, LLC (Mike Tigas) This is the Onion Browser 2.X branch, b

May 19, 2022
Overamped - an iOS app that disables AMP and Yandex Turbo in Safari via a Web Extension⚡️

Overamped Overamped is an iOS app that disables AMP and Yandex Turbo in Safari via a Web Extension. More information is available at overamped.app. Th

Apr 19, 2022
Firefox for iOS, branch works with Xcode 12.5.1, Swift 5.4.2 and supports iOS 11.4 and above.

Firefox for iOS Download on the App Store. This branch (main) This branch works with Xcode 12.5.1, Swift 5.4.2 and supports iOS 11.4 and above. Please

May 19, 2022
Firefox for iOS

Firefox for iOS Download on the App Store. This branch (main) This branch works with Xcode 13.0, Swift 5.5 and supports iOS 13 and above. Please note:

May 22, 2022
Focus text field in SwiftUI dynamically and progress through form using iOS keyboard.
Focus text field in SwiftUI dynamically and progress through form using iOS keyboard.

Focuser Focuser allows to focus SwiftUI text fields dynamically and implements ability move go through the form using Keyboard for iOS 13 and iOS 14.

May 22, 2022
SwiftUI - iOS 15 App with UX and UI on focus
SwiftUI - iOS 15 App with UX and UI on focus

Restart App This app is a SwiftUI up to date example of design. Great features from iOS 15 Haptic Touch Sound FX Parallax effect Swift5 and SwiftUI go

Nov 6, 2021
Sample project for testing out focus in SwiftUI and iOS 15

This project was to test out different ways of enabling focus in a SwiftUI app.

Dec 21, 2021
Add the 'Hide Notification Badges' Focus mode setting from iOS to macOS
Add the 'Hide Notification Badges' Focus mode setting from iOS to macOS

FocusPlsNoBadges Add the 'Hide Notification Badges' Focus mode setting from iOS to macOS, in a really gross and hacky way. Getting started Build the X

Apr 2, 2022
GRDB - A toolkit for SQLite databases, with a focus on application development
GRDB - A toolkit for SQLite databases, with a focus on application development

A toolkit for SQLite databases, with a focus on application development Latest release: May 16, 2021 • version 5.8.0 • CHANGELOG • Migrating From GRDB

May 16, 2022
Promises simplify asynchronous programming, freeing you up to focus on the more important things
Promises simplify asynchronous programming, freeing you up to focus on the more important things

Promises simplify asynchronous programming, freeing you up to focus on the more important things. They are easy to learn, easy to master and result in

May 14, 2022
Swift/Obj-C HTTP framework with a focus on REST and JSON

Now Archived and Forked PMHTTP will not be maintained in this repository going forward. Please use, create issues on, and make PRs to the fork of PHMT

Mar 16, 2022
Focus is an Optics library for Swift (where Optics includes Lens, Prisms, and Isos)

Focus Focus is an Optics library for Swift (where Optics includes Lens, Prisms, and Isos) that is inspired by Haskell's Lens library. Introduction Foc

May 9, 2022
🌊 - Jelly is a library for animated, non-interactive & interactive viewcontroller transitions and presentations with the focus on a simple and yet flexible API.
🌊 - Jelly is a library for animated, non-interactive & interactive viewcontroller  transitions and presentations with the focus on a simple and yet flexible API.

Jelly is a library for animated, non-interactive & interactive viewcontroller transitions and presentations with the focus on a simple and yet flexibl

May 19, 2022
A toolkit for SQLite databases, with a focus on application development
A toolkit for SQLite databases, with a focus on application development

A toolkit for SQLite databases, with a focus on application development

May 15, 2022
🌊 - Jelly is a library for animated, non-interactive & interactive viewcontroller transitions and presentations with the focus on a simple and yet flexible API.
🌊 - Jelly is a library for animated, non-interactive & interactive viewcontroller  transitions and presentations with the focus on a simple and yet flexible API.

Jelly is a library for animated, non-interactive & interactive viewcontroller transitions and presentations with the focus on a simple and yet flexibl

May 9, 2022
⚡️ Fast async task based Swift framework with focus on type safety, concurrency and multi threading
⚡️ Fast async task based Swift framework with focus on type safety, concurrency and multi threading

Our apps constantly do work. The faster you react to user input and produce an output, the more likely is that the user will continue to use your appl

Feb 18, 2022
Tutanota is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
Tutanota is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.

Tutanota makes encryption easy Tutanota is the secure email service with built-in end-to-end encryption that enables you to communicate securely with

May 22, 2022