⚠️ Breaking Changes
Remember to check out the migration guide for step-by-step documentation on how to upgrade.
- Wasp now requires Node.js version >=v22.22.2 (previously >=v22.12.0) due to the March 2026 Node.js security releases. (#3989)
- In the
wasp buildoutput, the generated Docker image has been upgraded from Alpine 3.20 to Alpine 3.23. (#3989) - Upgraded the Zod version used for env validation to Zod v4. If you use custom env validation schemas, you may need to update them to be compatible with the latest Zod API. (#3879)
- HTML head tags specified in
app.headmust now be valid React JSX. (#3855) - Page routes are now loaded lazily by default. You can set
lazy: falseper-route to disable this behavior. (#3891)
🎉 New Features
- The Wasp TS config file (
*.wasp.ts) now supports async logic in the default export, enabling use cases like file-based routing and dynamic configuration. (#3900) - Wasp AI (
wasp new:ai) now accepts any model name string, letting the OpenAI API validate it. The interactive CLI still offers curated GPT-5 options for convenience. (#3904) - The
wasp.versionfield now accepts any valid npm-compatible version range (e.g.>=0.15.0 <0.22.0,~0.21.0,0.21.x) instead of only^x.y.z. (#3921) - Page routes are now lazy-loaded using React Router's
lazyproperty, greatly reducing the initial download size for apps with many routes. (#3891)
🐞 Bug fixes
wasp deploy flynow correctly computes Fly app basenames when the app name contains-clientor-server. (#3983)- Projects created with
wasp newwere missing their.gitignorefile. (#3870)
🔧 Small improvements
- The
wasp-configpackage is now installed from a local copy inside the project (.wasp/wasp-config/) instead of directly from the global Wasp data directory. This makes projects more self-contained and avoids issues with npm resolving paths outside the project. (#3861) REACT_APP_API_URLis now required when building the client for production (it no longer defaults to any value). In development mode, it still defaults to the local server URL. This prevents silently broken production deployments where the client can't reach the server. (#3740)- The
wasp()Vite plugin now enforces certain Vite config options that Wasp requires (e.g.base,envPrefix,build.outDir) and throws an error if the user tries to override them. (#3771) - Upgraded our internal
nodemailerdependency to v8.0.1 to address a possible security issue. (#3756) - In the Vite config, removing the
server.openfield will no longer open the browser onwasp start. (3831) - Wasp now validates that
vite.config.ts(orvite.config.js) exists in your project at compile time, and warns if it's missing thewaspplugin import. (#3863) - Wasp now prefixes env validation errors with the name of the field that failed the validation (#3876)
- Wasp now validates your
tsconfig.jsonbefore analyzing the rest of the code. If something is off, you'll get a clear error message as soon as possible (#3907) - Wasp now properly uses ANSI formatting in env validation errors (#3877)