| #
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.
 
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 ...
|