Quick answer: Unity AssetBundle loading but its referenced shader is pink on iOS? Per-platform bundle dependency wasn't rebuilt - rebuild all bundles for the target platform, not just the changed one.

Built a single character bundle for iOS. Loaded in the player, everything is pink because the shader bundle wasn't included in the iOS variant.

Build all bundles per platform

BuildPipeline.BuildAssetBundles(
  outPath, BuildAssetBundleOptions.None, BuildTarget.iOS);

Per-platform bundles need a complete dependency tree on each platform. Incremental builds skip dependencies that look unchanged but reference different shader variants per platform.

Include the shader strip set

Shaders strip differently on mobile (no MSAA paths, no certain extensions). Ensure the Always Included Shaders list contains your fallbacks, or pack them in their own bundle.

Use the dependency report

Set BuildAssetBundleOptions.AppendHashToAssetBundleName and inspect the manifest - the dependency graph tells you which bundles each one needs.

“Asset bundles are per-platform. Half-built means broken on the platform you didn't build for.”

Migrate to Addressables when you can. Per-platform builds and dependency resolution are first-class instead of left to the build script.