Grails 7 – everything you need to know

Grails 7, launched on 18 October 2025, is a major update for the framework, bringing modern tools and improved efficiency for enterprise web development. Built on Java 17, Spring Boot 3.5, and Jakarta EE, it ensures compatibility with the latest technologies while improving security and performance. Key highlights include:
- Java 17+ support (up to Java 23) with features like Sealed Classes and Virtual Threads.
- Containerised testing using Testcontainers for consistent environments.
- SBOM generation for better supply chain security.
- Transition from
javax.*tojakarta.*for Jakarta EE 10 compliance. - Optimised build system with Gradle 8.14.3 for faster and parallel builds.
- New tools for modernising legacy systems and building cloud-native applications.
If you’re upgrading from Grails 6, you’ll need to update dependencies, adopt Jakarta namespaces, and adjust your testing setup. These changes make Grails 7 a strong choice for scalable, secure, and efficient enterprise applications.
New Features and Improvements in Grails 7
Grails 7 introduces a range of updates designed to enhance enterprise development, focusing on performance, compatibility, and developer productivity.
Java 17 and Spring Boot 3.5 Integration
Grails 7 now requires Java 17, aligning with Spring Framework 6.2.14 and Spring Boot 3.5.8. This upgrade brings modern Java features like Sealed Classes, Pattern Matching, and Text Blocks. With Spring Boot 3.5, developers benefit from improved startup times, better memory usage, and enhanced observability through Micrometer Tracing.
The framework also completes the transition from the legacy javax.* namespace to jakarta.*, ensuring full compatibility with Jakarta EE 10. Additionally, Grails 7 adopts Groovy 4.0.29, which enhances performance and delivers cleaner code generation.
For those using Java 21, the integration with Spring Boot 3.5 unlocks Virtual Threads, offering a significant boost in throughput for I/O-heavy enterprise applications.
James Fredley remarked that this release “empowers developers with streamlined full-stack workflows and enhanced security and compliance”.
Beyond runtime enhancements, Grails 7 also modernises its build system, making development workflows more efficient.
Updated Build System with Gradle
The build process in Grails 7 is now fully optimised with Gradle 8.14.3. Tasks like FindMainTask are cacheable, meaning developers won’t face unnecessary recompilation when restarting with bootRun if no changes have been made. The system is fully parallel and lazy, improving build efficiency.
Dependency management is simplified with the introduction of a unified Bill of Materials (org.apache.grails:grails-bom), which also bolsters security.
According to the Apache Grails documentation: “The benefits of reproducible builds are well documented, but for Grails applications, some of the side effects include: Improved build times… Minimising rebuilds… [and] Improved security”.
Grails 7 reintroduces the exploded Gradle configuration, enabling better class reloading in multi-project setups. Additionally, Grails Forge now omits buildSrc/ and settings.gradle, streamlining project structures.
These updates create a more efficient development environment while laying the groundwork for improved testing and security features.
Improved Testing and SBOM Generation
Testing in Grails 7 is now more seamless thanks to containerised browser environments powered by Testcontainers and the Geb Grails Plugin. By transitioning from GebSpec to ContainerGebSpec, developers no longer need to manually manage WebDriver binaries or browser versions. Instead, the testing environment is automatically provisioned within a container.
James Fredley highlighted that “this setup eliminates the need for managing browser versions and ensures consistent test environments”.
On the security front, Grails 7 automatically generates a Software Bill of Materials (SBOM) for all published binary JAR files. This feature provides greater transparency around dependencies, addressing supply chain security concerns critical for enterprise applications.
Additional productivity enhancements include the new @Scaffold annotation for Controllers and Services, which reduces boilerplate code, and the integration of the external configuration plugin directly into the framework’s core.
Migrating from Grails 6 to Grails 7

