History log of /expo/ios/Exponent/Kernel/Core/EXKernel.m (Results 1 – 25 of 72)
Revision Date Author Comments
# 489c2041 15-Sep-2023 Will Schurman <[email protected]>

[ios] Remove legacy notifications module code (#24325)


# 0502d1f9 18-May-2023 Tomasz Sapeta <[email protected]>

Remove Amplitude from Expo Go (#22523)


# 7c3ed0c0 14-Dec-2022 Douglas Lowder <[email protected]>

[Expo Go][iOS] No remote home app loads in release builds (#20416)

# Why

Per ENG-7047, we need to disable remote loading of home app, and
checking for home app updates, for release builds.
Upda

[Expo Go][iOS] No remote home app loads in release builds (#20416)

# Why

Per ENG-7047, we need to disable remote loading of home app, and
checking for home app updates, for release builds.
Updates and loading from the packager will still work in debug builds.

# How

Add `#ifdef DEBUG` in several places in
`Exponent/Kernel/AppLoader/EXAppLoader.m`

# Test Plan

- CI should pass
- Test Expo Go builds locally and verify that updates are not loaded,
and that nothing else is broken

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->

- [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 `expo prebuild` & EAS Build (eg:
updated a module plugin).

show more ...


# 2484a2dd 11-Oct-2021 Bartłomiej Bukowski <[email protected]>

[iOS][Expo Go] Remove pre SDK 11 code path (#14702)


# 167fd314 30-Jun-2021 Will Schurman <[email protected]>

[ios] Use stable manifest ID where applicable (#13280)


# dc898499 10-Dec-2020 James Ide <[email protected]>

[ios] Expo Client -> Expo Go (#10847)

The name "Expo Client" implies that it's the single way to develop Expo app. In the future, it will no longer be as ubiquitous nor the main way to develop. To h

[ios] Expo Client -> Expo Go (#10847)

The name "Expo Client" implies that it's the single way to develop Expo app. In the future, it will no longer be as ubiquitous nor the main way to develop. To head off confusion with default development clients, this commit renames the app store development client known as "Expo Client" to "Expo Go".

"Expo Go" is the name for the App Store and Play Store development clients that are published under the Expo team's accounts and currently have support for multiple SDK versions. Expo Go is the fastest way to get started. But we've seen billion-dollar companies use the managed workflow for production apps, so names like "Expo Lite" or "Expo Start" wrongly communicate that the app is just for demos or getting started. "Expo Go" implies it's a good way to get started and also not the entire workflow, but also a workflow that can hold its own.

In this commit I focused just on iOS (native). Android (native) and Home need to come later. I also changed "experience" to "project" in a few places to start cleaning up our terminology.

Tested by running the app and verifying it shows up as "Expo Go" on the home screen in a simulator.

show more ...


# 42300cfb 19-Nov-2020 Stanisław Chmiela <[email protected]>

[ios] Migrate installation identifier to non-backed-up storage (#11019)

# Why

- iOS companion for https://github.com/expo/expo/pull/11005.
- https://github.com/expo/expo/pull/11019/commits/1e22e

[ios] Migrate installation identifier to non-backed-up storage (#11019)

# Why

- iOS companion for https://github.com/expo/expo/pull/11005.
- https://github.com/expo/expo/pull/11019/commits/1e22e08195b1b4c49650f8243eeb89b5f938b9a5 fixes https://github.com/expo/expo/issues/11008#issuecomment-726370187 ensuring future versioned `EXInstallationIdProvider`s use the common installation ID

# How

Implemented https://github.com/expo/expo/pull/10261#issuecomment-725396140.

- As in https://github.com/expo/expo/pull/11005, the migration code is present in ~3~2 places:
- ~in `ExpoKit` for managed apps relying on legacy notifications~
- in `expo-constants` for bare workflow apps and for managed workflow apps (`EXKernel` now uses `expo-constants` directly to fetch installation ID)
- in `expo-notifications` for bare workflow apps that for some reason do not get UUID migrated by `expo-constants` (eg. because they do not have `expo-constants` installed or have installed in older version).
- To expose common, migrated `deviceInstallUUID` to versioned `expo-constants` code I've added a simple kernel service plugged into already versioned `EXConstantsBinding`s.

# Test Plan

I have verified (previously) that:
- `Constants.installationId` from running Expo client on `master` is the same as `.installationId` returned when running Expo client on this branch
- `expo-notifications`'s installation ID from running Expo client on `master` is the same as `installationId` returned when running Expo client on this branch
- removing and reinstalling Expo client **does not** generate a different installationId (as we know keychain isn't removed!)
- if we fetch an invalid UUID from the Keychain, new UUID is generated
- I experienced an app freeze once on `__ulock_wait`, when waiting for return from `SecItemCopyMatching` which isn't a common issue and were only a few reports online of

# Test approach #2

Test scenarios for installation identifiers:
- **on an experience running on SDK39 when Expo client upgrades**
- SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey` which is now cleared by migration. Patched `EXConstantsService` uses `EXDeviceInstallUUIDManager` kernel service which provides it with the "common" ID, migrated from the `NSUserDefaults.EXDeviceInstallUUIDKey`, so the value doesn't change. ✅
- SDK39 `EXInstallationIdProvider` used `NSUserDefaults.ABI39_0_0EXDeviceInstallUUIDKey` which is not cleared by any migration. **Identifier keeps being backed-up** but it doesn't change. ⚠️
- **when an experience using SDK39 upgrades to SDK40 in Expo client**
- SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey` which got migrated to keychain. SDK40 `EXConstantsService` uses the same keychain entry as the migrator, so they're using the same value. ✅
- SDK39 `EXInstallationIdProvider` used `NSUserDefaults.ABI39_0_0EXDeviceInstallUUIDKey` while SDK40 uses common device UUID the sources are obviously different. Token changes. ❌ This is a bug introduced with `expo-notifications` Expo client integration, we can't do anything about it apart from fixing it in SDK40, IDs for old SDKs are already created and will be used in corresponding SDKs and if we didn't do anything about it in SDK40, the ID per experience would change nonetheless, so let's change it this time for the last time.
- when standalone app using SDK39 upgrades to SDK40
- Unversioned SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey` which gets migrated to keychain, unversioned SDK40 `EXConstantsService` uses the same keychain entry as common UUID, no changes. ✅
- Unversioned SDK39 `EXInstallationIdProvider` used `NSUserDefaults.EXDeviceInstallUUIDKey` which gets migrated to keychain, unversioned SDK40 `EXInstallationIdProvider` uses the same keychain entry as common UUID, no changes. ✅
- when an SDK39 project ejects to bare
- SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey`, the same which is used in bare, ✅
- SDK39 `EXInstallationIdProvider` used `NSUserDefaults.EXDeviceInstallUUIDKey` in standalone apps, but `NSUserDefaults.ABI39_0_0EXDeviceInstallUUIDKey` in Expo client. Token changes on developers' devices. ⚠️
- when an SDK40 project ejects to bare
- SDK40 `EXConstantsService` used `EXDeviceInstallUUIDKey` keychain entry, the same which is used in bare, ✅
- SDK40 `EXInstallationIdProvider` used `EXDeviceInstallUUIDKey` keychain entry, the same which is used in bare (`EXDeviceInstallUUIDKey`), ✅
- when a bare project upgrades `expo-notifications` or `expo-constants`
- both projects have migrators that move `EXDeviceInstallUUIDKey` value from `NSUserDefaults` to keychain, token doesn't change. ✅

show more ...


# 05aa4e6c 04-May-2020 Tomasz Sapeta <[email protected]>

[ios] Fix dev menu classes being used in detached mode


# 386119d0 24-Apr-2020 Hein Rutjes <[email protected]>

[ios] Fix xcode build warnings (#7984)

* [application][ios] Fix warning: pointer is missing a nullability type specifier

* [constants][ios] Fix discards qualifiers warning

Fixes: `sending 'con

[ios] Fix xcode build warnings (#7984)

* [application][ios] Fix warning: pointer is missing a nullability type specifier

* [constants][ios] Fix discards qualifiers warning

Fixes: `sending 'const NSString *__strong' to parameter of type 'NSString * _Nonnull' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]`

* [kernel][ios] Fix discards qualifiers warning

show more ...


# f67462bc 21-Apr-2020 Tomasz Sapeta <[email protected]>

[ios][home] Add three finger gesture to open the dev menu + some refactoring (#7891)

# Why

Fixes #7644 and brings us closer to the separate `expo-dev-menu` package that can live without kernel.

[ios][home] Add three finger gesture to open the dev menu + some refactoring (#7891)

# Why

Fixes #7644 and brings us closer to the separate `expo-dev-menu` package that can live without kernel.
Also fixed https://twitter.com/bantingGamer/status/1251154340129062917

# How

- Added `EXDevMenuManager` singleton that manages the dev menu. Most parts of it were in kernel or some others classes strongly connected with kernel. Now, kernel is just its delegate.
- Refactored `EXKernelDevMotionHandler` to `EXDevMenuMotionInterceptor` which is much clearer and makes it possible to uninstall the interceptor (these interceptors are kinda hacky, I tried not to do them this way but well, RN does the same ��).
- Added `EXDevMenuGestureRecognizer` for long press gesture, with minimum press duration set to 0.5s and with light impact haptic feedback.
- Added `EXDevMenuGestureInterceptor` that swaps the default implementation of `UIView#gestureRecognizers`, but only for `UIWindow`s. This is needed to make three-finger gesture work everywhere in the app.
- Renamed `EXMenuViewController` to `EXDevMenuViewController` (all dev menu classes should be prefixed by `EXDevMenu`) and again, removed some connections to kernel.
- Added UI in user settings to select dev menu gestures (can select them separately).
- Fixed an issue with dev menu view being below modals in the view hierarchy.

# Test Plan

So far I've tested it only with published experience. I'm gonna do smoke tests on dev apps later.
I mostly focused on testing whether:
- the dev menu works in general (after refactoring)
- three-finger gesture works on the initial screen of the app, on the modals and on the dev menu itself
- all combinations of selected gestures work as expected
- selected gestures persist after killing and relaunching the client

show more ...


# ea7a561b 02-Mar-2020 Bartłomiej Bukowski <[email protected]>

[sdk37][iOS] Version iOS codebase for SDK37 (#7219)

* [sdk37][iOS] Version iOS codebase for SDK37

* [guides] Fix styling

* [tools][iOS] Correct versioning script

* [constants] Fix wrongly e

[sdk37][iOS] Version iOS codebase for SDK37 (#7219)

* [sdk37][iOS] Version iOS codebase for SDK37

* [guides] Fix styling

* [tools][iOS] Correct versioning script

* [constants] Fix wrongly exported constant

* [guides] Fix links & add note to QA section

show more ...


# 8810a243 21-Feb-2020 Eric Samelson <[email protected]>

[ios][expo-constants] remove duplicate symbol kEXDeviceInstallUUIDKey to fix iOS client build


# 24a0cefb 30-Jan-2020 Tomasz Sapeta <[email protected]>

[ios][home] Redesign DevMenu on iOS (#6793)

# Why

Part of #6521

# How

- Refactored JS code responsible for rendering DevMenu and converted it to TypeScript.
- Redesigned DevMenu to be a b

[ios][home] Redesign DevMenu on iOS (#6793)

# Why

Part of #6521

# How

- Refactored JS code responsible for rendering DevMenu and converted it to TypeScript.
- Redesigned DevMenu to be a bottom sheet instead of a modal to improve user experience.
- Upgraded `react-navigation-stack` to `^2.0.15`.
- In/out DevMenu animations are now controlled by JavaScript side (less native code).
- Moved Kernel's module methods related to DevMenu to separate `DevMenuModule` file (I think it makes the code using it clearer).
- `Nux` wasn't clear to me what it is and what it does, so I suggest renaming it to `Onboarding`.
- Prepared some stuff to be used on Android as well (Android support will come in a separate PR).
- Removed legacy menu gesture from both native code and from home user settings.
- Published dev home with those changes.

# Test Plan

- [x] Test on experience in debug mode
- [x] Test on experience in production mode
- [x] Test on snacks
- [x] Test on older SDKs
- [x] Test on simulators
- [x] Test that onboarding shows up once you open the experience for the first time or you didn't accept it yet (clicked `Got it` button).

# Demo

Expanding/collapsing demo on the left, onboarding screen on the right.

![ezgif com-resize](https://user-images.githubusercontent.com/1714764/72625046-423ddb00-3948-11ea-937a-155aa154857a.gif) ![Simulator Screen Shot - iPhone 11 Pro Max - 2020-01-20 at 16 11 21](https://user-images.githubusercontent.com/1714764/72737399-c5a53980-3b9f-11ea-99fb-d246bfb8491e.png)

show more ...


# d0248f72 17-Nov-2019 Brent Vatne <[email protected]>

[ios] Use NSNotificationCenter to reload app from EXVersionManager (#6292)

# Why

We can't depend on EXKernel from EXVersionManager

# How

Used NSNotificationCenter to communicate intent to r

[ios] Use NSNotificationCenter to reload app from EXVersionManager (#6292)

# Why

We can't depend on EXKernel from EXVersionManager

# How

Used NSNotificationCenter to communicate intent to reload instead of calling method directly on EXKernel

# Test Plan

Open native component list, force red screen, hit reload from red screen

show more ...


# b333b418 08-Nov-2019 Brent Vatne <[email protected]>

[ios][android] Make redbox and rr (android) and cmd+r (ios) reload manifest and JS rather than just JS (#6134)

* [ios] Make cmd+r reload manifest and JS rather than just JS

* [ios] Reload from de

[ios][android] Make redbox and rr (android) and cmd+r (ios) reload manifest and JS rather than just JS (#6134)

* [ios] Make cmd+r reload manifest and JS rather than just JS

* [ios] Reload from dev menu grabs manifest too

* [ios] Clean up reload code and ensure redbox injection code works outside of developer mode

* [android] Reload on dev menu also reloads from manifest

* [ios] Fix typo

* [android] Reload from manifest from redbox and with rr shortcut

* [android] Address feedback

* [react-native-lab] Copy changes to ReactAndroid over

* [android] Clean up extra newlines

* [react-native-lab] Update on sdk-36 branch

show more ...


# 7e7b37d3 22-Mar-2019 Eric Samelson <[email protected]>

[ios] make EXKernel sendNotification method robust to being called before the React Bridge has been created in standalone app case


# 1684b5d5 06-Feb-2019 Stanisław Chmiela <[email protected]>

[ios] Fix bare notifications in standalone mode (#3431)

# Why

Fixes https://github.com/expo/expo/issues/3223, closes https://github.com/expo/expo/pull/3410.

# How

- do not rely on `experien

[ios] Fix bare notifications in standalone mode (#3431)

# Why

Fixes https://github.com/expo/expo/issues/3223, closes https://github.com/expo/expo/pull/3410.

# How

- do not rely on `experienceId` of the received notification, if it came to our standalone app it must have been addressed to the standalone experience
- in standalone mode redirect all notifications to the standalone experience

# Test Plan

Tested on staging, fixes crash. Unfortunately I also found `notification` initial property to be empty, but this may be a separate issue.

show more ...


# 4d0e0805 01-Feb-2019 Eric Samelson <[email protected]>

[ios][home] remove deprecated client-side authentication checks for opening projects


# 27150200 11-Jan-2019 Tomasz Sapeta <[email protected]>

[home][ios] add diagnostics screen with background location demos (#3194)

* [home] add diagnostics screen

* [ios] fix home not having experienceUrl in constants

* [home] make background locati

[home][ios] add diagnostics screen with background location demos (#3194)

* [home] add diagnostics screen

* [ios] fix home not having experienceUrl in constants

* [home] make background location diagnostic screen look better

* [ios] fix notification events not being send to home experience

* [home] add diagnostic screen for geofencing

* [home] subtle changes in background location diagnostic screen

* [home] Only show diagnostics screen on iOS for now

* [home] Verify permissions and handle the case where they are rejected

show more ...


# 7100de8c 03-Dec-2018 Szymon20000 <[email protected]>

[ios] Upgrade notifications framework to User Notifications Framework (#2316)

* Updated notifications

Moved new permissions files to packages

fix

updated yarn.lock

fixes

Requested cha

[ios] Upgrade notifications framework to User Notifications Framework (#2316)

* Updated notifications

Moved new permissions files to packages

fix

updated yarn.lock

fixes

Requested changes

fix after rabase

Made requested changes

Renamed UserNotificationCenterProxy classes

Run `pod install`

* Post-review fixes

* Minor JS fixes

* Do not remember pending notifications in Expo Client (behavior matching previous one)

* Prevent blocking main queue at all times by EXUserNotificationRequester

* Do not scope categories identifiers in ejected applications

* Apply review comments

* Remove obsolete if condition

* Do not store resolver and rejecter in EXUserNotificationRequester

* Update Pods

* Add support for deleting custom notification categories

* Pass notification to a remembered experience when tapped a notification in backgrounded Expo Client

* Update jest-expo mocks

* Ensure permissions consuming happens on permissions queue in EXRemoteNotificationRequester

* Do not scope notification identifiers

* Change cancelScheduledNotification into cancelScheduledNotificationAsync returning native Promise

* Deny scheduleNotificationAsync with both time and repeat set on iOS

* Allow scheduleNotificationAsync with both time and repeat set on iOS using deprecated UILocalNotification

* Add more notification testing buttons to NCL

* Export EXUserNotificationManager service as kernel service

* Add EXNotificationsIdentifiersManager protocol capable of scoping and unscoping identifiers

* Require both RemoteNotificationManager and UserNotificationManager in EXNotifications module

* Scope and unscope action identifiers by EXUserNotificationManager

* Update pods

show more ...


# 62cc3d03 26-Jun-2018 Tomasz Sapeta <[email protected]>

fix errors when building on Xcode 10 (#2732)

* [ios] fix errors when building on Xcode 10

* [ios] put EXAppStateProtocol inline in EXKernel

fbshipit-source-id: c745c28


# d718b4b8 06-Jun-2018 Ben Roth <[email protected]>

Clean up most of the implicit retain self warnings

There are some still left in vendored code or in places I wasn't sure about.
Helps with https://github.com/expo/universe/issues/2581

fbshipit-sour

Clean up most of the implicit retain self warnings

There are some still left in vendored code or in places I wasn't sure about.
Helps with https://github.com/expo/universe/issues/2581

fbshipit-source-id: 97d159f

show more ...


# 9088dd0e 07-May-2018 Ben Roth <[email protected]>

Organize AppLoader, fix AppLoader tests

fbshipit-source-id: e80e891


# d699b379 01-May-2018 Ben Roth <[email protected]>

Fix passing initial notif props to standalone/ExpoKit

See: https://github.com/expo/expo/issues/1691

fbshipit-source-id: 5df7144


# 9777fddb 16-Apr-2018 Eric Samelson <[email protected]>

add `Updates.reloadFromCache` (#2315)

* [android][sdk][docs] added Updates.reloadFromCache() on android

* [ios] some slight renaming and refactoring in AppLoader to make manifest usage somewhat cle

add `Updates.reloadFromCache` (#2315)

* [android][sdk][docs] added Updates.reloadFromCache() on android

* [ios] some slight renaming and refactoring in AppLoader to make manifest usage somewhat clearer

* [ios] add Updates.reloadFromCache to ios

fbshipit-source-id: 0a0321e

show more ...


123