vite-ember-ssr

raw JSON →
0.1.0-alpha.13 verified Mon Apr 27 auth: no javascript deprecated

A Vite plugin and SSR/SSG runtime for Ember.js applications using HappyDOM instead of FastBoot. Current version is 0.1.0-alpha.13 (pre-release). Released as experimental alpha with frequent breaking changes. Key differentiators: no FastBoot, no VM sandbox, supports both SSR and SSG modes (including combined), uses HappyDOM for browser environment, requires compatless Embroider setup. Node 22+ and Vite 6+ required.

error ERR_REQUIRE_ESM: require() of ES Module /path/to/vite-ember-ssr/vite-plugin.mjs from /path/to/vite.config.js not supported.
cause Using require() to load an ESM-only package.
fix
Use import syntax in vite.config.mjs or set type:module in package.json.
error Cannot find module 'vite-ember-ssr/vite-plugin' or its corresponding type declarations.
cause Importing from wrong path or package not installed.
fix
Install vite-ember-ssr as devDependency and import from 'vite-ember-ssr/vite-plugin'.
error Error: The current Ember application uses @embroider/compat which is not supported by vite-ember-ssr.
cause Using classic Ember compat mode.
fix
Remove @embroider/compat and ember-cli-build.js. Ensure app is compatless.
error TypeError: config.environment is not a function or module not found.
cause config/environment must be a direct ES module import, not using @embroider/config-meta-loader.
fix
Replace import config from './config/environment' and ensure it's a standard module export.
breaking Requires Node 22+ and Vite 6+. Older versions of Node or Vite will not work.
fix Upgrade Node to 22+ and Vite to ^6.0.0 || ^7.0.0.
breaking Import paths changed: plugin exports from 'vite-ember-ssr/vite-plugin', server from 'vite-ember-ssr/server'. Root import is not available.
fix Use import { emberSsr } from 'vite-ember-ssr/vite-plugin' and import { render } from 'vite-ember-ssr/server'.
deprecated All versions are alpha/pre-release. APIs may break without notice. Not suitable for production.
fix Wait for stable release or pin exact version. Monitor changelog.
gotcha The package is experimental. No semantic versioning during alpha. Breaking changes in minor/patch bumps are expected.
fix Pin to exact version in package.json. Do not use ranges.
gotcha Must use compatless Embroider mode. Classic Ember or @embroider/compat setups are not supported.
fix Migrate Ember app to compatless mode (remove ember-cli-build.js, classicEmberSupport, etc.).
npm install vite-ember-ssr
yarn add vite-ember-ssr
pnpm add vite-ember-ssr

Minimal Vite config for SSR with Ember via vite-ember-ssr.

// vite.config.mjs
import { defineConfig } from 'vite';
import { extensions, ember } from '@embroider/vite';
import { babel } from '@rollup/plugin-babel';
import { emberSsr } from 'vite-ember-ssr/vite-plugin';

export default defineConfig({
  plugins: [
    ember(),
    babel({ babelHelpers: 'runtime', extensions }),
    emberSsr(),
  ],
});