feat: pass source element to hydration lifecycle callbacks#7262
Open
feat: pass source element to hydration lifecycle callbacks#7262
Conversation
Change elementWillHydrate and elementDidHydrate to receive the source
HTMLElement instead of the tag name string. This enables callers to
correlate the willHydrate/didHydrate pair for the same element instance.
Extract inline callback invocations into private notify methods with
try-catch to prevent lifecycle callbacks from blocking hydration.
Make lifecycleCallbacks a non-optional property defaulting to {} to
avoid optional chaining transpilation overhead with ES2015 target.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Pull Request
📖 Description
This PR updates the
elementWillHydrateandelementDidHydratelifecycle callbacks to pass the sourceHTMLElementinstance instead of the element's tag name string. This enables consumers to interact with the actual element during hydration — for example, to set performance marks or read attributes — rather than only receiving a name, which limits the usefulness of these callbacks.The
HydrationControllerCallbacksinterface is now generic overTElement extends HTMLElement, and the callback invocations are wrapped in try/catch to prevent consumer errors from interrupting hydration.👩💻 Reviewer Notes
HydrationControllerCallbacks.lifecycleCallbacksproperty changed from optional (?) to a required field initialized to{}. This avoids optional chaining at every call site and simplifies the notification helpers.performance-metricstest fixture demonstrates using the updated callbacks with the Performance API.📑 Test Plan
lifecycle-callbacksandnested-elementstest fixtures updated to use the newsourceparameter.performance-metricstest fixture validates thatperformance.measureentries are created per hydrated element via the callbacks.✅ Checklist
General
$ npm run change