# Foqos: an iPhone app blocker you start with an NFC tag or a QR code

> Foqos is an open source iOS app blocker built on Apple's Screen Time API, where a blocking session can start and stop from a physical NFC tag, a printed QR code, a timer or a Siri request, with everything stored locally. It suits iPhone users who want the friction of a dedicated blocker without buying one.

**awaseem/foqos** — Foqos allows you to lock apps behind the tap of a NFC tag or scan of a QR code. Free and open source alternative to Brick, Opal, ScreenZen, Unpluq, Scrolly, Blok and more!

- Repository: https://github.com/awaseem/foqos
- Website: https://www.foqos.app
- Stars: 888 · Forks: 165
- Language: Swift
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/awaseem-foqos

## Friction as the mechanism, not the app list

The framing is unusual for an app blocker, and it explains the design. Foqos helps you put friction between yourself and the apps or websites you want to avoid, and the workflow is that you create blocking profiles for work, study, bedtime or any other routine, choose the apps and domains to block, and then decide how that profile starts and stops. The mechanism underneath is Apple's Screen Time API, and the implementation is a SwiftUI application. What makes it different from a Screen Time schedule is the last step, the physical interaction, and the positioning is explicit that it works with cheap NFC tags, printable QR codes, barcodes, iOS Shortcuts and in-app controls, unlike hardware-first blockers that need a dedicated device. The privacy position is stated plainly too, with the data staying on the device and no account requirement, no tracking, no ads and no subscription.

## Twelve strategies, and the choice is the product

The strategy table is the most useful part of the documentation, because the eleven strategies are what a user actually chooses between. They are implemented in a models directory for strategies and registered in a strategy manager utility, so the set is a list rather than a set of modes buried in settings. A manual strategy starts and stops directly in the app. The NFC and QR strategies scan to start and scan the same tag or code again to stop, unless strict stop rules are configured. Then there are the hybrids, where an NFC manual strategy starts in the app and stops by scanning a tag, and a QR manual one does the same with a code. The timer strategies choose a duration and end when the timer expires, or earlier when an allowed tag or code is scanned. The pause timer strategies choose a pause duration, where a tag scanned once pauses and scanned again during the pause stops the session completely. And the soft unblock strategies keep the block active while allowing a configured number of short opens, with the session ended by a tag. The distinction between the last two families is the one worth sitting with, because a hard stop and a limited break are very different intentions.

## Profiles, groups, domains and the strict stop rules

A profile is the unit of configuration, and the feature list describes what one holds. There are custom profiles for different routines, for schedules, for app groups and for domains, and the app and website blocking itself goes through the Screen Time APIs. The strict stop rules are the feature that stops someone cheating with a different tag. When a profile has an approved NFC tag, QR code or barcode configured, other tags and codes cannot stop that profile, which means the physical item is tied to the specific session rather than to the app. The rest of the session mechanics are built on the same idea, with a reusable break allowance that can be split across multiple breaks in one session, a temporary access strategy for limited short opens without ending the full session, and a pause timer for a short pause before blocking resumes. The reporting side has smart breaks, session history, focus streaks and profile insights, and the Live Activities support puts the status on the Lock Screen and in the Dynamic Island, which matters because a blocker whose status you cannot see is a blocker you will disable.

## The deep link that makes a QR code a switch

The QR code path is implemented as a deep link, and the format is documented exactly:

```text
https://foqos.app/profile/<PROFILE_UUID>
```

Each profile can expose a link in that form, and scanning it toggles the profile. If the profile is inactive, Foqos starts it, and if it is active, Foqos stops it when the profile's strategy and stop rules allow that stop. That conditional matters more than it looks, because the same QR code behaves differently depending on which strategy the profile uses, and a code that starts a session cannot always stop it. The NFC side works the same way with physical tags, and the app can write a profile link onto a tag from inside the app, which removes the usual problem of having to find a tag writer. The tags are cheap and common, with NTAG213 named as the type that works, and the suggested placements are the places where a routine actually happens, a desk, a bedside table, a gym bag or an office door. QR codes are free to print or to display on another device, which is the cheapest possible version of the same idea.

## What it needs from iOS and from you

