Hi Albert,
Thanks — I've added the details to the report, but I need to correct my previous message before the engineering team acts on it. My earlier comparison was incomplete, and the follow-up testing points somewhere narrower than "static linkage."
The issue: Lottie-Dynamic isn't offered by the package our report actually uses. Our setup depends on the Lottie product from lottie-spm, which doesn't build from source at all — it declares a binaryTarget pointing at a precompiled Lottie.xcframework.zip from a lottie-ios release (statically linked, as I confirmed locally). Lottie-Dynamic is declared in the separate source package, lottie-ios. So switching to it changed both the linkage and the distribution form.
I've since tested the plain Lottie product from lottie-ios as well — static, but built from source:
Package Product Form Result
lottie-spm Lottie prebuilt static XCFramework via binaryTarget fails
lottie-ios Lottie static, built from source succeeds
lottie-ios Lottie-Dynamic dynamic, built from source succeeds
Since the source-built static product builds fine, static linkage across multiple targets isn't sufficient to trigger this. What reproduces it is a prebuilt static XCFramework distributed via a binaryTarget and linked into more than one target — which also fits with the manual .xcframework route being the workaround you suggested.
Apologies for the detour with the earlier conclusion. Everything above is now in the report, and I'll keep re-testing with each beta.
Thanks again for your help.