Skip to content
Dimitri Robiere PerrietD. R. PerrietCaen, FR — --:--:--EN · FR

Story Control, a browser extension for Instagram

● Live
Client
Projet personnel
Role
Developer
Duration
ongoing
Year
2026
Stack
JavaScript · WebExtensions · Safari Web Extension · Swift · Xcode · jsdom
Story Control, a browser extension for Instagram — illustration
Fig. 01 — Story Control, a browser extension for Instagram, illustration
(00) — In short

Story Control is a Safari, Chrome and Edge extension that hides Instagram stories in bulk, with an exception list, a local log, pause and resume, and no server.

(01)

Context

Instagram lets you hide your stories from specific accounts, but only one checkbox at a time on a dedicated page. With a long follower list, hiding from everyone except a few people quickly becomes tedious.

Story Control is a personal extension, released in September 2026 as version 1.1.5. It works on that page, prepares a plan of changes, shows it to the user, then applies it step by step.

(02)

Challenge

The extension works on a page it doesn't control, with no official API. The list is virtualised, every click waits for Instagram to confirm, and an error or a reload can interrupt the process at any moment.

An interruption could never leave things unclear: the extension had to know what was applied, what was left, and stop as soon as the page no longer looked as expected.

(03)

Approach

I wrote the extension in plain JavaScript around three modes: show to everyone, hide from everyone, or hide from everyone except a list of usernames. The plan and progress are logged locally before each click, and resuming compares that log with a fresh inventory of the page. A trial limited to three changes, a lock across tabs and a check after reload round it out.

Everything stays in the browser, with no server and no telemetry. The engine is covered by 32 automated tests that simulate the form with jsdom, and an Xcode project packages the extension for Safari on macOS.

(04) — Results

Key figures
32
automated tests
3
hiding modes
Safari · Chrome · Edge
target browsers
0
external servers
← Previous project29 · Custom WordPress themes and plugins for an agencyNext project31Customised qdPM in PHP for ticket tracking