Installation
generate, open, sign, run.
Nescroll uses XcodeGen: the project is described in one text file, app/project.yml, and the Xcode project is generated from it. This keeps rebranding to a few lines and avoids merge conflicts in .xcodeproj files.
01Generate the Xcode project
- Install XcodeGen if you have not yet:
brew install xcodegen - Go to the app folder of the unpacked ZIP:
cd path/to/nescroll/app - Generate
The output ends withxcodegen generateCreated project at …/NoReels.xcodeproj. - Open
open NoReels.xcodeproj
Every time you run xcodegen generate, the .xcodeproj is rebuilt from project.yml, and the .entitlements and extension Info.plist files are rewritten from the entitlements and info blocks in it. Changes you make only in Xcode's target settings are lost. Put bundle IDs, the team, names and capabilities in project.yml, then generate again.
02The four targets
| Target | Type | Bundle ID in the package | Signed for devices |
|---|---|---|---|
NoReels | The app | sk.mikodes.nescroll | Yes |
NescrollMonitor | DeviceActivity monitor extension | sk.mikodes.nescroll.monitor | Yes |
NescrollShield | Shield configuration extension | sk.mikodes.nescroll.shield | Yes |
NoReelsTests | Unit tests | sk.mikodes.nescroll.tests | Only when you run tests on a device |
The two extensions are embedded in the app (dependencies of the NoReels target). You change all bundle IDs to your own before you sign: Rebrand.
03Run in the Simulator
Choose the NoReels scheme and any iPhone simulator, then press Run. No team is needed for the Simulator: the package ships with DEVELOPMENT_TEAM: "" and a Simulator build succeeds as it is (verified with Xcode 27.1).
The site tabs, onboarding and Settings work in the Simulator. The Lock tab only shows the "Allow Screen Time" card there; Screen Time itself needs a real device.
04Run on your iPhone
- Change the bundle IDs and App Group to your own first (Rebrand). The
sk.mikodes.*IDs belong to the author's account and cannot be registered by you. - Set your team In
project.yml, undersettings → base, setDEVELOPMENT_TEAMto your 10-character Team ID (Apple Developer website → Membership details). Runxcodegen generateagain. - Check signing for the three targets In Xcode, select the project, then each of NoReels, NescrollMonitor and NescrollShield → Signing & Capabilities. "Automatically manage signing" is on (
CODE_SIGN_STYLE: Automatic), your team is selected, and the capabilities Family Controls and App Groups are listed with your group checked. - Connect the iPhone, trust the Mac, and turn on Developer Mode on the phone (Settings → Privacy & Security → Developer Mode) if iOS asks.
- Run Select the phone in the toolbar and press Run.
For builds you run from Xcode, the Family Controls capability works with development signing. For TestFlight and the App Store you need Apple's distribution approval first: Screen Time, distribution.
05Run the tests
Press Cmd-U in Xcode, or from the terminal:
xcodebuild test -project NoReels.xcodeproj -scheme NoReels \
-destination 'platform=iOS Simulator,name=iPhone 17' \
-testLanguage en -testRegion US
Use a simulator name you have installed (xcrun simctl list devices available). The tests cover redirects, host rules, label length, Slovak strings, lock time windows, the 7-day statistics and remote-rules sanitizing (NoReelsTests/NoReelsTests.swift).
On 2026-11-10 all 15 tests passed on the iPhone 18 Pro simulator (Xcode 27.1). Run them with -testLanguage en: the suite checks English as the base language.