Hypermedia starter kit now includes unstyled form components and flows for login and signup.
The Hypermedia Starter Kit has been updated for AdonisJS v7.
This update introduces base components for common UI elements such as forms, buttons, avatars, and layouts. These components are unstyled and focus on structure and behavior, leaving design decisions up to you.
The starter kit also includes minimal login and signup flows to help you get started quickly with authenticated applications.
You can learn more about the philosophy behind this direction in the article: Building from the Base Up: Rethinking Starter Kits in AdonisJS .
AdonisJS v7 apps now support VineJS v4 out of the box.
VineJS v4 brings several improvements, including support for standard schema, pick/omit helpers for schema re-use, support for defining optional and nullable unions, and a handful of bug fixes.
Existing validation logic will continue to work as before, but you can now take advantage of these new APIs and enhancements.
You can read more about the changes in VineJS v4 in its release notes .
Transformers provide asynchronous, structured serialization for complex data types like models. They also generate TypeScript types that can be used by your frontend clients to ensure end-to-end type-safety between server and client.
We recommend using transformers when building APIs or Inertia applications. Since this is a new concept in AdonisJS, make sure to check out the documentation to learn how to use them effectively.
Youch is the error page you see in the browser during development whenever an error occurs. Youch was initially written in 2016 and started to show rough edges.
Last year, we rewrote Youch from the ground up—making it lighter (on-disk size dropped from 1.3 MB to 700 KB), adding support for error causes, ensuring proper compatibility with ESM modules, and giving it a refreshed UI design.
| Old UI |
|---|
|
| New UI |
|---|
|
Distributed tracing has been something we've wanted to add for a very long time. However, we were reluctant to tie the core of the framework to the OpenTelemetry SDK. While OpenTelemetry is a great project, its SDKs introduce significant overhead and can lead to performance bottlenecks.
Recently, Node.js introduced Diagnostic channels , which are purpose-built for timing actions and tracing critical parts of your application, while being performant and very easy to use. Check out the following links to see how to create and use a diagnostic channel.
Support for tracing is currently in its early stages of development. We have yet to add support for Collectors (which will share traces with monitoring tools) and may also develop our own monitoring tool for use during development.
We've replaced ts-node with a new in-house package called ts-exec — a lightweight, modern JIT compiler for Node.js applications.
ts-node is no longer actively maintained and comes with unnecessary overhead for modern development needs. In contrast, ts-exec is built on top of SWC, a fast Rust-based TypeScript compiler, and targets Node.js 24 and above.
At just 15 KB and roughly 400 lines of code, ts-exec focuses on doing one thing well — executing TypeScript directly without writing compiled files to disk. It's used only during development and can be adopted by any Node.js project, not just AdonisJS.
This change brings faster startup times and a cleaner, more reliable TypeScript execution model for local development.
We've exposed all the internal TypeScript helper utilities used across AdonisJS packages through a single module.
These helpers are now available for both applications and third-party packages, making it easier to reuse the same type definitions and ensure consistency across your codebase.
You can learn more about the available helpers and how to import them in the documentation .
We've introduced Edge Markdown, a new package that lets you render Markdown content directly inside your Edge templates.
Built on top of the MDC (Markdown Components) format, Edge Markdown allows you to use Edge components within Markdown files, enabling a seamless mix of content and dynamic UI elements. It's ideal for documentation sites, blogs, and content-heavy applications that need the power of templating within Markdown.
You can learn more and see usage examples in the official documentation .
The router.makeUrl and router.makeSignedUrl have been deprecated in favor of the new type-safe
URL builder
. Also, the route helper inside Edge templates is deprecated in favor of the urlFor helper.
We've introduced a new type-safe URL builder to replace the deprecated router.makeUrl and router.makeSignedUrl methods.
The new URL builder eliminates the need to hardcode URLs across your app and ensures that all generated links stay in sync with your route definitions. By leveraging route names and TypeScript's type system, it catches broken or invalid links at compile time — before they reach production.
This addition makes URL generation safer, cleaner, and more maintainable across both APIs and Inertia applications.
You can learn more about the new URL builder in the documentation .
We've added support for auto-generated barrel files to help you organize your imports and keep your codebase tidy.
Barrel files are now automatically created for controllers, events, and listeners, allowing you to import them from a single, centralized location. In addition, you can define custom barrel files for your own entities using assembler hooks — giving you full control over how imports are structured across your project.
You can learn more about configuring and extending barrel files in the documentation .
The new type-safe URL builder and RPC client work only with named routes. This means that if a route doesn't have a name, you won’t be able to generate a URL for it.
Naming routes has always been a good practice, but we know it can be tedious to enforce and easy to forget. To simplify things, AdonisJS now automatically generates route names based on the controller and method handling the request.
In the rare case where two routes use the same controller method, an error will be displayed. When that happens, you'll need to explicitly assign a name to at least one of those routes.
The status pages
rendered by the global exception handler are no longer considered during API requests with Accept header asking for a JSON response. This was more of a bug fix that leads to a breaking change.
Validation errors have always been available under the inputErrors key. To remain backwards-compatible, we previously duplicated the same messages under an additional errors key, which unnecessarily increased session payload size.
In the latest version of the @adonisjs/session package, the deprecated errors key has been removed.
Assembler hooks were introduced to integrate Vite and run it within the same process as your AdonisJS application, allowing you to use hooks to bundle frontend assets when creating a production build.
We have revamped the entire API of assembler hooks, changed their names, introduced new hooks, and also changed the arguments they receive. In most cases, these changes will not impact you until you are maintaining a package and rely on the hooks.
However, the existing applications must update the adonisrc.ts file and make the following changes.
{
hooks: {
onBuildStarting: [() => import('@adonisjs/vite/build_hook')],
buildStarting: [() => import('@adonisjs/vite/build_hook')],
}
}
The following helpers have been removed from the @adonisjs/core/helpers export.
parse-imports package directlyuuids internally, instead of pulling in an external packagenew URL()import.meta.dirnameimport.meta.filenamestringHelpers.toUnixSlashStarting from October 2025, Node.js 24 will become the LTS version. Therefore, all framework packages have been updated to work with the features that are available in Node 24.
Moving along with the platform allows us to eliminate unwanted dependencies and utilize newer APIs, ultimately improving the framework's size, performance, and reducing the surface area for supply chain attacks.
Before creating a new v7 app, ensure you are running Node.js 24 or above.
node -v
# v24.8.0