--- title: Client API --- The `@sapper/app` module, which is generated by Sapper based on the shape of your app, contains functions for controlling Sapper programmatically and responding to events. ### start({ target }) * `target` — an element to render pages to This configures the router and starts the application — listens for clicks on `` elements, interacts with the `history` API, and renders and updates your Svelte components. Returns a `Promise` that resolves when the initial page has been hydrated. ```js import * as sapper from '@sapper/app'; sapper.start({ target: document.querySelector('#sapper') }).then(() => { console.log('client-side app has started'); }); ``` ### goto(href, options?) * `href` — the page to go to * `options` — can include a `replaceState` property, which determines whether to use `history.pushState` (the default) or `history.replaceState`). Not required Programmatically navigates to the given `href`. If the destination is a Sapper route, Sapper will handle the navigation, otherwise the page will be reloaded with the new `href`. (In other words, the behaviour is as though the user clicked on a link with this `href`.) ### prefetch(href) * `href` — the page to prefetch Programmatically prefetches the given page, which means a) ensuring that the code for the page is loaded, and b) calling the page's `preload` method with the appropriate options. This is the same behaviour that Sapper triggers when the user taps or mouses over an `` element with [rel=prefetch](docs#prefetching). ### prefetchRoutes(routes?) * `routes` — an optional array of strings representing routes to prefetch Programmatically prefetches the code for routes that haven't yet been fetched. Typically, you might call this after `sapper.start()` is complete, to speed up subsequent navigation (this is the 'L' of the [PRPL pattern](https://developers.google.com/web/fundamentals/performance/prpl-pattern/)). Omitting arguments will cause all routes to be fetched, or you can specify routes by any matching pathname such as `/about` (to match `src/routes/about.svelte`) or `/blog/*` (to match `src/routes/blog/[slug].svelte`). Unlike `prefetch`, this won't call `preload` for individual pages.