feat(expo)!: drop logging endpoint (#18596)# Why - In the new versioned CLI we don't support the logging endpoint, instead favoring the logging WebSocket setup by `metro-runtime`. - Dropping s
feat(expo)!: drop logging endpoint (#18596)# Why - In the new versioned CLI we don't support the logging endpoint, instead favoring the logging WebSocket setup by `metro-runtime`. - Dropping support for `logUrl` will break logging in the legacy `expo-cli start` command, no logs will show up. - Drop `Logs` module: `import { Logs } from 'expo';`. - Drop stack trace filter that removes `react-native-logging.fx` since we no longer need it. - Also removes the "temporary workaround"s from 2018 that filter out warnings from the lottie package. - Drop direct dependency on `invariant`, `pretty-format`, `fbemitter` > This doesn't add breaking changes to the local Expo CLI, only the deprecated global CLI. # Test Plan - Copied the JS expo files into a new project and websockets continued to send logs. # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [ ] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [ ] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin). --------- Co-authored-by: Expo Bot <[email protected]>
show more ...
[expo-manifests] Fix error in handling nested array (#23562)# Why Fix crash on iOS if a plugin is passed in as an array, but with only the name element and not the props element. Also fix co
[expo-manifests] Fix error in handling nested array (#23562)# Why Fix crash on iOS if a plugin is passed in as an array, but with only the name element and not the props element. Also fix corresponding code on Android, where an exception is thrown. Fixes #23549. # How Modified `Manifest.swift` and `Manifest.kt` to handle the above case correctly. # Test Plan - Tested with Expo Go and the project provided in the above issue - New unit tests for both iOS and Android # Checklist - [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
[manifests] introduce getPluginProperties (#22701)# Why currently we enable the network inspector through `expo-build-properties`, e.g. in app.json ```json { "expo": { "plugins": [
[manifests] introduce getPluginProperties (#22701)# Why currently we enable the network inspector through `expo-build-properties`, e.g. in app.json ```json { "expo": { "plugins": [ [ "expo-build-properties", { "android": { "unstable_networkInspector": true }, "ios": { "unstable_networkInspector": true } } ] ] } } ``` to support this feature on expo go, i want to leverage the same configuration without introducing new properties to app.json schema. this pr adds `Manifests.getPluginProperties` to query properties from the `plugins` array. # How - introduce `Manifests.getPluginProperties(packageName: String): [String: Any]?` that will return the matched `packageName` inside the plugins. for package setting without extra properties, e.g. `plugins: ["expo-camera"]`, this function will also return nil. - also move the original android instrumentation tests as unit tests. that would be faster without android emulator. #### Usage example for instance, to get the `unstable_networkInspector`, we can call it like: ```objc NSDictionary<NSString *, id> *buildProps = [_appRecord.appLoader.manifest getPluginPropertiesWithPackageName:@"expo-build-properties"]; BOOL networkInspector = [[[buildProps objectForKey:@"ios"] objectForKey:@"unstable_networkInspector"] boolValue]; ``` ```kotlin val buildProps = (instanceManagerBuilderProperties.manifest.getPluginProperties("expo-build-properties")?.get("android") as? Map<*, *>) ?.mapKeys { it.key.toString() } val networkInspector = buildProps?.get("unstable_networkInspector") as? Boolean ?: false ``` # Test Plan - add unit tests both on android and ios --------- Co-authored-by: Will Schurman <[email protected]>
[expo-updates][expo-go] Support new SDK version field in new manifests (#22356)
[manifests] fix the default jsEngine for old sdks (#21266)# Why close ENG-7609 # How since the manifest is unversioned code, we should set the default jsEngine based on sdk version # T
[manifests] fix the default jsEngine for old sdks (#21266)# Why close ENG-7609 # How since the manifest is unversioned code, we should set the default jsEngine based on sdk version # Test Plan - ci passed - follow the steps at ENG-7609 to check the current jsEngine is jsc on a sdk 47 project
Switch default JS engine to Hermes (#21001)# Why Closes ENG-7163 # How Update `@expo/config-plugins`, `@expo/dev-server`, all templates and `packages/expo-manifest` to use Hermes as the d
Switch default JS engine to Hermes (#21001)# Why Closes ENG-7163 # How Update `@expo/config-plugins`, `@expo/dev-server`, all templates and `packages/expo-manifest` to use Hermes as the default JS engine Follow ups - [x] Update `Using Hermes Engine` guide (https://github.com/expo/expo/pull/21047) - [x] Update xdl schema (https://github.com/expo/universe/pull/11355) # Test Plan ```bash # create a new project npx create-expo-app hermes-app cd hermes-app # run local expo cli nexpo prebuild --no-install ``` # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [ ] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [x] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin). --------- Co-authored-by: Douglas Lowder <[email protected]>
[android] align hermes support integration as ios (#19116)# Why close ENG-6275 # How - instead of parsing bundle header and maintaining the `HERMES_BYTECODE_VERSION` from each react-native
[android] align hermes support integration as ios (#19116)# Why close ENG-6275 # How - instead of parsing bundle header and maintaining the `HERMES_BYTECODE_VERSION` from each react-native upgrade, we should use the `jsEngine` from manifest to determine the js runtime type. - for reanimated, always use hermes as the runtime for worklets. since we build the `:ReactAndroid:hermes-engine` from source with prefab support, we could just use the prefab integration. - update versioning script for versioned reanimated + versioned hermes integration. # Test Plan `et add-sdk -p android -s 47.0.0` + `./gradlew :app:assembleVersionedDebug` + NCL sdk 47 there were some versioning error from expo-modules-core. i would not include in this pr and will follow up later before versioning for release.
[expo-constants] Fix types for new manifest extra.expoClient field (#18186)
[expo-manifests][expo-dev-launcher] add logUrl getter to manifest classes (#16709)
[expo-updates][android] Add support for expo project information certificate extension (#16661)This reverts commit 796773e1e98a189dddbf4f575f48f7e6065c08df.
Revert "[expo-updates][android] Add support for expo project information certificate extension (#16607)" (#16643)This reverts commit c88c87d472911b1697b374c2e44a18b4a022bce1.
[expo-updates][android] Add support for expo project information certificate extension (#16607)
[expo-updates][android] Remove unused code and clean up some manifest accesses (#15861)
[android][manifests] support platform shared jsEngine schema (#14654)# Why fix hermes loading for Expo Go - we introduced platform shared `jsEngine` in schema # How - [manifests] first tr
[android][manifests] support platform shared jsEngine schema (#14654)# Why fix hermes loading for Expo Go - we introduced platform shared `jsEngine` in schema # How - [manifests] first try android specific `jsEngine` and then shared `jsEngine` - backport #13376 to `android/versioned-abis/expoview-abi42_0_0/src/main/java/abi42_0_0/host/exp/exponent/VersionedUtils.java` # Test Plan load sdk43 shared jsEngine hermes app: `exp://exp.host/@kudochien/hermes` load sdk42 android specific jsEngine hermes app: `exp://exp.host/@kudochien/sdk42`
[expo-manifests] dev client compatibility (#14460)
[expo-manifests] Support exposdk:UNVERSIONED runtimeVersion (#14287)
[expo-manifests] Remove reliance upon stableLegacyId/originalFullName (#14265)
[expo-manifests][android] Move factory into package (#14273)
[android][expo-manifests] Audit usage of getSDKVersion to ensure lack of requirement (#14237)
[expo-json-utils] Introduce expo-json-utils for better json typesafety (#14229)
[expo-manifests] projectId -> easProjectId (#14225)
[expo-manifests] Rename RawManifest -> Manifest (#14194)
[expo-updates] Factor out raw manifests into their own package (#14183)