8.69.0 release (2025-12-16)
Total recipe count: 5116
info
This changelog only shows what recipes have been added, removed, or changed. OpenRewrite may do releases that do not include these types of changes. To see these changes, please go to the releases page.
Corresponding CLI version
- Stable CLI version
v3.53.2 - Staging CLI version:
v3.54.1
New Artifacts
- rewrite-ai
New Recipes
- io.moderne.ai.FindAgentsInUse: Scans codebases to identify usage of AI agents by looking at the agent configuration files present in the repository.
- io.moderne.ai.FindLibrariesInUse: Scans codebases to identify usage of AI services. Detects AI libraries across Java dependencies. Useful for auditing and understanding AI integration patterns.
- io.moderne.ai.FindModelsInUse: Scans codebases to identify usage of Large Language Models (LLMs). Detects model references and configuration patterns across Java classes, properties files, YAML configs... Useful for identifying model usage.
- io.moderne.java.spring.boot.AddSpringBootApplication: Adds a
@SpringBootApplicationclass containing a main method to bootify your Spring Framework application. - io.moderne.java.spring.boot4.AddAutoConfigureMockMvc: Adds
@AutoConfigureMockMvcannotation to classes annotated with@SpringBootTestthat useMockMvc. - io.moderne.java.spring.boot4.AdoptJackson3: Adopt Jackson 3 which is supported by Spring Boot 4 and Jackson 2 support is deprecated.
- io.moderne.java.spring.boot4.MigrateToModularStarters: Removes monolithic starters and adds the necessary Spring Boot 4.0 starter dependencies based on package usage. Spring Boot 4.0 has a modular design requiring explicit starters for each feature. This recipe detects feature usage via package imports and adds the appropriate starters. Note: Higher-level starters (like data-jpa) include lower-level ones (like jdbc) transitively, so only the highest-level detected starter is added for each technology.
- io.moderne.java.spring.boot4.ModuleStarterRelocations: Relocate types and packages for Spring Boot 4.0 modular starters.
- io.moderne.java.spring.framework.JaxRsToSpringWeb: Converts JAX-RS annotations such as
@Path,@GET,@POST, etc., to their Spring Web equivalents like@RestController,@RequestMapping,@GetMapping, etc. - io.moderne.java.spring.framework.MigrateDefaultResponseErrorHandler: Migrates overridden
handleError(ClientHttpResponse response)methods to the new signaturehandleError(URI url, HttpMethod method, ClientHttpResponse response)in classes extendingDefaultResponseErrorHandler. The old single-argument method was removed in Spring Framework 7.0. - io.moderne.java.spring.framework.ModularSpringFrameworkDependencies: Adds Spring Framework modular dependencies based on package usage, replacing legacy monolithic
org.springframework:spring. - io.quarkus.updates.core.quarkus331.AddExtensionsTrueToQuarkusMavenPlugin: Add
true to the quarkus-maven-plugin configuration if not already present. - io.quarkus.updates.core.quarkus331.CoreUpdate331:
- org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate60: This recipe will migrate any existing dependencies on
com.vladmihalcea:hibernate-typestoio.hypersistence:hypersistence-utils-hibernate-60. This migration will include the adjustment fromcom.vladmihalceatoio.hypersistence.utilspackage name. - org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate62: This recipe will migrate any existing dependencies on
io.hypersistence:hypersistence-utils-hibernate-60toio.hypersistence:hypersistence-utils-hibernate-62. - org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate63: This recipe will migrate any existing dependencies on
io.hypersistence:hypersistence-utils-hibernate-62toio.hypersistence:hypersistence-utils-hibernate-63. - org.openrewrite.java.jackson.Jackson3JsonNodeFieldIterators:
JSONNodefields are usingCollectionsinstead ofIteratorsinge Jackson 3. To mimic Jackson 2s behavior an additional call toCollection#iterator()is needed. - org.openrewrite.java.jackson.SimplifyJacksonExceptionCatch: In Jackson 3,
JacksonExceptionand its subtypes extendRuntimeException. This recipe simplifies multi-catch clauses by removing Jackson exception types whenRuntimeExceptionis also caught, since catching both is redundant. For example,catch (JacksonException | RuntimeException e)becomescatch (RuntimeException e). - org.openrewrite.java.jackson.UpdateSerializationInclusionConfiguration: In Jackson 3,
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)is no longer supported and should be replaced bychangeDefaultPropertyInclusion()for bothvalueInclusionandcontentInclusion. - org.openrewrite.java.jackson.UseFormatAlignedObjectMappers: Replace wrapping
ObjectMappercalls with their format aligned implementation. - org.openrewrite.java.recipes.RemoveImportBeforeAddImport: Reorders
maybeAddImportandmaybeRemoveImportcalls so that imports are removed before new imports are added. This ordering prevents potential conflicts when the import being added and the import being removed resolve to the same simple class name. - org.openrewrite.java.spring.boot4.MigrateAutoconfigurePackages: Migrate to new packages used for autoconfiguration by Spring Boot 4.0 modules.
- org.openrewrite.java.testing.cleanup.KotlinTestMethodsShouldReturnUnit: Kotlin test methods annotated with
@Test,@ParameterizedTest,@RepeatedTest,@TestTemplateshould haveUnitreturn type. Other return types can cause test discovery issues, and warnings as of JUnit 5.13+. This recipe changes the return type toUnitand removesreturnstatements. - org.openrewrite.javascript.change-import: Changes an import from one module/member to another, updating all type attributions.
- org.openrewrite.javascript.cleanup.add-parse-int-radix: Adds the radix parameter (base 10) to
parseInt()calls that are missing it, preventing potential parsing issues. - org.openrewrite.javascript.cleanup.async-callback-in-sync-array-method: Detects async callbacks passed to array methods like .some(), .every(), .filter() which don't await promises. This is a common bug where Promise objects are always truthy.
- org.openrewrite.javascript.cleanup.order-imports: Sort imports by category and module path. Categories: side-effect, namespace, default, named, type. Within each category, imports are sorted alphabetically by module path. Named specifiers within each import are also sorted alphabetically.
- org.openrewrite.javascript.cleanup.prefer-optional-chain: Converts ternary expressions like
foo ? foo.bar : undefinedto use optional chaining syntaxfoo?.bar. - org.openrewrite.javascript.dependencies.add-dependency: Adds a new dependency to
package.jsonand updates the lock file by running the package manager. - org.openrewrite.javascript.dependencies.upgrade-transitive-dependency-version: Upgrades the version of a transitive dependency by adding override/resolution entries to
package.jsonand updates the lock file by running the package manager. - org.openrewrite.javascript.format.auto-format: Format JavaScript and TypeScript code using formatting rules auto-detected from the project's existing code style.
- org.openrewrite.javascript.search.DependencyInsight: Find direct and transitive npm dependencies matching a package name pattern. Results include dependencies that either directly match or transitively include a matching dependency.
- org.openrewrite.maven.cleanup.ExplicitDependencyVersion: Add explicit dependency versions to POMs for reproducibility, as the
LATESTandRELEASEversion keywords are deprecated. - org.openrewrite.micrometer.MicrometerBestPractices: This recipe will apply a set of best practice refactorings for Micrometer, like adopting
Observationsinstead ofTimers. - org.openrewrite.node.dependency-vulnerability-check: This software composition analysis (SCA) tool detects and upgrades dependencies with publicly disclosed vulnerabilities. This recipe both generates a report of vulnerable dependencies and upgrades to newer versions with fixes. This recipe by default only upgrades to the latest patch version. If a minor or major upgrade is required to reach the fixed version, this can be controlled using the
maximumUpgradeDeltaoption. Vulnerability information comes from the GitHub Security Advisory Database. - org.openrewrite.node.migrate.tls.replace-internal-modules: Replace deprecated internal TLS module imports
require('node:_tls_common')andrequire('node:_tls_wrap')with the publicnode:tlsmodule. - org.openrewrite.okhttp.UpgradeMockWebServer3: Migrate from the legacy
mockwebserverartifact tomockwebserver3core module without JUnit dependency. - org.openrewrite.okhttp.UpgradeMockWebServer3JUnit4: Migrate from the legacy
mockwebserverartifact tomockwebserver3-junit4with JUnit 4 integration. - org.openrewrite.okhttp.UpgradeMockWebServer3JUnit5: Migrate from the legacy
mockwebserverartifact tomockwebserver3-junit5with JUnit 5 integration.
Removed Recipes
- io.moderne.java.spring.boot3.AddSpringBootApplication: Adds a
@SpringBootApplicationclass containing a main method to bootify your Spring Framework application. - org.openrewrite.OrderImports: Sort top-level imports alphabetically within groups: no qualifier, asterisk, multiple, single.
- org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.0: This recipe will migrate any existing dependencies on
com.vladmihalcea:hibernate-typestoio.hypersistence:hypersistence-utils-hibernate-60. This migration will include the adjustment fromcom.vladmihalceatoio.hypersistence.utilspackage name. - org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.2: This recipe will migrate any existing dependencies on
io.hypersistence:hypersistence-utils-hibernate-60toio.hypersistence:hypersistence-utils-hibernate-62. - org.openrewrite.hibernate.MigrateToHypersistenceUtilsHibernate6.3: This recipe will migrate any existing dependencies on
io.hypersistence:hypersistence-utils-hibernate-62toio.hypersistence:hypersistence-utils-hibernate-63. - org.openrewrite.micrometer.UpgradeMicrometer: This recipe will apply changes commonly needed when migrating Micrometer.
Changed Recipes
- org.openrewrite.java.migrate.util.UseEnumSetOf was changed:
- Old Options:
None
- New Options:
convertEmptySet: { type: Boolean, required: false }
- Old Options: