Skip to content

iOS build fails on Expo SDK 56 / RN 0.85 with static useFrameworks: IMGLYEditorModule-Swift.h not found #1

Description

@bigfanplanoly

Summary

@imgly/editor-react-native@1.76.0 does not compile in an Expo SDK 56 / React Native 0.85 iOS project when CocoaPods is configured with useFrameworks: 'static'.

The immediate fatal error is in IMGLYEditorModule.mm: it imports the generated Swift compatibility header using a framework-style path, but CocoaPods exposes the header differently for this static-library/static-framework setup.

Environment

  • @imgly/editor-react-native: 1.76.0 (also reproduced on 1.73.1)
  • Expo SDK: 56
  • React Native: 0.85
  • React: 19.2
  • Build: Expo prebuild (CNG) + CocoaPods, npx expo run:ios
  • Xcode: 26.4
  • iOS deployment target: 16.4
  • expo-build-properties ios.useFrameworks: static

Expo SDK 55+ / React Native 0.82+ always runs on the New Architecture, so this configuration is not opt-out-able on SDK 56.

What Happens

With useFrameworks: 'static', pod install succeeds, but the Xcode build fails while compiling IMGLYEditorModule:

IMGLYEditorModule.mm:2:9: 'IMGLYEditorModule/IMGLYEditorModule-Swift.h' file not found
  #import "IMGLYEditorModule/IMGLYEditorModule-Swift.h"

The generated Swift compatibility header appears to be available as:

#import "IMGLYEditorModule-Swift.h"

but the package source imports:

#import "IMGLYEditorModule/IMGLYEditorModule-Swift.h"

The build log also includes this warning from IMGLYUI, though it does not appear to be the primary fatal error:

no rule to process file '.../ios/Pods/IMGLYUI/LICENSE.md' of type 'net.daringfireball.markdown' for architecture 'arm64' (in target 'IMGLYUI' from project 'Pods')

What We Tried

  • useFrameworks: 'dynamic': pod install fails earlier with a static binary conflict:

    The 'Pods-...' target has transitive dependencies that include statically linked binaries: (IMGLYEngine)
    
  • useFrameworks: 'static': pod install succeeds, but the Xcode build fails with the missing Swift header error above.

  • Upgrading @imgly/editor-react-native from 1.73.1 to 1.76.0: same result.

  • Clean regeneration each time with expo prebuild --clean.

Local Workaround That Fixes The Header Error

Patching ios/IMGLYEditorModule.mm to support both CocoaPods header layouts resolves the missing-header import:

#import "IMGLYEditorModule.h"
#if __has_include("IMGLYEditorModule/IMGLYEditorModule-Swift.h")
#import "IMGLYEditorModule/IMGLYEditorModule-Swift.h"
#else
#import "IMGLYEditorModule-Swift.h"
#endif
#import "IMGLYConstants.h"

Questions

  1. Is @imgly/editor-react-native@1.76.0 expected to support Expo SDK 56 / React Native 0.85 on iOS?
  2. For Expo SDK 56 / RN 0.85, what is the intended useFrameworks configuration: dynamic, static, or something else?
  3. Is the IMGLYEditorModule-Swift.h import path a bug in the library when consumed under static linkage?
  4. Is there a recommended workaround for the IMGLYEngine static-binary conflict when using useFrameworks: 'dynamic'?

We can provide a minimal reproduction repo if helpful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions