Maintained in public

Changelog

Every change we ship to Unfollio, with the date and a short note about what it does. We publish this because in our category most apps quietly break when Instagram updates the data export format — and visible maintenance is one of the few ways to tell a real product apart from an abandoned one.

Want to verify what we send your way? See the privacy proof page.

Brand: Unfollio

  • Shipped

    Renamed the product from UnfollowMap to Unfollio across the site

  • Shipped

    Public `/privacy-proof` page — shows the literal HTTP request the upload sends, plus 60-second DevTools verification steps

  • Shipped

    Public `/changelog` page — what you're reading

  • Shipped

    "Last shipped working" badge on the homepage, switchable to a "degraded" or "broken" state without redeploying when Instagram changes the export

  • Shipped

    In-context disclosure on the upload page: "ZIP is parsed in your browser. Only follower/following usernames are sent to our server — never the file itself."

Production-readiness pass

  • Security

    Enabled Postgres row-level security policies on every user-data table — defense against direct-from-browser Supabase queries leaking data across users

  • Security

    Atomic audit-commit RPC with per-user advisory lock — concurrent uploads from the same user now serialize instead of race-corrupting state

  • Security

    Zod validation + array-length caps on `/api/audits` payload (max 200k followers / 50k following)

  • Security

    Baseline security headers (HSTS, Referrer-Policy, X-Frame-Options, Permissions-Policy)

  • Shipped

    Account deletion: a `DELETE /api/account` route + a confirm-typed-"delete" button in Settings, cascading through every table

  • Shipped

    Dashboard, Timeline, and Watchlist rewritten to read from Supabase directly (previously called a defunct API server and silently returned empty)

  • Fix

    Marketing copy now matches what's actually built — removed "encrypted at rest" (false), "7-day free trial" (no payment system), "AI ghost scores" and "churn forecast" (not implemented)

  • Fix

    Sign-in flow handles OAuth errors, expired magic links, and missing codes with a friendly error page instead of silently redirecting

Extra insights from the export

  • Parser

    Extended the Instagram export parser to extract three more files: `pending_follow_requests.json`, `blocked_profiles.json`, and `recently_unfollowed_accounts.json`

  • Shipped

    Upload results now include collapsible sections for: your earliest followers (with the date they followed you), pending follow requests, blocked accounts, and recently unfollowed

  • Shipped

    Most competitor apps gate these features behind a paid plan — they're free in Unfollio

Viewed / Not-viewed triage

  • Shipped

    Mark accounts as "viewed" while going through your unfollower list — no more re-checking the same names every time

  • Shipped

    Tab filter between All / Not viewed / Viewed with live counts

  • Shipped

    "Mark all viewed" batch action

  • Shipped

    Backed by per-user database state, so viewed status persists across uploads

  • Fix

    Implementation uses functional state updaters with proper rollback on network errors — a similar feature in a competitor app is widely reviewed as buggy ("tabs reset, names keep coming back"); ours doesn't

Possibly-deleted detection

  • Shipped

    When someone disappears from both your followers and following lists at the same time, we flag them as "possibly deleted" rather than counting them as a real unfollow

  • Shipped

    21 unit tests covering the heuristic edge cases (empty lists, case sensitivity, multi-account scenarios)

Watchlist + auth hardening

  • Shipped

    Watchlist: monitor specific Instagram accounts and see their status across every audit

  • Security

    Google OAuth + magic-link sign-in flow, both routed through a hardened `/api/auth/callback` with open-redirect protection

  • Security

    Middleware refreshes Supabase sessions on every request and redirects unauthenticated users to `/signin?next=...`

Want to be notified about updates?

Email us — we'll add you to the changelog announcement list.

Subscribe to updates