Nescroll docs
v1.0.0
Get help
● Set up · White label

Rebrand in 10 minutes
your name, IDs, icon and links.

Three files hold everything that names the app: app/project.yml, app/NoReels/AppConfig.swift and app/Shared/LockShared.swift, plus the icon in the asset catalog. Change them in the order below, then run xcodegen generate.

project.ymlAppConfig.swiftLockShared.swiftAppIcon

01Decide your values first

Write these down before you edit anything. The examples use com.example.myapp; use your own reverse domain.

ValueExampleRule
App name (home screen)MyAppShort, your own. Do not use a site's trademark in it (App review).
App bundle IDcom.example.myappUnique in the App Store; registered under your team.
Monitor extension IDcom.example.myapp.monitorMust start with the app bundle ID plus a dot.
Shield extension IDcom.example.myapp.shieldMust start with the app bundle ID plus a dot.
App Groupgroup.com.example.myappStarts with group.; the same string in four places.
Team IDAB12CD34EFFrom your Apple Developer membership details.

021. project.yml

Open app/project.yml and change:

KeyWherePackage value
bundleIdPrefixoptionssk.mikodes
DEVELOPMENT_TEAMsettings → base"" (empty)
MARKETING_VERSION, CURRENT_PROJECT_VERSIONsettings → base1.0.0, 1
PRODUCT_BUNDLE_IDENTIFIEReach of the 4 targetssk.mikodes.nescroll, ….monitor, ….shield, ….tests
INFOPLIST_KEY_CFBundleDisplayNameNoReels targetNescroll (the name under the icon)
com.apple.security.application-groupsentitlements → properties of NoReels, NescrollMonitor and NescrollShield[group.sk.mikodes.nescroll]
CFBundleDisplayNameNescrollMonitor (in settings and in info → properties) and NescrollShield (info → properties)Nescroll Monitor, Nescroll Shield
NescrollAppNameNescrollShield → info → propertiesNescroll, the name the lock screen shows ("Open Nescroll to use…")
INFOPLIST_KEY_NSCameraUsageDescription, …NSMicrophoneUsageDescriptionNoReels targetTexts iOS shows when a site asks for the camera or microphone. Keep them accurate.

You do not need to rename the targets (NoReels, NescrollMonitor, NescrollShield): users never see target names. If you do rename them, also update TEST_HOST, the dependencies and the scheme in the same file.

032. LockShared.swift

In app/Shared/LockShared.swift, set appGroup to the same App Group string:

static let appGroup = "group.com.example.myapp"

The app and the two extensions run in separate processes. They share the lock state only through this App Group. If the string here differs from the entitlement in project.yml, the lock silently does not reach the extensions (Troubleshooting).

043. AppConfig.swift

Open app/NoReels/AppConfig.swift. Every value is explained on Configuration. At minimum, replace:

  • appName: your app name, used in texts such as the Lock tab.
  • privacyURL: your privacy policy. The package points to the author's own page; you must not ship that.
  • supportURL: your support page or a mailto: address.
  • creditsURL: a page with the third-party licences (it may stay the Asocial licence link).

054. Icon and colour

  • Icon: replace app/NoReels/Assets.xcassets/AppIcon.appiconset/AppIcon.png with your own 1024 × 1024 PNG without transparency, same file name. Xcode makes every smaller size from it (single-size icon).
  • Accent colour: Assets.xcassets/AccentColor.colorset (package value: coral, sRGB 1.000 / 0.376 / 0.302). Change it in Xcode's asset editor. It colours the selected tab, buttons and the loading bar.
  • Lock screen look: the screen iOS shows over a locked app is built in app/Shield/ShieldExtension.swift (white background, black title, SF Symbol hand.raised.fill). Change colours and the symbol there.
  • Onboarding texts: app/NoReels/OnboardingView.swift. If you change an English text, update its translation in the String Catalog too (Localization).
No third-party logos

The tabs use SF Symbols (camera, play.rectangle, person.2; Platform.symbol), not the sites' logos. Keep it that way in the app, the icon and your store screenshots.

065. Generate and check

cd app
xcodegen generate
grep -rn "mikodes\|nescroll" project.yml NoReels/AppConfig.swift Shared/LockShared.swift

The grep should print nothing about IDs or URLs you meant to change. Remaining internal names are fine: ManagedSettingsStore.Name("nescroll.lock") and the DeviceActivityName values in LockShared.swift are never shown to users.

Then run on a device and test the Lock tab end to end: pick an app, lock 15 minutes, open the locked app and check that your shield and name appear.