Grails 6 vs Grails 7: Key Technical Differences and Upgrade Requirements
If you’re planning to transition to Grails 7 to take advantage of its updated features and performance improvements, there are some key steps and adjustments you’ll need to make. The migration process involves updating your Java runtime, revising dependencies, and modifying namespaces. Fortunately, Grails provides tools to simplify this transition.
Migration Steps and Best Practices
Start by upgrading your project to Java 17. Update the gradle.properties file to use a unified grailsVersion property, removing individual properties like gormVersion or grailsGradlePluginVersion. Additionally, you’ll need to change the artifact group ID from org.grails to org.apache.grails. To save time, you can use the rename_gradle_artifacts.sh script, available in the grails-core repository. Run the script with the following command:
./rename_gradle_artifacts.sh -l my/project/location. This will automatically update the necessary Gradle files.
One of the most significant changes is the migration to Jakarta EE. The javax.* package has been replaced with jakarta.*, affecting servlets, persistence, and validation. If you’re using dependencies that haven’t yet transitioned, you can apply the com.netflix.nebula.jakartaee-migration plugin in your build.gradle file. This plugin will transform legacy dependencies during the build process.
For Groovy 4 compatibility, note that primitive boolean properties now generate only isProperty() methods. Update your method calls to reflect this change or enforce Groovy 4 compatibility using a Gradle resolutionStrategy.
Functional testing has also been updated. Tests now require ContainerGebSpec and a container runtime such as Docker or OrbStack in your development and CI environments.
If you’re using Ehcache with Hibernate, you’ll need to update the factory_class configuration to jcache and include the org.ehcache:ehcache dependency with the ehcache-jakarta capability. For those using the H2 database, review your schema definitions carefully, as Grails 7 enforces stricter rules around reserved keywords.
To provide a clear overview of the migration impacts, the table below summarises the key differences between Grails 6 and Grails 7.
Grails 6 vs Grails 7 Comparison
| Feature | Grails 6 | Grails 7 |
|---|---|---|
| Minimum Java Version | 11 | 17 (LTS) |
| Groovy Version | 3.x | 4.0.29 |
| Spring Boot Version | 2.7.x | 3.5.8 |
| Spring Framework | 5.3.x | 6.2.14 |
| Gradle Version | 7.6.2 | 8.14.3 |
| Package Namespace | javax.* | jakarta.* |
| Artifact Group ID | org.grails | org.apache.grails |
| Micronaut Integration | Parent Context (Default) | Optional Plugin (grails-micronaut) |
| Geb Testing | WebDriver Binaries | Containerised (Testcontainers) |
Another important change is that Micronaut is no longer the default parent application context. If you want to use Micronaut features in Grails 7, you’ll need to explicitly include the grails-micronaut plugin and define a micronautPlatformVersion property. This change gives developers more flexibility in how they integrate Micronaut.
Additionally, the Asset Pipeline plugin has moved to cloud.wondrify:asset-pipeline-grails. Ensure you’re using version 5.0.12 or higher for compatibility. Lastly, the grails-web-fileupload library has been removed entirely; you should now rely on your servlet container’s built-in multipart support.
Using Grails 7 for Enterprise Development
Grails 7 tackles the real-world challenges businesses face when developing enterprise software. Built on Spring Boot 3.5 and Spring Framework 6.2, it provides a solid, cloud-ready platform designed to handle complex business needs. Thanks to its convention-over-configuration approach, developers can focus on solving business problems instead of wrestling with boilerplate code.
Building SaaS and Cloud-Based Solutions
Grails 7 is well-suited for creating modern SaaS and cloud-native applications. With Java 17, it delivers noticeable performance improvements, especially in high-scale environments. The framework simplifies handling environment-specific configurations across development, staging, and production, making cloud deployments smoother. This results in a smaller build footprint and easier container management.
GORM (Grails Object Relational Mapping) supports multiple data sources such as SQL via Hibernate, MongoDB, and Neo4j, which makes it easier to design complex, multi-tenant SaaS architectures. Additionally, Grails 7 introduces reproducible builds by using the SOURCE_DATE_EPOCH environment variable. This ensures identical build outputs, no matter the environment – a critical feature for meeting enterprise-level security standards.
Modernising Legacy Applications
Grails 7 isn’t just about building new systems; it’s also a powerful tool for modernising legacy applications. Modernising older systems is often challenging, with nearly 79% of such projects failing due to poor planning or insufficient expertise. Grails 7 offers a safer path forward, focusing on incremental refactoring rather than risky, large-scale rewrites.
Its migration tools ensure compatibility with modern enterprise application servers and cloud-native environments. For dependencies that haven’t been updated, the gradle-jakartaee-migration-plugin automatically converts legacy packages during the build process.
Take Hermes, for example: the company migrated its business-critical applications to a Jakarta EE runtime in September 2025, achieving a 30% boost in performance alongside significant cost savings. Similarly, BMW Group successfully modernised its enterprise Java systems after Oracle discontinued commercial support for GlassFish, ensuring their systems remained stable and compliant. These examples show that, while modernisation can be complex, a well-planned approach can deliver tangible benefits.
Full-Stack Development with Grails and Tucanoo Solutions
Grails 7 streamlines full-stack development, making it more efficient than ever. By integrating frameworks like Spring Boot, Hibernate, and Jakarta EE 10, it provides a unified environment where full-stack teams can work seamlessly across the application stack. Its standard directory structure (e.g., grails-app/controllers, domain, services) and dynamic GORM methods for CRUD operations cut down on repetitive coding, letting developers focus on what really matters – business logic.
Companies like Tucanoo Solutions take advantage of these features to deliver tailored software solutions, including SaaS applications and legacy system upgrades. Grails 7 also addresses modern security and compliance needs with built-in CSRF protection and automatic SBOM generation for all published jars. Plus, containerised testing with ContainerGebSpec ensures consistent results across different environments, reducing the risk of environment-specific issues.
Grails 7 isn’t just a framework – it’s a toolkit for building efficient, scalable, and secure enterprise solutions.
Conclusion
Main Benefits of Adopting Grails 7
Grails 7 brings a wealth of improvements, built on a modern tech stack that includes Java 17, Spring Boot 3.5.8, and Hibernate 6. By aligning with the latest Jakarta EE standards, it simplifies development by cutting down on boilerplate code. Its enhanced containerised testing ensures consistent environments using Testcontainers, making testing smoother and more reliable. On top of that, features like automatic CSRF protection and built-in SBOM generation address critical enterprise needs without adding complexity. The removal of Micronaut dependencies has also led to smaller build sizes, streamlining deployments.
“Grails aims to address those concerns and legitimize rapid application development (RAD) for the enterprise.” – Jason Rudolph, Software Engineer
Since achieving Apache Top-Level Project status in October 2025, Grails has solidified its reputation as a stable, community-driven framework. Its support for GORM across various databases – including SQL, MongoDB, and Neo4j – makes it a flexible choice for both greenfield SaaS projects and legacy system modernisation. This versatility ensures that enterprises can confidently adopt Grails 7 for a wide range of applications.
How Tucanoo Solutions Can Help
Tucanoo Solutions is here to help you unlock the full potential of Grails 7. Transitioning to its advanced features, such as Java 17, Spring Boot 3.5 integration, and updated namespaces, can be complex without the right expertise. Tucanoo specialises in Grails consultancy and bespoke software development, ensuring your migration is smooth and efficient.
Whether you’re creating cloud-native SaaS applications, modernising legacy systems, or need comprehensive full-stack development support, Tucanoo Solutions provides tailored guidance. Their deep experience with Spring Boot, containerised testing architectures, and enterprise-grade security ensures your Grails 7 projects are not only robust but also scalable to meet future demands.
If you want to discuss further, we offer a free upgrade assessment.
FAQs
What are the main steps to upgrade from Grails 6 to Grails 7?
Upgrading from Grails 6 to Grails 7 is a multi-step process that ensures your application remains compatible while benefiting from the newest features. Start by updating your development environment. You’ll need Java 17 or later, as this is the minimum requirement for Grails 7. Then, update your build tools: switch to Gradle 8 and Groovy 4, and adjust the Grails and Gradle plugin versions in your gradle.properties file.
Next, align your core dependencies. Upgrade Spring Boot to 3.4.x, Spring Framework to 6.2.x, and move to GORM 9.x. As Grails 7 adopts the Jakarta EE namespace, you’ll need to replace any javax.* imports with their jakarta.* counterparts. Don’t forget to review your configuration files, such as application.yml, and update any settings that are no longer supported.
Once these updates are in place, run a complete build and execute your test suite to catch any breaking changes. Be prepared to update or refactor code where APIs have been removed or altered. Also, verify that any custom plugins or extensions are fully compatible with Grails 7. After thorough testing, deploy your application with the updated runtime to enjoy enhanced performance and the latest features.
What security enhancements does Grails 7 offer for enterprise applications?
Grails 7 raises the bar for enterprise security with a suite of powerful upgrades. By incorporating the latest versions of Java 17+, Groovy 4, Spring Boot 3.5, and Spring Framework 6.2, it ensures applications benefit from the most recent security patches and fortified default configurations. These updated dependencies provide a strong defence against new and evolving security threats.
One standout feature is the automatic generation of a Software Bill of Materials (SBOM) for every build. This allows development teams to keep track of approved dependencies and pinpoint vulnerabilities early in the development cycle. On top of that, the framework supports reproducible builds, guaranteeing consistent and secure delivery of artefacts.
Grails 7 also enhances its Spring Security integration with an updated plugin. This plugin comes with pre-configured defaults for authentication, authorisation, CSRF protection, and secure password management. These features not only make it easier to implement strong security protocols but also allow for full customisation to comply with specific enterprise requirements.
What are the key advantages of using Grails 7 for cloud-native development?
Grails 7 is built on a Spring Boot foundation designed specifically for cloud-native development. This makes it simpler to build, deploy, and scale applications in today’s cloud-driven world. It comes with native support for containerised deployments, health checks, externalised configuration, and smooth integration with platforms like Kubernetes or other cloud services.
The framework brings greater adaptability with Micronaut-style auto-configuration. This feature allows developers to adjust or disable specific elements, which helps cut down start-up times and memory usage – perfect for microservices or serverless setups. Its extensive plugin library and the built-in GORM data-access layer make creating reliable and scalable solutions straightforward, with compatibility for databases such as SQL, MongoDB, and Neo4j.
Grails 7 provides comprehensive tools for managing the full lifecycle of cloud-native applications. From local development to deploying on platforms like AWS, Azure, or Google Cloud, it has you covered. Features like convention-over-configuration, Groovy-powered DSLs, and full-stack tools help speed up development while ensuring your codebase stays organised, maintainable, and easy to test.
