You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Sep 25, 2021. It is now read-only.
It looks as though visitRendered is being triggered twice after an initial load when a page is loaded using the Turbolinks.visit method.
I've been able to reproduce using a clean Rails 6 project and the a clean Turbolinks Demo app.
To reproduce:
Create a new Rails 6 (I'm using 6.0.2) app and some new view/controller you can visit. Start the server.
Download the turbolinks-ios library and run the TurbolinksDemo project.
Update the URL in the iOS project to hit your local server.
Open the web inspector in Safari and access the console
Add a breakpoint to visitRendered in the injected script (user-script)
Run Turbolinks.visit('/')
visitRendered is triggered once (correctly)
Run Turbolinks.visit('/') again
visitRendered is triggered twice
Interestingly, only one HTTP request is made.
This results in two visitableDidRender calls in the iOS app which is negatively impacting my application as I do some additional view controller configuration post render.
Would appreciate it if someone could try the above and report if they are able to reproduce.
The text was updated successfully, but these errors were encountered:
Looks as though the double rendering is triggered as a result of page caching.
The "fix" in this case:
Add <meta name="turbolinks-cache-control" content="no-cache"> to the head
visitRendered will only be triggered once
This makes sense as two (potentially) different DOMs are presented to the app. This is a bit confusing but I accept it's a sacrifice to put the "turbo" in "turbolinks" 🙂
It would be great if visitableDidRender had some way of discerning whether it was receiving a cached version of the page or not. In my case, I am looking for a meta which determines the user's session status and when caching is enabled, my app will initially receive a DOM which reflects the user being signed out.
I'll try setting this using document.addEventListener("turbolinks:before-cache", function() {
^ Unfortunately this didn't work.
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
It looks as though
visitRendered
is being triggered twice after an initial load when a page is loaded using theTurbolinks.visit
method.I've been able to reproduce using a clean Rails 6 project and the a clean Turbolinks Demo app.
To reproduce:
visitRendered
in the injected script (user-script
)Turbolinks.visit('/')
visitRendered
is triggered once (correctly)Turbolinks.visit('/')
againvisitRendered
is triggered twiceThis results in two
visitableDidRender
calls in the iOS app which is negatively impacting my application as I do some additional view controller configuration post render.Would appreciate it if someone could try the above and report if they are able to reproduce.
The text was updated successfully, but these errors were encountered: