bext/Framework PRISMBEXT / 02
Framework PRISM

Une syntaxe familière.
De nouvelles bases.

Écrivez du TypeScript et du JSX. PRISM prend en charge le rendu serveur, le CSS par route et les îlots interactifs. Votre application, sur le moteur bext.

Créer avec PRISM
FIG. 02 / PRISM

Vue simplifiée du pipeline. Le cache ISR est géré par le moteur bext.

Du code à la page, dans un même moteur.
DANS CE CHAPITRE01TSX côté serveur02Routes par fichiers03Îlots interactifs
En contexte

La place de PRISM dans une requête

bext est le moteur. PRISM est l'étape de rendu qu'il contient, et non un outil séparé à lancer ou à déployer.

Requête

  • HTTP/1.1 · 2 · 3
  • N'importe quel domaine

bext

  • Terminaison TLS
  • Routage + proxy inverse
  • Cache · compression · WAF

PRISM render

  • TSX natif → HTML
  • Pool d'isolats V8
  • Sortie vers ISR · cache · HTTP
Deux façons de construire

PRISM natif, ou l’adaptateur React de bext

PRISM est le chemin TSX → HTML natif. Pour une app React ou Next.js existante, bext fournit un adaptateur séparé ; les mesures de cette page concernent uniquement PRISM natif.

Adaptateur bext distinct

React / Next.js existant

Choisissez [framework] type = "nextjs" pour conserver React, RSC et les conventions App Router. Ce chemin n’utilise pas le moteur de rendu natif de PRISM.

  • Composants serveur async, <Suspense> et le hook use(promise)
  • Îlots « use client » hydratés automatiquement
  • React Server Components et server actions
  • next/font, next/image, next/link
  • La plupart des applications Next.js App Router migrent avec peu de changements
PRISM natif

Tout miser sur PRISM

Abandonnez React et utilisez les primitives de PRISM pour une stack plus légère, centrée sur le serveur.

  • Son propre runtime JSX h() : léger, pensé pour le serveur, sans React
  • Signaux fins + <List> / <Show> / <Switch>
  • Bext Query, <Form> avec server actions, Tailwind natif
  • Sessions signées, OAuth, accès par rôle, stockage objet, SSE, MDX
  • Îlots en React, Preact, Solid ou signaux, au choix pour chaque composant
Fonctionnement

De page.tsx au HTML streamé

1

Écrire un page.tsx

Routage par fichiers, server components async, layouts, loaders et route handlers : les conventions que vous connaissez déjà.

2

La passe de compilation précompile le TSX

Les balises et sous-arbres statiques deviennent des fragments HTML ; les listes deviennent des boucles avec un seul accumulateur.

3

Rendu dans V8

Le bundle mis en cache s’exécute dans un isolat V8 chaud. Le runtime JSX automatique gère les parties dynamiques qui ne peuvent pas être précompilées, sans React ni DOM virtuel.

4

HTML + cache

Le HTML sûr et validé est transmis au pipeline ISR et HTTP ; les îlots interactifs optionnels s’hydratent séparément dans le navigateur.

Le code

TSX natif, îlots optionnels

Le rendu serveur n’utilise pas React. Un îlot client peut toutefois choisir React, Preact, Solid ou les signaux PRISM.

app/page.tsx
'use server';

// async server component
export default async function Page() {
  const posts = await db.posts.all();
  return (
    <Suspense fallback={<Spinner />}>
      <Feed posts={posts} />
    </Suspense>
  );
}
app/counter.tsx
'use client';

import { useState } from 'react';

// auto-detected island
export function Counter() {
  const [n, setN] = useState(0);
  return (
    <button onClick={() => setN(n + 1)}>
      count: {n}
    </button>
  );
}
app/api/route.ts
export async function GET(req) {
  const data = await load();
  return Response.json(data, {
    headers: {
      'cache-control': 's-maxage=60',
    },
  });
}
Capacités

Un framework complet, intégré

SSR streamé

Les composants async, les générateurs et le Suspense PRISM produisent des fragments HTML au fil de leur disponibilité.

Des îlots dans le runtime de votre choix

Les îlots React « use client » sont détectés automatiquement ; l’API d’îlots permet aussi Preact, Solid ou les signaux natifs de PRISM.

Signaux fins

Un runtime réactif intégré : signal / computed / effect avec <List>, <Show> et <Switch> à clé. Une réactivité à la Solid, rendue côté serveur puis hydratée.

Bext Query

Une couche de données à la TanStack Query, construite sur les signaux : createQuery / createMutation avec cache, état et revalidation en arrière-plan.

Formulaires et server actions

<Form> envoie vers une action « use server » et fonctionne sans JavaScript, avec amélioration progressive, UI optimiste et validation intégrées.

Passe de compilation

Les sous-arbres TSX statiques, les attributs sûrs et les listes reconnues deviennent des concaténations et boucles directes avant l'exécution V8.

ISR et cache de fragments

ISR au niveau de la page avec stale-while-revalidate et protection anti-stampede, plus un composant <ISR> pour mettre en cache des fragments avec leur propre TTL.

Tailwind natif

Les classes utilitaires sont extraites du HTML rendu et intégrées dans une feuille de style par route, sans PostCSS ni étape de build, et sans coût CPU quand elles ne servent pas.

Stockage objet

Envois et téléchargements S3 / R2 / MinIO présignés depuis un seul import (presignPut, presignGet, uploadDirect), configurés dans bext.config.toml.

Génération d'images OG

Images Open Graph dynamiques rendues côté serveur avec le moteur de mise en page CSS Taffy et une rastérisation du texte. Aucun service externe.

Démarrages à froid par snapshot

Des isolats préparés par heap snapshot rendent un nouveau worker prêt immédiatement : pas de préchauffage JIT ni de pénalité au démarrage à froid.

Dans le binaire

Pas de Node.js, pas de service SSR séparé, pas de sidecar. PRISM s'exécute dans le même processus bext qui termine le TLS, route les requêtes, met en cache et protège.

15,7 µs
rendu PRISM compilé · moyenne
75,3 µs
runtime JSX automatique · moyenne
~116×
plus rapide que React 19 (PRISM compilé)
0
processus Node.js
Parité

Les conventions que vous connaissez déjà

PRISM reprend les conventions de fichiers et de routage familières de l’App Router, tout en utilisant son propre moteur de rendu TSX.

page.tsxlayout.tsxloading.tsxerror.tsxnot-found.tsxtemplate.tsxroute.tsmiddleware.tsgenerateMetadatagenerateStaticParams[dynamic][...catch-all]route groups (…)parallel @slotsintercepting routesnext/linknext/imagenext/fontmetadata filessitemap + robots
56

exemples exécutables, en direct

Chaque primitive de cette page est câblée et tourne sur demo.bext.dev : signaux, server actions, streaming, cache, authentification, stockage et plus encore. Lisez le code source et observez le résultat.

signalsserver actionsstreamingISR + fragment cachesessionsOAuthSSEMDXi18nstorageoptimistic UIvalidation
Explorer les démos

Livrez du TSX sans React ni Node.js

PRISM compile, rend, diffuse en streaming et met en cache votre TSX natif, depuis le même processus bext.

Lire la documentationVoir toutes les fonctionnalités