No built-in iPhone setting can limit Reels alone, because Instagram's daily limit and Screen Time's App Limits both count the whole app, DMs included. If you want Reels gone while your DMs keep working, the most direct option is minulo, an iPhone app that opens Instagram with Reels hidden (I'm its developer), and hiding is free. Locking the official app is free for up to 2 hours per block, and schedules come with minulo Pro.
People ask me this a lot: "Can I set a time limit on Instagram Reels only, and keep my DMs?" On iPhone the short answer is no, at least not with any built-in setting. I build an app in this space, so I spent a while reading what Apple's Screen Time frameworks actually allow. Here is why the limit people want doesn't exist, and what you can build instead.
What users have today
There are two built-in limits, and neither knows what a Reel is:
- Instagram's own daily limit counts all the time you spend in the app. Answering a group chat uses it up just like scrolling Reels does. When you reach it, you get a reminder you can dismiss.
- Screen Time's App Limits (Settings → Screen Time → App Limits) actually blocks the app, but it blocks all of Instagram. Your messages go with it.
So a student who needs Instagram for a class group chat has to choose between a reminder that doesn't stop anything and a block that also cuts off the chat.
What the Screen Time API works with
Third-party apps get access to Screen Time through three frameworks: FamilyControls, ManagedSettings and DeviceActivity. Everything in them is built around three kinds of things you can select:
-
ApplicationToken: a whole app -
ActivityCategoryToken: a whole category, like Social -
WebDomainToken: a whole website domain
The user picks these in FamilyActivityPicker. Your app never even sees which apps they picked; it only gets opaque tokens. With those tokens you can shield the apps (ManagedSettings), and you can schedule shields or react to usage thresholds (DeviceActivity).
Notice what's missing: there is no token for "the Reels tab inside Instagram". The unit is the app. There is no API to look inside another app, read what's on screen, or block one part of its interface. That's by design. It's the same sandbox that stops a random app from reading your messages.
The web side has the same limit. ManagedSettings can block websites, but at the level of a domain. You can block instagram.com, but not instagram.com/reels while keeping instagram.com/direct.
Why "Reels only" would be hard even for Instagram
Even Instagram would have a tricky time defining it. A Reel can show up in the Reels tab, in Explore, in the home feed between posts, and inside a DM when a friend sends one. A limit on "Reels" would need to decide which of those count. Instagram's own limit sidesteps the question by counting everything.
What you can build instead
Since you can't change the official app, the workable approach is to show the network somewhere you do control:
- Open the site in your own WKWebView and hide the parts you don't want (the Reels tab, Explore, suggested posts) with CSS and a bit of JavaScript. Messages keep working because they are part of the same website.
- Use Screen Time to shield the official app, so the habit of tapping the Instagram icon doesn't drop you back into the full app. A shield can show a button. In ShieldActionExtension you can't open another app directly, but you can send a notification that opens yours.
The trade-offs are real, and it's worth being upfront about them:
- You depend on the website. Features the website doesn't have (posting Stories, voice messages, calls) aren't available.
- While the official app is shielded, its push notifications don't arrive. Users read messages inside your app instead.
- Websites change their markup, so selectors break. Re-check them often. (I wrote about CSS in WKWebView failing silently before.)
A Safari content blocker or extension is the other option. It's simpler to build, but it only works while the user is in Safari, which most people aren't when they open Instagram.
Where this leaves users
If you're the person asking the original question, the realistic choices on iPhone are:
- Free, no extra app: switch the home feed to Following (tap the Instagram logo), turn off notifications that aren't from people, and move Instagram off the home screen.
- Hard limit, but all of Instagram: Screen Time App Limits.
- Reels gone, messages kept: an app that opens Instagram in its own view with Reels hidden. Mine is called minulo, and there are others like SocialLite and UNDOOMED. Hiding Reels in minulo is free.
I wrote a longer, non-technical guide for users here: How to limit only Instagram Reels on iPhone.
If you've found a cleaner way to do any of this with the Screen Time frameworks, I'd like to hear it in the comments.
Top comments (0)