Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
Aims to fix performance issues where calling useAbstraxionAccount in several components resulted in long delays and app freezes.
Changes Made:
abstraxion-core
calls to the top-level context provider to centralize authentication state management and reduce the frequency of calls toauthenticate()
. This change ensures that the authentication state is determined once and shared across components, minimizing repeated calculations and updates/re-rendersuseAbstraxionAccount
hook, as it now relies on a more stable context, reducing unnecessary complexity and improving readability.persistAuthenticateState
function inuseCallback
to stabilize the function reference and prevent unnecessary re-executions during re-rendersuseEffect
hooks and dependencies to ensure optimize performanceResults:
Performance has dramatically improved on hard reloads. The app can now handle
n
calls to theuseAbstraxionAccount
hook without experiencing any performance issues.Important Note:
There may still be a slight delay during hard reloads due to the initial configuration and setup of the underlying Abstraxion authentication system on mount. It is recommended to disable actions and buttons based on the
isConnected
boolean returned from theuseAbstraxionAccount
hook to enhance user experience during this period.