-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Interactivity API: First support for loadOnClientNavigation #10357
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Interactivity API: First support for loadOnClientNavigation #10357
Conversation
|
@westonruter I still have to create a Trac ticket and add tests, but I'd like to know if you agree with this approach. |
westonruter
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Largely looks good.
src/wp-includes/interactivity-api/class-wp-interactivity-api.php
Outdated
Show resolved
Hide resolved
src/wp-includes/interactivity-api/class-wp-interactivity-api.php
Outdated
Show resolved
Hide resolved
Test using WordPress PlaygroundThe changes in this pull request can previewed and tested using a WordPress Playground instance. WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser. Some things to be aware of
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation. |
|
Thanks @westonruter! This should be ready for a final review now. |
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
westonruter
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@luisherranz I applied some minor edits, but otherwise this is good to go. I can commit if you like.
…into iapi-load-on-client-navigation
…into iapi-load-on-client-navigation
WordPress 6.9 will introduce a new client-side navigation algorithm that starts loading JavaScript when you navigate between pages. However, loading script modules from non-interactive blocks during navigation isn't safe and could cause errors or unexpected behavior. To support this new navigation algorithm, we need a way to identify which script modules belong to interactive blocks in the HTML. This lets the Interactivity API router determine which modules it can safely load during client-side navigation and which ones it should skip.
This PR uses the
wp_script_attributesfilter to add thedata-wp-router-optionsdirective with theloadOnClientNavigation: trueproperty for all interactive blocks that are compatible with client-side navigation.Trac ticket: https://core.trac.wordpress.org/ticket/64122
Related Gutenberg PR: WordPress/gutenberg#72449
This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.