-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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 iteration for WordPress 6.7 #63232
Comments
Can you also consider #60522? |
I thought that work was still experimental since it requires using Chrome Canary. But if you think it should be included in WordPress 6.7, sure, we can include it 🙂 |
true, it is still experimental and thus maybe not ready for 6.7! I'm hoping it lands in stable soon and this is a purely debugging related feature. Mostly I don't want the work to fall off the radar and I thought to some degree experimental features where acceptable in Gutenberg since we can always pull them before merging into core. |
Ok, then let's leave it out of the list of things for WordPress 6.7 but let's keep an eye on including it in future versions once the APIs are stable 🙂
Sure, if you want to merge it in Gutenberg to test it out, that's totally fine. |
That is indeed exactly what I want to do - in part the goal here is to give the team building the feature (DevTools performance panel extensibility API or "User Timings") feedback about what is useful and what is missing. By testing the feature out in Gutenberg, we can influence how it being built before it lands in stable. |
Any chance of getting a
|
Yeah, a If you're willing to work on it we'd love to help you out. As far as I remember, the work not only requires the client-side directive implementation, but also an extra function similar to this one for the server-side rendering. But we can discuss the details in a proper issue or in Slack 🙂 |
Sure! I had left a comment there on the original issue here: It looks like the scope has not been decided yet, so that seems like the first item needed. |
Can someone share an update here as to what's been done thus far and where the work stands? |
Hey Anne, this is the status of the iteration:
Let me know if this is helpful or if you need more information. |
@mikachan @madhusudhand, could you give us your estimate on the Gallery, Accordion and Tabs blocks? |
Thank you! I want to get this right for the 6.7 roadmap so I'll remove the Core blocks work for now to be safe until/unless I hear differently. |
@luisherranz Can you share a little bit about what |
Sure! Since it's not possible for the initial server state to overwrite the client state because that approach is not compatible with region-based client-side navigation, we need an API for use cases where, after navigating, you want to inspect the initial state or context of the new page. So those two functions will return the initial state or context that came from the server and they are reactive, so that initial state or context updates every time there is a client-side navigation. People would normally use them in a <div data-wp-watch="callbacks.updateServerContext">...</div> store('...', {
callbacks: {
updateServerContext() {
const context = getContext();
const serverContext = getServerContext();
// Override some property with the new value that came from the server.
context.overridableProp = serverContext.overridableProp;
},
},
}); That's it! The same for state using @DAreRodz will open a pull request next week, and we appreciate any feedback and assistance testing this new API, that if everything goes well, would make it into WP 6.7 😄 |
Gallery block is close to getting merged. It is pending with following feedback
I am looking into the second feedback item. Hopefully it will be resolved this week. |
Sweet! I'll add the Gallery block back onto the 6.7 roadmap. |
UpdatesI've added the following bug fixes to the tracking issue:
The first bug was a regression introduced in #62734, and it's merged and ready for the next Gutenberg RC. The second one is a missing piece of logic we forgot to include in #64879. It's ready for review. The following PR is also ready for review. I've introduced a change that depends on #65135 being merged; the failing test should pass after that. As the next step, I have to open a PR for |
I've just created a draft for the |
I've created a new issue to discuss the |
@annezazu The current approach we took for gallery block is rendering translations on server (because |
Thanks for the update! Agreed. Let’s punt. |
#65151 landed this week and contains a new public API 🎉As it's going to be included in WordPress 6.7, it will need an accompanying dev note (added label) and documentation in the Interactivity API reference. |
In WordPress 6.6, work was done to improve warnings integration with Preact DevTools, as well as adding directives for asynchronous event handlers and support for derived state on the server.
In WordPress 6.7, we will continue working on internal improvements to ensure that the Interactivity API's code is as simple and stable as possible and to make the Interactivity API resilient when used asynchronously (e.g., adding directives or stores after initialization). This will pave the way for performance improvements such as directive code splitting or lazy loading of interactive blocks.
In Core blocks, work will begin on the Gallery block lightbox and the Query block's Instant Search.
Apart from the work for WordPress 6.7, investigations will continue, with the most important being the exploration of how to improve assets management in region-based client-side navigation and experimenting with full-page client-side navigation. However, those will be tracked in its own Tracking Issue.
Work is also continuing to improve the documentation with enhancements in the API Reference and new explanatory guides tracked in the Interactivity API documentation's Tracking Issue.
This is the list of initial tasks, although we will edit this post as we progress and discover other things that we need to do.
Enhancements
deepMerge
logicdeepMerge
function #64879getServerState
andgetServerContext
getServerState()
andgetServerContext()
#65151wp_interactivity_get_element
so it can be used in the derived state Closures to inspect the element attributes with$element['attributes']
(using$p->get_attributes_with_prefix('')
).withEvent
and require Interactivity API actions that use theevent
object to use it #64944Core blocks (optional)
Bug fixes
withScope
to restore scope on thrown exception inside async functions #62555Cannot bind attributes to direct children ofdata-wp-each
#60981proxifyContext
with context proxies insidewp-context
#65090deepMerge()
adds new properties #65135Optional
getElement()
attributes
data-wp-client-only-component
navigate()
failure statesnavigate()
Failure States #59856The text was updated successfully, but these errors were encountered: