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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions