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

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


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

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


# 94cbc586 04-Nov-2020 Eric Samelson <[email protected]>

[ios] ensure ErrorRecoveryManager/Kernel can handle nil experienceId (#10918)


# 7186c657 08-Mar-2018 Ben Roth <[email protected]>

Audit error cases and improve error messages

fbshipit-source-id: b7a496c


# e7ac6e4f 08-Mar-2018 Ben Roth <[email protected]>

Restore ErrorRecovery and clean up visible/invisible app interface

fbshipit-source-id: 917ce6f


# b987b50f 03-Mar-2018 Ben Roth <[email protected]>

restores full menu functionality except QR button

fbshipit-source-id: 8370f90


# f322f621 01-Mar-2018 Ben Roth <[email protected]>

support error handling, wire up dev bridge loading callbacks

fbshipit-source-id: ea89a22


# 89c6c39c 14-Feb-2018 Eric Samelson <[email protected]>

OTA Updates improvements (#1925)

* [android] fetch updated manifest on launch and allow specified amount of time to do this before populating experienceactivity

* [android] only consume response on

OTA Updates improvements (#1925)

* [android] fetch updated manifest on launch and allow specified amount of time to do this before populating experienceactivity

* [android] only consume response once in onCachedResponse

* [android] removed CountDownTimer in favor of Handler.postDelayed

* [WIP][android] moved all new manifest loading code to new methods with AtomicBundleListener rather than ManifestListener

* [android] moved JS bundle loading to before populating experienceactivity

* [android] refactored most of the new logic into its own AtomicBundleListener class per conversation with Jesse

* [ios][wip] beginning ios changes

* [ios] WIP

* [ios] more wip, have full manifest-fetching logic in AtomicBundleManager

* [ios] reverted changes to bridgeRecord in favor of creating new AppRegistry and AppRecord classes; will eventually refactor everything to use these rather than BridgeRegistry; getManifestAsync now uses AtomicBundleManager for fetching manifest

* [ios] wip, start on bundle loading

* [ios] wip wip wip. not sure how much of the logic to be moving from EXFrameReactAppManager to new class - maybe should keep _jsResource logic in original

* [ios] bundle loading now working from atomic bundle manager

* [ios] renamed new class to AtomicBundleLoader to avoid using word Manager

* [ios] trying to get reloading to work again; there is some weird issue with objc/js communication but going to save it for later

* [ios] wip with adding js bundle loading into timeout - currently just setting a timeout directly on the request

* [ios] bundle loading part of timeout

* [ios] renaming methods to use underscore prefix

* [ios] fully replace EXKernelBridgeRegistry and BridgeRecord with AppRegistry and AppRecord

* [ios] refactor request bundle method to use FrameReactAppManager as delegate

* [ios] renamed AtomicBundleLoader to AppLoader per Ben's suggestion

* [ios] step 1 in resolving reloading issue

* [ios] fix reloading on ios -- now using a UUID to identify record rather than manifestUrl, and we enforce uniqueness after the entire manifest/bundle is loaded to give time for the other record to be removed. Also, changed _appRegistry to an NSMutableDictionary, since NSMapTable was no longer needed and NSMutableDictionary is easier to copy -- safer since we're mixing mutations & enumeration more.

* [ios] a couple more fixes to make sure we're handling possible duplicate AppRecords properly

* [ios] better handling of various cases with possible inconsistencies/network errors

* [ios] add loadedFromCache key to manifest

* [ios] separated resolveWithCachedManifest and resolveWithCachedBundle to avoid situation where resolveWithCachedManifest is called with an error after manifest _finished == YES and therefore bundle never gets fetched

* [android] added loadedFromCache key to manifest, not sure why it's always false...

* [android] loadedFromCache manifest key working now

* [android] prevent onManifestCompleted from being called twice

* [ios] EXKernelAppLoader - control downloading bundle entirely, and don't resolve with manifest until after bundle has been downloaded successfully

* [ios] removed now obsolete EXKernelBundleLoaderDelegate methods

* [home] first step in loading progress fix - move manifest and bundleUrl fetching to a separate flux action, and allow a BrowserScreen to be mounted to show loading progress before manifest is fetched

* [ios][home] bundle loading progress now showing; need to show assets/icon properly, and resolve occasional crash when bundle download reaches 100%

* [home] fixed missing icons and name in project history

* [ios][home] send new manifest optimistically to JS as soon as we receive it so that JS can show the correct icon and background color on loading screen

* [home] moved some logic from BrowserActions to Browser to try and keep actions more pure

* [ios] fix for opening client from a notification - previously an EXKernelAppRecord was never created in this case. Might want to think about only ever creating AppRecords when the manifest is requested

* [home] improve safety/handling of optimisticManifest

* [home] fix for standalone apps where props.task is initially null

* [ios] pass recordId into frame so it can use this to unregister itself safely instead of trying to iterate through all of the records to find a potentially non-unique experienceId. Also, register AppRecords when manifest is requested as there is no reason for them to exist before this

* [ios] add new EXCachedResourceBehavior to never read from the cache but make sure we are always writing to it

* [android] don't send manifest or bundle until we have either downloaded a new bundle or timed out

* [android] only write the manifest that we are actually using to shared preferences

* [android] correct loadedFromCache value (again)

* [android] fix loading icon and progress for dev mode - don't try and download the bundle in exponent code

* [android] send optimistic manifest to ExperienceActivity as soon as we download it so that the activity can display the proper loading screen/icon/task info

* [android] use AtomicBundleListener for detached and shell apps as well

* [android] make sure that AtomicBundleListener is the only thing that is calling loadJSBundle (for non-kernel bundles)

* [android] fix opening detached apps after the first run

* [android] improve handling of failures

* [home] stop accidentally swallowing errors wfrom fetching manifest on iOS

* [ios] clean up stopTimer usage, as anytime we call _resolve we don't want to call it again

* [ios] simplify timeout on JS bundle fetching - since the NSTimer will take care of resolving anyway, we don't need to set the timeout on the JS bundle request based on the timer

* [android] renamed AtomicBundleListener to AppLoader as this is a better description of what it does

* [server] updated unversioned schema with new app.json fields

* [ios][android] make sure to only fetch remote manifest if the shouldCheckForUpdate is true

* [android] if in dev mode, skip the cached manifest + set timer step and just go fetch the remote manifest every time

* [ios][android] stop making bad assumptions -- if a cached manifest exists, it is possible that the corresponding bundle does not exist for some reason, and in this case we should download rather than failing to user

* [ios] resolved first cycle of ben's comments

* [ios][home] resolved some of ben's 2nd round of comments

* [ios] resolved most of ben's 3rd round of comments'

* [ios][server] resolved a few more comments

* [ios] added status enum property to EXKernelAppRecord & so that kernel services can skip over any AppRecords which are partially loaded

* [ios] add todo to get rid of lazy copy workaround

* [android] resolve jesse's comments

* [android] store loading errors in ExponentSharedPreferences, and make sure that we always try to load a new manifest + bundle if this is set to true when loading experience

* [ios] resolved last of Ben's comments, including adding a way for AppRecord to be notified when bridge has successfully loaded JS

* [schema] mark loadJSInBackgroundExperimental as deprecated

* [android] fix loading apps for the first time in dev mode

fbshipit-source-id: 4d763d0

show more ...


# 4d2ac632 16-Jan-2018 Ben Roth <[email protected]>

Remove deprecated kernel notifications These were replaced by kernel services in SDK 19, and we just dropped 18. Closes https://github.com/expo/universe/issues/1733

fbshipit-source-id: 88e0626


# 72ad8acc 16-Jan-2018 Ben Roth <[email protected]>

Tentatively suppress AppRegistry is not a registered callable module when we already have a previously reported error

fbshipit-source-id: 0a7088e


# 9e98ce58 29-Sep-2017 Ben Roth <[email protected]>

Remove EXKernel::isDevKernel and access EXBuildConstants directly

fbshipit-source-id: 869824d


# 9f8d9b9d 11-Jul-2017 Ben Roth <[email protected]>

Formalize `EXKernelService` protocol, allow services to listen to bridge lifecycle of all apps

fbshipit-source-id: 20d02633d2


# 688d12ef 05-Jul-2017 Ben Roth <[email protected]>

Make kernel services into delegates for their versioned modules

fbshipit-source-id: 38f52d3244


# 2f57c454 16-Jun-2017 Ben Roth <[email protected]>

Lock reads and writes to experience map in EXErrorRecoveryManager

fbshipit-source-id: c12a8b9


# f36a6356 27-Apr-2017 Ben Roth <[email protected]>

Clarify error message when you forgot to run the kernel locally so people stop asking me

fbshipit-source-id: da229f9


# 93d25cad 07-Apr-2017 Ben Roth <[email protected]>

Add backoff to error recovery autoreload

fbshipit-source-id: 66c76c5


# bad1a30f 07-Apr-2017 Ben Roth <[email protected]>

Auto reload apps in production if they encounter a fatal error after a time buffer

fbshipit-source-id: 70ddd7b


# 6dd7eb87 07-Apr-2017 Ben Roth <[email protected]>

Mark experiences as recovering from error if they hit any JS fatal

fbshipit-source-id: 135203e


# 8e3c2ccd 06-Apr-2017 Ben Roth <[email protected]>

Keep track of successful JS loads, expose `EXKernelModule.shouldCurrentTaskAutoReload` based on last successful load time

fbshipit-source-id: ec8e7d1


# 52387f48 06-Apr-2017 Ben Roth <[email protected]>

Add `Exponent.ErrorRecovery.setRecoveryProps()`, pass these on next reload initial props if there was a JS crash

fbshipit-source-id: cd0382c


# fa4abd86 06-Apr-2017 Ben Roth <[email protected]>

Allow error recovery dictionary to be associated with an experience id

fbshipit-source-id: 382418e


# 1899209a 05-Apr-2017 Ben Roth <[email protected]>

Move experience error tracking to new class `ErrorRecoveryManager`

fbshipit-source-id: e1297c9