Skip to content

ui-router-server / location / installServerLocation

Variable: installServerLocation ​

ts
const installServerLocation: <T>(router, options?) => T;

Defined in: location.ts:146

Installs `serverLocationPlugin` on router, points it at the requested url, and returns the same router.

It takes a router rather than constructing one: a server render drives whatever UIRouter its client uses — lit-ui-router's UIRouterLit included — and constructing one here pins that choice. Build the router yourself and hand it over; it comes back at the type it went in as.

The url is set before any transition runs, so router.start() heads for the state the request asked for. start() returns nothing, and the transition settles asynchronously, resolves included: await it before reading the router. transitionService.onSuccess fires when it lands; stateService.go() returns the transition promise where start() does not.

Type Parameters ​

Type ParameterDescription
T extends UIRouterthe router type, returned unchanged

Parameters ​

ParameterTypeDescription
routerTa freshly constructed router, with no location plugin yet
options?ServerLocationOptionsthe request's url, the mount's shape, and the url shape

Returns ​

T

router, for chaining

Example ​

ts
import { servicesPlugin, UIRouter } from '@uirouter/core';
import { installServerLocation } from 'ui-router-server/location';

const { pathname, search } = new URL(request.url);
const router = new UIRouter();
router.plugin(servicesPlugin);
installServerLocation(router, { url: pathname + search, strictMode: false });
states.forEach((state) => router.stateRegistry.register(state));
const settled = new Promise<void>((resolve) => {
  router.transitionService.onSuccess({}, () => resolve());
});
router.start();
await settled;