Release 0.8.0

@emberkit/core 0.8.0@emberkit/cli 1.0.0@emberkit/icons & @emberkit/ui 6.0.0

Cette release ajoute des effets réactifs, View Transitions, le routage API en dev, des imports SQL raw, des liaisons d'hydratation plus robustes et des correctifs pour charger emberkit.config.ts dans le plugin Vite.

Points forts

DomaineCe qui a changé
SignalscreateEffect et createMemo suivent les dépendances et se ré-exécutent quand les signals changent
View TransitionsTransitions SPA intégrées via render(..., { viewTransitions: true })
Dev APIdevApiPlugin et routes par fichier src/routes/_api/* en développement
Hydratationdata-ek-bind enrichi pour les inputs ; guide pour les listes async après SSR
VitesqlRawPlugin() pour les imports *.sql?raw (Workers / edge)

Effets réactifs et memos

Avant 0.8.0, createEffect s'exécutait une seule fois côté client. Désormais :

  • Suit les lectures dans l'effet (et dans createMemo)
  • Se ré-exécute quand ces signals changent
  • Respecte untrack() et regroupe les notifications via batch()
  • Ignore l'exécution pendant le SSR (window est undefined)
import { createSignal, createEffect } from '@emberkit/core';

const [query, setQuery] = createSignal('');

createEffect(() => {
  document.title = `Search: ${query()}`;
});

Voir Signals — Effects.

View Transitions

Activez des changements de route fluides avec l'API View Transitions native :

import { render } from '@emberkit/core';
import App from './routes/_layout.tsx';
import { routes } from 'virtual:emberkit-routes';

render(App, document.getElementById('app')!, {
  routes,
  viewTransitions: true,
});

Également exportés : supportsViewTransitions, withViewTransition, initViewTransitions, navigateWithViewTransition et navigate(..., { viewTransition: true }).

Guide complet : View Transitions.

Middleware Dev API

En développement, transférez /api et /api/* vers un handler Node ou vers des routes par fichier sous src/routes/_api/.

Option A — config :

// emberkit.config.ts
export default defineConfig({
  devApi: {
    handler: './src/server/api-router.node.ts',
    export: 'handleApiRequestNode',
  },
});

Option B — plugin Vite explicite (même comportement) :

import { devApiPlugin, emberkitVitePlugin } from '@emberkit/core/vite-plugin';

plugins: [
  devApiPlugin({
    handler: './src/server/api-router.node.ts',
    export: 'handleApiRequestNode',
  }),
  emberkitVitePlugin(),
];

Si devApi n'est pas défini et que vous avez des routes src/routes/_api/*, le routage API par fichier s'active automatiquement.

Détails : Dev API.

sqlRawPlugin

Importez des fichiers SQL comme chaînes au build (utile pour les migrations sur Cloudflare Workers, où il n'y a pas de filesystem) :

import migration from '../migrations/001_init.sql?raw';
import { sqlRawPlugin, emberkitVitePlugin } from '@emberkit/core/vite-plugin';

plugins: [sqlRawPlugin(), emberkitVitePlugin()];

Améliorations d'hydratation

  • Inputs : data-ek-bind sur <input>, <textarea> et <select> synchronise .value ; les boutons peuvent lier disabled.
  • SSR + listes async : L'hydratation ne re-rend pas les listes .map() quand un signal se met à jour. Voir Listes dynamiques après SSR.

Correctifs plugin Vite (0.8.0)

  • emberkit.config.ts est transpilé avec esbuild quand le plugin charge les options (corrige devApi qui ne s'appliquait pas sous Node simple).
  • Le middleware SSR en dev ignore les requêtes /api pour qu'elles ne soient pas rendues en pages HTML.
  • La correspondance de préfixe API accepte /api et /api/* (pas seulement /api/... avec un chemin final).

CLI 1.0.0

La version majeure du CLI s'aligne sur core 0.8.0. Les templates de scaffold fixent des plages de dépendances compatibles. Pas de changements breaking de commandes CLI au-delà de l'alignement des versions.

Checklist de migration

  1. Mettez à jour les dépendances : @emberkit/core@^0.8.0, @emberkit/cli@^1.0.0, optionnel @emberkit/icons@^6.0.0 / @emberkit/ui@^6.0.0.
  2. Supprimez les shims locaux si vous avez copié vite.dev-api-plugin.ts ou vite-sql-raw.ts depuis d'anciennes apps.
  3. Ajoutez devApi ou devApiPlugin pour les routes API locales.
  4. Activez viewTransitions: true dans render() et retirez les scripts view-transition custom s'ils étaient dupliqués.
  5. Pour les pages SSR avec listes chargées côté client, suivez le guide d'hydratation pour les listes dynamiques.

Prochaines étapes