RFC for a new Transition.waitFor method#1183
Conversation
|
The alternative suggestion I had for awaiting routeWillChange methods (as they are written today) is if these methods don't return a promise, there would be nothing to wait for. It also is similar to how Ember (before/after) model hooks work:
|
|
I have thought of this, the RFC mentions this as alternative solution.
And later
If the consensus is going to be that |
|
All good, I saw that - I just wanted to mention why it could possibly be a preferred route for RFC reviewers+maintainers. |
|
The router and base route class is currently being redesigned, any kind of changes to router.js is going to end up being thrown away in the not so distant future. Introducing this as a concept, updating guides and teaching it feels like it would be wasted effort as it will all be replaced soon, possibly for something very different, so we risk adding churn here. I could be convinced it's worth having something in place in the interim, but I do lean more on the side that this could be done in app code for people who really want to use view transitions now without needing to land and shepherd a change at the framework level. A general solution that extends the current base route could be shared as an addon. I'd be interested in the opinions of @ef4, @mansona and @nickschot. |
I agree with this statement, as I have also explained in the RFC:
However, the adoption of this "very different" new router by the Ember user-base could be years, while the View Transition API improves user experience today and therefore something that developers are demanding right now. Moreover, I would like to address that this just started as a PR to the original router.js library. That was before the library was integrated into the Ember repository. This RFC doe snot request the introduction of a concept, updating guides and teaching in any direction. That would indeed be a waste of effort. I am requesting to add one public method. A method that does not break current applications. It could be addressed with a simple mention in the changelog and become available in the API documentation. |
There is - according my research - no way to integrate a generic View Transition API solution in app code, or to do this as an addon. With 'generic View Transition API solution' I mean a generic method to hook into every route change and apply the View Transition API to the Ember route transition. The reasons is that the Another solution might be to create the the view transition before creating the ember transition, e.g. by creating a manual That is why the proposed single additional method is a very safe method right now, for those people that need it, to implement the View Transition API. It delivers a very clean API to implement the View Transition API in a generic manner right now, until there is something better that we can teach the global Ember user-base. router.on('routeWillChange', async (transition) => {
const { promise, resolve, reject } = Promise.withResolvers();
transition.waitFor(promise);
const viewTransition = document.startViewTransition(async () => {
resolve();
await transition.promise;
});
await viewTransition.updateCallbackDone;
}); |
Propose Ember Router public Transition.waitFor method
Rendered
Summary
This pull request is proposing a new RFC.
To succeed, it will need to pass into the Exploring Stage, followed by the Accepted Stage.
A Proposed or Exploring RFC may also move to the Closed Stage if it is withdrawn by the author or if it is rejected by the Ember team. This requires an "FCP to Close" period.
An FCP is required before merging this PR to advance to Accepted.
Upon merging this PR, automation will open a draft PR for this RFC to move to the Ready for Released Stage.
Exploring Stage Description
This stage is entered when the Ember team believes the concept described in the RFC should be pursued, but the RFC may still need some more work, discussion, answers to open questions, and/or a champion before it can move to the next stage.
An RFC is moved into Exploring with consensus of the relevant teams. The relevant team expects to spend time helping to refine the proposal. The RFC remains a PR and will have an
Exploringlabel applied.An Exploring RFC that is successfully completed can move to Accepted with an FCP is required as in the existing process. It may also be moved to Closed with an FCP.
Accepted Stage Description
To move into the "accepted stage" the RFC must have complete prose and have successfully passed through an "FCP to Accept" period in which the community has weighed in and consensus has been achieved on the direction. The relevant teams believe that the proposal is well-specified and ready for implementation. The RFC has a champion within one of the relevant teams.
If there are unanswered questions, we have outlined them and expect that they will be answered before Ready for Release.
When the RFC is accepted, the PR will be merged, and automation will open a new PR to move the RFC to the Ready for Release stage. That PR should be used to track implementation progress and gain consensus to move to the next stage.
Checklist to move to Exploring
S-Proposedis removed from the PR and the labelS-Exploringis added.Checklist to move to Accepted
Final Comment Periodlabel has been added to start the FCP