Back to Turbo

Drive

_source/reference/drive.md

latest8.9 KB
Original Source

Drive

Turbo.visit

js
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

js
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.config.drive.progressBarDelay

js
Turbo.config.drive.progressBarDelay = 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.

Note: This function was previously exposed as Turbo.setProgressBarDelay function. The top-level function was deprecated in favor of the new Turbo.config.drive.progressBarDelay = delayInMilliseconds syntax.

Turbo.config.forms.confirm

js
Turbo.config.forms.confirm = 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 a Promise object that resolves to true or false, depending on whether the visit should proceed.

Note: This function was previously exposed as Turbo.setConfirmMethod function. The top-level function was deprecated in favor of the new Turbo.config.forms.confirm = confirmMethod syntax.

Turbo.session.drive

js
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:

PropertyTypeDescription
bodyFormData | URLSearchParamsa URLSearchParams instance for "get" requests, FormData otherwise
enctype"application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain"the HTMLFormElement.enctype value
fetchOptionsRequestInitthe request's configuration options
headersHeaders | { [string]: [any] }the request's HTTP headers
method"get" | "post" | "put" | "patch" | "delete"the HTTP verb
paramsURLSearchParamsthe URLSearchParams instance for "get" requests
targetHTMLFormElement | HTMLAnchorElement | FrameElement | nullthe element responsible for initiating the request
urlURLthe request's URL

FetchResponse

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

PropertyTypeDescription
clientErrorbooleantrue if the status is between 400 and 499, false otherwise
contentTypestring | nullthe value of the Content-Type header
failedbooleantrue if the response did not succeed, false otherwise
isHTMLbooleantrue if the content type is HTML, false otherwise
locationURLthe value of Response.url
redirectedbooleanthe value of Response.redirected
responseHTMLPromise<string>clones the Response if its HTML, then calls Response.text()
responseTextPromise<string>clones the Response, then calls Response.text()
responseResponsethe Response instance
serverErrorbooleantrue if the status is between 500 and 599, false otherwise
statusCodenumberthe value of Response.status
succeededbooleantrue if the Response.ok, false otherwise

FormSubmission

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

PropertyTypeDescription
actionstringwhere the <form> element is submitting to
bodyFormData | URLSearchParamsthe underlying Request payload
enctype"application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain"the HTMLFormElement.enctype
fetchRequestFetchRequestthe underlying FetchRequest instance
formElementHTMLFormElementthe <form> element to that is submitting
isSafebooleantrue if the method is "get", false otherwise
locationURLthe action string transformed into a URL instance
method"get" | "post" | "put" | "patch" | "delete"the HTTP verb
submitterHTMLButtonElement | HTMLInputElement | undefinedthe element responsible for submitting the <form> element