Native Code and Javascript Code are out of Sync

I just detached from Expo and got everything setup. I run the app (without any changes to detached code), and it loads fine, except when I switch to my expo-powered camera tab in my app, it crashes the app and the following Red Screen error occurs:

Error: Camera has no propType for native prop ExponentCamera.pictureSize of native type NSString *
If you haven’t changed this prop yourself, this usually means that your versions of the native code and Javascript code are out of sync. Updating both should make this error go away.

  1. how/where do I provide a propType for ExponentCamera.pictureSize?
  2. how do I “update both”? Does this mean updating to both the latest Expo SDK and the latest Xcode?

I am running:
Xcode 9.2
Expo SDK 26
ExpoKit iOS Tag 2.6.5

1 Like

Help… anyone, pls…

I’m experiencing this too suddenly after weeks of development… what is causing this!?

Hi @quadsurf - I’m not sure how you ended up with an ExpoKit tag of 2.6.5 :thinking: If you’re on SDK 26, you should be using ExpoKit 2.4.4. Could you try changing that in your Podfile, re-run pod install and see if that fixes things?

@esamelson At the suggestion of github handle [@]terribleben (see link below), I changed the tag to 2.6.5 in order to get rid of the FBNativeAd Property Title bug
https://github.com/expo/expo/issues/1868#issuecomment-397008912

I have tried all sorts of combinations between SDK versions 25 & 26, tags 2.4.4 to 2.6.8, and CocoaPod versions 1.0 to @latest.

SDK 26 with ExpoKit tag 2.6.5 with CocoaPod 1.4 was the only combination that Xcode was able to run a build with… it was the only combination where I was at least able to open the app on my device. All other combinations failed to build. I would prefer starting at this starting point since it was furthest progress for me in my detachment efforts.

Furthermore, from the link below, I am unable to determine which ExpoKit tags go with which SDK releases (there is no mapping chart):
https://github.com/expo/expo/releases

@quadsurf if you want to use ExpoKit 2.6.5 you need to upgrade your JS code to SDK 28 and install expo@^28.0.0. (Full instructions for upgrading to SDK 28 are here: https://docs.expo.io/versions/v30.0.0/workflow/upgrading-expo-sdk-walkthrough#sdk-28 ) That will fix the mismatched prop type errors in your original post.

You can determine which ExpoKit version is for which SDK version from this endpoint: https://exp.host/--/api/v2/versions . (It may be easier to read if you copy+paste into a text editor that can auto format JSON.) Find the object corresponding to the SDK version you’re using, and then the value of "iosVersion" will give you the ExpoKit version. Apologies that this isn’t better documented, I’ve opened an internal ticket to add this to our docs.

Alternatively, if the original issue you were facing with ExpoKit version 2.4.4 was the FBAudienceNetwork, you can instead fix that by modifying your Podfile.lock to depend on FBAudienceNetwork 4.28.1 instead of 4.99.1.

thank you @esamelson … I went ahead and successfully upgraded to SDK 29 (from an undetached git branch on SDK 26)… the upgrade was seamless, and the app still works perfectly throughout, but only on the Expo Client though. When I try detaching from SDK 29, the following happens:

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.