@gluonjs/ssr


@gluonjs/ssr / packages/ssr/src / renderRequest

Function: renderRequest()

renderRequest<Data>(options): Promise<SsrRequestResult>

Creates and disposes one application, Router, Store, and effect scope per call.

Type Parameters

Data

Data = undefined

Parameters

options

SsrRequestOptions<Data>

Returns

Promise<SsrRequestResult>

Example

Own one isolated Router, Store, effect scope, data load, application render, serialized state, and cleanup cycle for an incoming URL:

ts
import { createApp, html } from '@gluonjs/core';
import { renderRequest, type SsrRequestContext, type SsrRequestOptions, type SsrRequestResult } from '@gluonjs/ssr';

type ReportData = { title: string };
const options = {
  url: '/reports/41',
  routes: [{ path: '/reports/:id', name: 'report' }],
  load: ({ router }: Omit<SsrRequestContext<ReportData>, 'data'>) => ({ title: `Report ${router.currentRoute.value.params.id}` }),
  createApp: ({ data }) => createApp(() => html`<main>${data.title}</main>`),
} satisfies SsrRequestOptions<ReportData>;

const response: SsrRequestResult = await renderRequest(options);
console.log(response.html, response.stateScript);