Confusion regarding availability of manifest

Hey Expo team,

could you please clarify when Constants.manifest or Constants.manifest2 could be null?

Under the Constants.types.d.ts file, it is written that if manifest is non-null, then manifest2 is null and vice versa, but what causes either manifest to be non-null in the first place?

Additionally, there are some terms mentioned like classic updates and modern Expo Updates. Are these terms are referring to Expo Update and EAS Update accordingly?

Hi! You’ve caught the codebase in the middle of a transition and I’ll try to explain what’s going on.

Classic Updates refers to the update feature that developers typically use with expo publish. When an app uses Classic Updates, Constants.manifest will be defined (non-null) and Constants.manifest2 will be null.

[Modern] Expo Updates refers to a potential concept for a new version of the updates protocol. It uses a different manifest format and has different behavior. There is also a draft of the Expo Updates standard specification here: Expo Updates - Expo Documentation. An app that uses this modern format would have Constants.manifest2 defined instead of Constants.manifest.

For now you don’t need to use Constants.manifest2. We will probably need to provide a clear API in expo-updates as well. Over time, we’ve moved several of the fields in expo-constants into packages that are more related to those fields, like moving info about the current device into expo-device, and a natural future step would be to make Updates.{something?} be the API for accessing the modern manifest.

1 Like

Thank you, James, for taking the time and clarifying things up.

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