Skip to content

fix(ios): force fmt 12.1.0 in the example so it compiles on Xcode 26.4+ - #349

Merged
mfazekas merged 1 commit into
feat/rive-ios-experimentalfrom
fix/example-force-fmt-1210
Jul 17, 2026
Merged

fix(ios): force fmt 12.1.0 in the example so it compiles on Xcode 26.4+#349
mfazekas merged 1 commit into
feat/rive-ios-experimentalfrom
fix/example-force-fmt-1210

Conversation

@mfazekas

Copy link
Copy Markdown
Collaborator

RN 0.80's bundled fmt 11.0.2 fails to compile on Xcode 26.4+ (Apple clang 21 rejects fmt's consteval FMT_STRING path, expo/expo#44229). The FMT_USE_CONSTEVAL=0 build setting the Podfile used never took effect: fmt 11.0.2 predates the #ifdef escape hatch (added in fmt 11.1) and unconditionally re-defines the macro.

Instead of patching fmt sources, force fmt 12.1.0 — the version RN 0.86 ships, where the consteval code is fixed upstream — by rewriting the vendored fmt.podspec and RCT-Folly.podspec (which exact-pins fmt) before dependency resolution, and dropping stale Pods/Local Podspecs JSONs that CocoaPods would otherwise reuse. First install after this change needs pod update fmt or rm Podfile.lock (CI already deletes the lock). Drop the whole block once the example is on RN >= 0.83.

Verified on Xcode 26.5: full example build succeeds and the iOS harness suite passes (26 suites / 204 tests).

RN 0.80's bundled fmt 11.0.2 fails to build on Xcode 26.4+ (Apple clang 21
rejects fmt's consteval FMT_STRING path, expo/expo#44229). The previous
FMT_USE_CONSTEVAL=0 build setting never took effect: fmt 11.0.2 predates the
escape hatch (fmt 11.1) and unconditionally re-defines the macro. Instead of
patching fmt sources, force fmt 12.1.0 — the version RN 0.86 ships, where the
consteval code is actually fixed — by rewriting the vendored fmt/RCT-Folly
podspecs before dependency resolution (RCT-Folly exact-pins fmt). Verified on
Xcode 26.5: full example build succeeds and the iOS harness suite passes
(26 suites / 204 tests). Drop once the example is on RN >= 0.83.
@mfazekas
mfazekas merged commit 869570a into feat/rive-ios-experimental Jul 17, 2026
15 checks passed
@mfazekas
mfazekas deleted the fix/example-force-fmt-1210 branch July 17, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant