CLAUDE LABJP
FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as OctoberFORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Articles/Claude Code
Claude Code/2026-05-24Advanced

Retiring Dormant SDKs with Claude Code — A 12-Year Indie Developer's Pipeline for Safely Auditing Inactive Dependencies

Twelve years of indie iOS/Android development leaves a quiet sediment of SDKs that nobody calls anymore — but the dependencies remain. Here is the Claude Code pipeline I built to audit and safely retire them across four wallpaper apps, with the actual code and four weeks of operational metrics.

Claude Code196SDK cleanupTechnical debtCocoaPods2SPMGradleIndie developmentiOS24Android7

Premium Article

"This app still has that A/B testing SDK from 2018 in its Podfile" — when Claude Code surfaced that in a session, my hands stopped. The app has been running since 2014. The version of me from back then evaluated and adopted that SDK on purpose. But somewhere along the way I stopped opening its dashboard, and the only thing left was the small, recurring cost of keeping up with its major version bumps on every release.

When you stay with indie development for twelve years, this kind of "dormant SDK" sediment is unavoidable. Ad networks, analytics, push notifications, A/B testing frameworks, crash reporters, remote config — each one had a reason at the time of adoption. The reason is gone now, but the SDK lives on inside Podfile, Package.swift, and build.gradle.

I run four wallpaper apps, and their cumulative downloads have passed 50 million. Each app carries a few dozen SDKs, which makes more than a hundred dependencies in total to maintain. Auditing that by hand is no longer realistic. So I asked Claude Code to run a decommissioning pipeline against all four apps for about four weeks, and the result was a 18.3% binary size reduction overall. Cold builds also got 31 seconds faster on average, and I no longer had to refresh the Privacy Manifest for any of the four apps.

This article documents the "dormant audit → safe removal → regression detection" workflow I converged on during those four weeks, with the actual code and the operational numbers. If you are also fighting a twelve-year sediment of dependencies as an indie developer, I hope it is useful.

Why "unused" SDKs keep costing you every month

The cost of dormant SDKs sits in places that are easy to miss. Across four weeks of observation, I categorized it into four buckets.

  1. Binary size: 200KB–2.5MB per SDK. Four apps × five dormant SDKs on average added up to 12–60MB of wasted bytes
  2. Cold build time: Each SDK adds 3–8s to a clean Xcode build through dependency resolution and initialization. Every wait pulls me out of the flow Claude Code is keeping me in
  3. Privacy Manifest / Data Safety: Since May 2024, Apple recursively aggregates the Privacy Manifests of your dependencies. Data collection declarations from SDKs you do not even call anymore stay in your manifest and drag your review through them
  4. Security alerts: GitHub Dependabot and Snyk keep firing CVE alerts for SDKs you never call. The signal-to-noise ratio of "which PR actually matters" gets quietly destroyed

The third one is especially uncomfortable for me. Since 2019, when I watched a ring of light over Kichijoji station and started making visual work, I have been treating the privacy hygiene of my wallpaper apps as part of the integrity I expect from my own art. Carrying data-collection declarations from SDKs I no longer use feels like a small lie against that integrity.

A three-axis score for "removable" vs "not removable" SDKs

The difficulty of removal does not show up in the manifest. pod 'XyzSDK' in Podfile could mean the SDK is never called at all, or that one file initializes it and never touches the API. Conversely, a single file may import an SDK through a Bridging Header in a way that no naive grep will catch.

Before letting Claude judge anything, I defined three axes that can be scored mechanically.

  • Reach Score: how reachable the module is from the current entrypoints, traced through the AST. 0–100
  • Symbol Density: density of the SDK's public symbols in the source tree. A rough grep gets you most of the way
  • Bridge Risk: presence of paths that static analysis cannot see — Objective-C Bridging Header, Kotlin/Java interop, method swizzling, KVC/KVO, reflection, JNI

With these three axes, an SDK with Reach=0, Density=0.0001, Bridge=Low is almost certainly removable, while Reach=0, Density=0, Bridge=High is dangerous and needs dynamic verification before removal. Without this pre-bucketing, asking Claude to "evaluate every SDK" leads to Claude flagging everything as risky, and you end up removing nothing.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
A complete, copy-and-run set of scripts for scanning dependencies across iOS (CocoaPods/SPM) and Android (Gradle), scoring removal risk, and auto-generating decommissioning PRs
A hybrid AST + grep + symbol-resolution design for letting Claude judge what can and cannot be removed, with a measured 80% reduction in false positives compared to naive grep
Four weeks of operational results across four wallpaper apps: 18.3% binary size reduction, 31s faster cold builds on average, and complete removal of three discontinued ad SDKs
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Claude Code2026-05-23
Three Months of Letting Claude Code Handle the Monthly Content Refresh for My Four Wallpaper Apps
Starting in February 2026 I began handing off the monthly content refresh of my wallpaper apps — Beautiful HD Wallpapers and three sibling titles — to Claude Code. After three months I want to share what kinds of judgement I felt comfortable delegating, and where I deliberately kept my own hands on the work.
Claude Code2026-05-17
Six Months Until CocoaPods Shutdown — Migrating Beautiful HD Wallpapers to Firebase SPM with Claude Code
Firebase Apple SDK is dropping CocoaPods in October 2026. Here's how I migrated Beautiful HD Wallpapers — one of four iOS apps I run as an indie developer — to Swift Package Manager, and where Claude Code made the difference.
Claude Code2026-05-06
react-native-permissions vs Expo Permissions API — Claude Code
Should you use react-native-permissions or the Expo permissions API? This guide clarifies the decision criteria and shows practical iOS/Android implementation patterns using Claude Code, including common pitfalls and Privacy Manifest requirements.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →