<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in EXErrorRecoveryManager.m</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>489c2041 - [ios] Remove legacy notifications module code (#24325)</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#489c2041</link>
        <description>[ios] Remove legacy notifications module code (#24325)

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Fri, 15 Sep 2023 23:18:39 +0000</pubDate>
        <dc:creator>Will Schurman &lt;wschurman@expo.io&gt;</dc:creator>
    </item>
<item>
        <title>167fd314 - [ios] Use stable manifest ID where applicable (#13280)</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#167fd314</link>
        <description>[ios] Use stable manifest ID where applicable (#13280)

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Wed, 30 Jun 2021 18:32:25 +0000</pubDate>
        <dc:creator>Will Schurman &lt;wschurman@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>94cbc586 - [ios] ensure ErrorRecoveryManager/Kernel can handle nil experienceId (#10918)</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#94cbc586</link>
        <description>[ios] ensure ErrorRecoveryManager/Kernel can handle nil experienceId (#10918)

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Wed, 04 Nov 2020 18:36:53 +0000</pubDate>
        <dc:creator>Eric Samelson &lt;esamelson@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>7186c657 - Audit error cases and improve error messages</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#7186c657</link>
        <description>Audit error cases and improve error messagesfbshipit-source-id: b7a496c

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Thu, 08 Mar 2018 23:27:19 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>e7ac6e4f - Restore ErrorRecovery and clean up visible/invisible app interface</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#e7ac6e4f</link>
        <description>Restore ErrorRecovery and clean up visible/invisible app interfacefbshipit-source-id: 917ce6f

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Thu, 08 Mar 2018 19:37:28 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b987b50f - restores full menu functionality except QR button</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#b987b50f</link>
        <description>restores full menu functionality except QR buttonfbshipit-source-id: 8370f90

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Sat, 03 Mar 2018 02:01:03 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f322f621 - support error handling, wire up dev bridge loading callbacks</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#f322f621</link>
        <description>support error handling, wire up dev bridge loading callbacksfbshipit-source-id: ea89a22

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Thu, 01 Mar 2018 21:47:47 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>89c6c39c - OTA Updates improvements (#1925)</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#89c6c39c</link>
        <description>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&apos;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&apos;re mixing mutations &amp; enumeration more.* [ios] a couple more fixes to make sure we&apos;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&apos;s always false...* [android] loadedFromCache manifest key working now* [android] prevent onManifestCompleted from being called twice* [ios] EXKernelAppLoader - control downloading bundle entirely, and don&apos;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&apos;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&apos;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&apos;t want to call it again* [ios] simplify timeout on JS bundle fetching - since the NSTimer will take care of resolving anyway, we don&apos;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&apos;s comments* [ios][home] resolved some of ben&apos;s 2nd round of comments* [ios] resolved most of ben&apos;s 3rd round of comments&apos;* [ios][server] resolved a few more comments* [ios] added status enum property to EXKernelAppRecord &amp; 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&apos;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&apos;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 modefbshipit-source-id: 4d763d0

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Wed, 14 Feb 2018 05:19:28 +0000</pubDate>
        <dc:creator>Eric Samelson &lt;esamelson@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>4d2ac632 - 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</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#4d2ac632</link>
        <description>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/1733fbshipit-source-id: 88e0626

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Tue, 16 Jan 2018 22:06:55 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>72ad8acc - Tentatively suppress AppRegistry is not a registered callable module when we already have a previously reported error</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#72ad8acc</link>
        <description>Tentatively suppress AppRegistry is not a registered callable module when we already have a previously reported errorfbshipit-source-id: 0a7088e

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Tue, 16 Jan 2018 18:33:13 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>9e98ce58 - Remove EXKernel::isDevKernel and access EXBuildConstants directly</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#9e98ce58</link>
        <description>Remove EXKernel::isDevKernel and access EXBuildConstants directlyfbshipit-source-id: 869824d

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Fri, 29 Sep 2017 18:54:54 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>9f8d9b9d - Formalize `EXKernelService` protocol, allow services to listen to bridge lifecycle of all apps</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#9f8d9b9d</link>
        <description>Formalize `EXKernelService` protocol, allow services to listen to bridge lifecycle of all appsfbshipit-source-id: 20d02633d2

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Tue, 11 Jul 2017 02:15:08 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>688d12ef - Make kernel services into delegates for their versioned modules</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#688d12ef</link>
        <description>Make kernel services into delegates for their versioned modulesfbshipit-source-id: 38f52d3244

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Wed, 05 Jul 2017 21:53:19 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>2f57c454 - Lock reads and writes to experience map in EXErrorRecoveryManager</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#2f57c454</link>
        <description>Lock reads and writes to experience map in EXErrorRecoveryManagerfbshipit-source-id: c12a8b9

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Fri, 16 Jun 2017 22:59:18 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f36a6356 - Clarify error message when you forgot to run the kernel locally so people stop asking me</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#f36a6356</link>
        <description>Clarify error message when you forgot to run the kernel locally so people stop asking mefbshipit-source-id: da229f9

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Thu, 27 Apr 2017 17:28:05 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>93d25cad - Add backoff to error recovery autoreload</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#93d25cad</link>
        <description>Add backoff to error recovery autoreloadfbshipit-source-id: 66c76c5

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Fri, 07 Apr 2017 21:09:20 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>bad1a30f - Auto reload apps in production if they encounter a fatal error after a time buffer</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#bad1a30f</link>
        <description>Auto reload apps in production if they encounter a fatal error after a time bufferfbshipit-source-id: 70ddd7b

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Fri, 07 Apr 2017 19:40:25 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>6dd7eb87 - Mark experiences as recovering from error if they hit any JS fatal</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#6dd7eb87</link>
        <description>Mark experiences as recovering from error if they hit any JS fatalfbshipit-source-id: 135203e

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Fri, 07 Apr 2017 19:19:11 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>8e3c2ccd - Keep track of successful JS loads, expose `EXKernelModule.shouldCurrentTaskAutoReload` based on last successful load time</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#8e3c2ccd</link>
        <description>Keep track of successful JS loads, expose `EXKernelModule.shouldCurrentTaskAutoReload` based on last successful load timefbshipit-source-id: ec8e7d1

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Thu, 06 Apr 2017 23:50:18 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>52387f48 - Add `Exponent.ErrorRecovery.setRecoveryProps()`, pass these on next reload initial props if there was a JS crash</title>
        <link>http://172.16.0.5:8080/history/expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m#52387f48</link>
        <description>Add `Exponent.ErrorRecovery.setRecoveryProps()`, pass these on next reload initial props if there was a JS crashfbshipit-source-id: cd0382c

            List of files:
            /expo/apps/eas-expo-go/ios/Exponent/Kernel/Services/EXErrorRecoveryManager.m</description>
        <pubDate>Thu, 06 Apr 2017 20:59:14 +0000</pubDate>
        <dc:creator>Ben Roth &lt;spongebucket@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
