History
Development of minista began in 2021 as a tool for creating pages with React JSX and delivering clean HTML.
The aim was to bring the familiar JSX and editor completion used with Next.js to static HTML development, while retaining control over the names, structure, and readability of the delivered files.
Table of Contents
- v0: Writing HTML with JSX
- v1: Practical use and challenges
- v2: Vite and esbuild
- v3: Align development and build
- v4: Vite plugins
- v5: Simplify setup and build
v0: Writing HTML with JSX
First Commit: 2021/03/21minista Logo (v0 ~ v2)
The first minista packaged a system that combined React's renderToStaticMarkup() with webpack to export static HTML from JSX.
It managed pages and shared elements as React components and output the resulting files as standard HTML.
v1: Practical use and challenges
Release: 2022/01/15The simple, extensible setup came into use in real website projects. However, in v0 and v1, webpack startup became slower as projects grew, sometimes taking more than ten seconds toward the end of development.
Each project required a function to convert pages to HTML, and components could not import CSS. Generating pages from API data and supporting Markdown were also challenges, leading to a redesign.
v2: Vite and esbuild
Release: 2022/04/12minista was rebuilt from scratch, replacing webpack with Vite and esbuild. Vite powered the development server and esbuild generated production static HTML, improving startup and build speed.
develop:v1-latest
9.1715s
develop:v2.0.0
0.6006s(-93.45%)
build:v1-latest
10.7899s
build:v2.0.0
5.9628s(-44.74%)
Example: { pages: 15, components: 38, css: 101KB, js: 319KB }
Page authoring was also refined, with data fetching and route generation through getStaticData(), plus Markdown and MDX support. v2.4 added Partial Hydration for running React in part of a page, and v2.7 added full-text search that runs entirely in the browser.
-
Rebuilding a React SSG with Vite and esbuild — minista v2 (Japanese)
-
SSG + Partial Hydration (partial React apps) — minista v2.4 (Japanese)
-
Implementing browser-only full-text search in an SSG — minista v2.7 (Japanese)
v3: Align development and build
Release: 2023/03/31minista Logo (v3)
The source code was rewritten while retaining the basic usage. Development displayed static HTML instead of an SPA, making previews closer to production. Production builds also moved from esbuild to Vite.
Features supporting HTML production and delivery were added, including image optimization, asset entry declarations, delivery page lists, and ZIP archive generation.
v4: Vite plugins
Release: 2026/03/15minista Logo (v4 ~)
minista integrated with Rolldown-based Vite and changed to providing all features as Vite plugins. Add the plugins you need to vite.config.ts.
Islands replaced the previous Partial Hydration feature. Add client:* to any JSX component to run it with React, with support for props and loading timing.
v5: Simplify setup and build
Release: In developmentA major refactor and additional features preserve the familiar development experience.
Central management of routes, pages, and assets through the Project Graph and asynchronous library loading made builds up to about 67% faster. Comparing v4.0.11 and v5 across six playgrounds with identical source and configuration reduced clean build times by up to 67.0%.
build:v4.0.11
702.98ms
build:v5
233.88ms(-66.73%)
2026/10/05: _default playground / clean build / median of 3 runs / Node.js v26.10.0 / macOS arm64
Using a Map for search dictionary lookups made search JSON index generation up to about 77 times faster. With synthetic data containing 1,000 pages and 10,000 vocabulary entries, the time decreased by about 98.7%. This measurement compares v5 before and after optimization and excludes DOM parsing and JSON serialization.
index:Before Map
5012.39ms
index:After Map
65.39ms(-98.70%)
2026/10/05: 1,000 pages / 10,000 vocabulary entries / 1,001,000 tokens / median of 3 runs / Node.js v26.10.0 / macOS arm64
Other refinements include editing html, head, and body through Layout, applying base to public paths, passing serializable values to Islands, and supporting multiple search outputs in pluginSearch.
The documentation site also became multilingual, making its content more accessible to English-speaking users.
APIs and settings in older articles apply to those versions. For current instructions, see Getting started.