The requirements are short and the third one is the part that trips up anyone building the app themselves. The system needs iOS 17.6 or later, an iPhone with NFC capability for the NFC strategies, and Screen Time permissions for the app and website blocking. On top of that, local development requires an Apple Developer account with the required Screen Time and NFC entitlements, which is a real barrier for contributors and a non-issue for users installing from the App Store. The set-up flow for a user is the five steps in the how it works section. You download the app, grant Screen Time access so it can block the selected apps and websites, create a profile for the apps, categories and domains you want blocked, pick a blocking strategy, and then start the session and let the app enforce the block until your stop condition is met. The app also handles the platform integration, with widgets and App Intents for faster profile control, and Siri support, where you open the app once after installing or updating it and then ask Siri to start a profile, stop your session, pause it, start a break, end a break, ask whether your session is active or ask which profile is active.

## The repository holds more than the phone app

The top level of the repository is wider than a single SwiftUI app, and the directory names describe a system rather than a screen. There is the main Foqos directory, and then a set of sibling projects that explain how the blocking actually works. FoqosDeviceMonitor is the piece that watches for the physical interactions, FoqosFilter is the extension that does the filtering, FoqosShieldAction and FoqosShieldConfig are the parts that decide what the user sees when a blocked app is opened, and FoqosShared holds code used across the targets. There is also a macOS variant, with a Foqos Mac directory and its own FoqosMacTests, a widget extension in FoqosWidget, and a separate FoqosShieldConfig directory. The build is driven by a Makefile with a large set of targets for the app, the Mac app, linting, testing and release, with the app-release target taking a version argument and triggering Xcode Cloud, and a Mac release path that builds a signed app and system extension, with a bundle identifier, a notarisation profile, a Sparkle key account and an appcast file for updates. The tests run on an iPhone 17 simulator target and there is a separate target for the Mac test scheme.

## Conclusion

Foqos is a good fit for an iPhone user who wants to make starting a focus session take a deliberate physical action, because a cheap NFC tag on the desk or a printed QR code is a much stronger cue than a button, and the app is free with no account and no subscription. It is the wrong tool if you want a managed family or school deployment, since the data stays on the device by design, and it is the wrong tool if you need to block on Android, since this is an iPhone application. It is also the wrong tool if you want the Screen Time permissions or the NFC entitlements to be handled for you, because both require granting access and, for local development, an Apple Developer account with the relevant entitlements. Before adopting it, read the strategies table, because there are eleven of them and the difference between a timed session with an escape hatch and a hard stop is exactly the behaviour you are trying to create. The project is MIT licensed, the last push was on 2026-10-20, and the current release is v2.3.4 from 2026-10-14.

## FAQ

### What is Foqos and how does it block apps?

It is a privacy-first iOS app blocker that uses Apple's Screen Time API to block distracting apps and websites. You create blocking profiles for a routine, choose the apps, categories and domains to block, and then decide how the profile starts and stops, with sessions also startable by a timer, by a Shortcut or by a Siri request.

### What blocking strategies does Foqos support?

Eleven, covering manual control, NFC and QR code start and stop, the hybrid variants that start in the app and stop by scanning, timer sessions with an NFC or QR escape hatch, pause timers that pause once and stop on a second scan, and soft unblock strategies that keep the block active while allowing a set number of short opens.

### How does the NFC tag and QR code control work in Foqos?

Each profile can expose a deep link in the form https://foqos.app/profile/<PROFILE_UUID>, and scanning a QR code with that link toggles the profile, starting it when inactive and stopping it when active and the strategy and stop rules allow. NFC tags work the same way, with the app able to write the profile link onto a tag such as an NTAG213 from inside the app.

### What does Foqos need to run on an iPhone?

iOS 17.6 or later, an iPhone with NFC capability for the NFC strategies, and Screen Time permissions for the app and website blocking. Building it locally additionally needs an Apple Developer account with the Screen Time and NFC entitlements.

### Does Foqos send data anywhere?

The design is local-first, with data staying on the device and no account requirement, no tracking, no ads and no subscription, and the feature list describes local-first privacy with no cloud sync or analytics. The project is MIT licensed, the current release is v2.3.4 from 2026-10-14, and the last push was on 2026-10-20.

## Sources

- [awaseem/foqos on GitHub](https://github.com/awaseem/foqos)
- [License: MIT](https://github.com/awaseem/foqos/blob/main/LICENSE)
- [Project website](https://www.foqos.app)
- [README](https://github.com/awaseem/foqos/blob/main/README.md)
- [Releases](https://github.com/awaseem/foqos/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/awaseem-foqos
