Skip to content

Drive

Turbo.visit

Turbo.visit(location)
Turbo.visit(location, { action: action })
Turbo.visit(location, { frame: frame })

Performs an Application Visit to the given location (a string containing a URL or path) with the specified action (a string, either "advance" or "replace").

If location is a cross-origin URL, or falls outside of the specified root (see Setting a Root Location), Turbo performs a full page load by setting window.location.

If action is unspecified, Turbo Drive assumes a value of "advance".

Before performing the visit, Turbo Drive fires a turbo:before-visit event on document. Your application can listen for this event and cancel the visit with event.preventDefault() (see Canceling Visits Before They Start).

If frame is specified, find a <turbo-frame> element with an [id] attribute that matches the provided value, and navigate it to the provided location. If the <turbo-frame> cannot be found, perform a page-level Application Visit.

Turbo.cache.clear

Turbo.cache.clear()

Removes all entries from the Turbo Drive page cache. Call this when state has changed on the server that may affect cached pages.

Note: This function was previously exposed as Turbo.clearCache(). The top-level function was deprecated in favor of the new Turbo.cache.clear() function.

Turbo.setProgressBarDelay

Turbo.setProgressBarDelay(delayInMilliseconds)

Sets the delay after which the progress bar will appear during navigation, in milliseconds. The progress bar appears after 500ms by default.

Note that this method has no effect when used with the iOS or Android adapters.

Turbo.setConfirmMethod

Turbo.setConfirmMethod(confirmMethod)

Sets the method that is called by links decorated with data-turbo-confirm. The default is the browser’s built in confirm. The method should return true if the visit can proceed.

Turbo.session.drive

Turbo.session.drive = false

Turns Turbo Drive off by default. You must now opt-in to Turbo Drive on a per-link and per-form basis using data-turbo="true".

FetchRequest

Turbo dispatches a variety of events while making HTTP requests that reference FetchRequest objects with the following properties:

Property Type Description
body FormData | URLSearchParams a URLSearchParams instance for "get" requests, FormData otherwise
enctype "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain" the HTMLFormElement.enctype value
fetchOptions RequestInit the request’s configuration options
headers Headers | { [string]: [any] } the request’s HTTP headers
method "get" | "post" | "put" | "patch" | "delete" the HTTP verb
params URLSearchParams the URLSearchParams instance for "get" requests
target HTMLFormElement | HTMLAnchorElement | FrameElement | null the element responsible for initiating the request
url URL the request’s URL

FetchResponse

Turbo dispatches a variety of events while making HTTP requests that reference FetchResponse objects with the following properties:

Property Type Description
clientError boolean true if the status is between 400 and 499, false otherwise
contentType string the value of the Content-Type header
failed boolean true if the response did not succeed, false otherwise
isHTML boolean true if the content type is HTML, false otherwise
location URL the value of Response.url
redirected boolean the value of Response.redirected
responseHTML Promise<string> clones the Response if its HTML, then calls [Response.text()][]
responseText Promise<string> clones the Response, then calls [Response.text()][]
response Response the Response instance
serverError boolean true if the status is between 500 and 599, false otherwise
statusCode number the value of Response.status
succeeded boolean true if the Response.ok, false otherwise

FormSubmission

Turbo dispatches a variety of events while submitting forms that reference FormSubmission objects with the following properties:

Property Type Description
action string where the <form> element is submitting to
body FormData | URLSearchParams the underlying [Request][] payload
enctype "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain" the HTMLFormElement.enctype
fetchRequest FetchRequest the underlying FetchRequest instance
formElement HTMLFormElement the <form> element to that is submitting
isSafe boolean true if the method is "get", false otherwise
location URL the action string transformed into a URL instance
method "get" | "post" | "put" | "patch" | "delete" the HTTP verb
submitter [HTMLButtonElement][] | [HTMLInputElement][] | undefined the element responsible for submitting the <form> element

Next: Frames