8.67.0 release (2025-11-20)
Total recipe count: 5005
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.51.2 - Staging CLI version:
v3.51.3
New Artifacts
- rewrite-angular
- rewrite-javascript
- rewrite-react
New Recipes
- com.google.guava.InlineGuavaMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - io.moderne.devcenter.DependencyVulnerabilityCheck: Determine the current state of a repository relative to its vulnerabilities.
- io.moderne.java.spring.boot3.MigrateAbstractDiscoveredEndpointConstructor: The boolean-parameter constructor of
AbstractDiscoveredEndpointhas been deprecated in Spring Boot 3.4. This recipe transforms it to use the new constructor with anAccessparameter. - io.moderne.java.spring.boot3.MigrateAbstractExposableEndpointConstructor: The boolean-parameter constructor of
AbstractExposableEndpointhas been deprecated in Spring Boot 3.4. This recipe transforms it to use the new constructor with anAccessparameter instead of booleanenableByDefault. - io.moderne.java.spring.boot3.MigrateEndpointDiscovererConstructor: The 4-parameter constructor of
EndpointDiscovererhas been deprecated in Spring Boot 3.4. This recipe transforms it to use the new 5-parameter constructor with an additional Collection parameter. - io.moderne.java.spring.boot3.MigrateEntityManagerFactoryBuilderConstructor: The constructors of
EntityManagerFactoryBuilderhave been deprecated in Spring Boot 3.4. This recipe transforms them to use the new constructor with a Function parameter for property mapping. - io.moderne.java.spring.boot3.MigrateJmxEndpointDiscovererConstructor: The 4-parameter constructor of
JmxEndpointDiscovererhas been deprecated in Spring Boot 3.4. This recipe transforms it to use the new 5-parameter constructor with an additional Collection parameter. - io.moderne.java.spring.boot3.MigrateWebEndpointDiscovererConstructor: The 6-parameter constructor of
WebEndpointDiscovererhas been deprecated in Spring Boot 3.3. This recipe adds two new parameters (AdditionalPathsMapperandOperationFilter<WebOperation>) to the constructor and updates the Bean method signature to inject them asObjectProvidertypes. - io.moderne.java.spring.boot3.ResolveDeprecationsSpringBoot_3_3: Migrates Deprecations in the Spring Boot 3.3 Release. Contains: - Removal of
DefaultJmsListenerContainerFactoryConfigurer.setObservationRegistry- New parameter ofWebEndpointDiscovererconstructor - io.moderne.java.spring.boot3.SpringBoot34Deprecations: Migrate deprecated classes and methods that have been marked for removal in Spring Boot 4.0. This includes constructor changes for
EntityManagerFactoryBuilder,HikariCheckpointRestoreLifecycle, and various actuator endpoint discovery classes. - io.moderne.java.spring.boot4.ReplaceDeprecatedRequestMatcherProvider: Replaces the deprecated
org.springframework.boot.autoconfigure.security.servlet.RequestMatcherProviderwithorg.springframework.boot.actuate.autoconfigure.security.servlet.RequestMatcherProvider. The new interface adds anHttpMethodparameter to thegetRequestMatchermethod. - org.apache.logging.log4j.InlineLog4jApiMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - org.openrewrite.OrderImports: Sort top-level imports alphabetically within groups: no qualifier, asterisk, multiple, single.
- org.openrewrite.angular.search.FindAngularComponent: Locates usages of Angular components across the codebase including template elements and other references. If
componentNameisnull, finds all Angular components. - org.openrewrite.github.IsGitHubActionsWorkflow: Checks if the file is a GitHub Actions workflow file.
- org.openrewrite.gradle.search.EffectiveGradlePluginRepositories: Lists the Gradle plugin repositories that would be used for plugin resolution, in order of precedence. This includes Maven repositories defined in the settings.gradle pluginManagement section and build.gradle buildscript repositories as determined when the LST was produced.
- org.openrewrite.gradle.search.EffectiveGradleRepositories: Lists the Gradle project repositories that would be used for dependency resolution, in order of precedence. This includes Maven repositories defined in the Gradle build files and settings as determined when the LST was produced.
- org.openrewrite.java.jackson.UpgradeJackson_2_3_JsonGeneratorMethodRenames: Rename JsonGenerator methods that were renamed in 3.x (e.g.,
writeObject()towritePOJO(),getCurrentValue()tocurrentValue()). - org.openrewrite.java.jackson.UpgradeJackson_2_3_JsonNodeMethodRenames: Rename JsonNode methods that were renamed in 3.x (e.g.,
elements()tovalues(),fields()toentries()). - org.openrewrite.java.jackson.UpgradeJackson_2_3_JsonParserMethodRenames: Rename JsonParser methods that were renamed in 3.x (e.g.,
getTextCharacters()togetStringCharacters(),getCurrentValue()tocurrentValue()). - org.openrewrite.java.jackson.UpgradeJackson_2_3_RemoveModules: Remove Jackson modules such as
jackson-module-parameter-names,jackson-datatype-jdk8, andjackson-datatype-jsr310to depend onjackson-databindin Jackson 3.x. - org.openrewrite.java.migrate.AddLombokMapstructBindingMavenDependencyOnly: Add the
lombok-mapstruct-bindingwhen both MapStruct and Lombok are used, and the dependency does not already exist. Only to be called fromorg.openrewrite.java.migrate.AddLombokMapstructBindingto reduce redundant checks - org.openrewrite.java.migrate.guava.NoGuavaIterablesAll: Prefer
Collection.stream().allMatch(Predicate)overIterables.all(Collection, Predicate). - org.openrewrite.java.migrate.guava.NoGuavaPredicatesInstanceOf: Prefer
A.class::isInstanceoverPredicates.instanceOf(A.class). - org.openrewrite.java.migrate.jakarta.MigrateFastjsonForJakarta10: Update Fastjson to be compatible with Jakarta EE 10.
- org.openrewrite.java.migrate.jakarta.MigratePluginsForJakarta10: Update plugin to be compatible with Jakarta EE 10.
- org.openrewrite.java.migrate.javax.MigrateJaxBWSPlugin: Upgrade the JAXB-WS Maven plugin to be compatible with Java 11.
- org.openrewrite.java.recipes.RecipeClassesShouldBePublic: Ensures that classes extending Recipe are declared as public for proper visibility and accessibility.
- org.openrewrite.java.spring.batch.SpringBatch5To6Migration: Migrate applications built on Spring Batch 5.2 to the latest Spring Batch 6.0 release.
- org.openrewrite.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.
- org.openrewrite.java.spring.boot4.ReplaceMockBeanAndSpyBean: Replaces
@MockBeanand@SpyBeanannotations with@MockitoBeanand@MockitoSpyBean. - org.openrewrite.java.spring.doc.ApiInfoBuilderToInfo: Migrate SpringFox's
ApiInfoBuilderto Swagger'sInfo. - org.openrewrite.java.spring.doc.SecurityContextToSecurityScheme: Replace
ApiKey,AuthorizationScope, andSecuritySchemeelements with Swagger's equivalents. - org.openrewrite.java.spring.security7.UpgradeSpringSecurity_7_0: Migrate applications to the latest Spring Security 7.0 release. This recipe will modify an application's build files, make changes to deprecated/preferred APIs, and migrate configuration settings that have changes between versions.
- org.openrewrite.java.testing.testcontainers.AddTestcontainersAnnotations: Convert Testcontainers
@Rule/@ClassRuleto JUnit 5@Containerand add@Testcontainers. - org.openrewrite.javascript.migrate.es6.modernize-octal-escape-sequences: Convert old-style octal escape sequences (e.g.,
\0,\123) to modern hex escape sequences (e.g.,\x00,\x53) or Unicode escape sequences (e.g.,\u0000,\u0053). - org.openrewrite.javascript.migrate.es6.modernize-octal-literals: Convert old-style octal literals (e.g.,
0777) to modern ES6 syntax (e.g.,0o777). - org.openrewrite.javascript.migrate.es6.remove-duplicate-object-keys: Remove duplicate keys in object literals, keeping only the last occurrence (last-wins semantics).
- org.openrewrite.javascript.migrate.typescript.export-assignment-to-export-default: Converts TypeScript
export =syntax to ES moduleexport defaultsyntax for compatibility with ECMAScript modules. - org.openrewrite.node.migrate.buffer.replace-deprecated-slice: Replace deprecated
buffer.slice()calls withbuffer.subarray()for compatibility with Uint8Array.prototype.slice(). - org.openrewrite.node.migrate.crypto.replace-hash-constructor: Replace deprecated
new crypto.Hash(algorithm)constructor calls withcrypto.createHash(algorithm)andnew crypto.Hmac(algorithm, key)withcrypto.createHmac(algorithm, key)factory methods. - org.openrewrite.node.migrate.process.remove-usage-of-features-tls-underscore_constants: Remove references to deprecated
process.features.tls_*properties, replace withprocess.features.tls. - org.openrewrite.node.migrate.util.replace-util-extend: Replace deprecated
util._extend(target, source)calls withObject.assign(target, source)which preserves the mutation behavior. - org.openrewrite.node.migrate.util.replace-util-log: Replace deprecated
util.log()calls withconsole.log(). Note:util.log()included timestamps, butconsole.log()does not. - org.openrewrite.node.migrate.util.use-native-type-checking-methods: The
utilmodule's type-checking methods have been removed in Node 22. - org.openrewrite.react.search.FindPropUsage: Locates usages of a specific prop of a React component.
- org.openrewrite.react.search.FindReactComponent: Locates usages of React components across the codebase including JSX elements and other references. If
componentNameisnull, finds all React components. - org.openrewrite.staticanalysis.AnnotateRequiredParameters: Add
@NonNullto parameters of public methods that are explicitly checked fornulland throw an exception if null. By defaultorg.jspecify.annotations.NonNullis used, but through thenonNullAnnotationClassoption a custom annotation can be provided. When providing a customnonNullAnnotationClassthat annotation should be meta annotated with@Target(TYPE_USE). This recipe scans for methods that do not already have parameters annotated with@NonNullannotation and checks for null validation patterns that throw exceptions, such asif (param == null) throw new IllegalArgumentException(). - org.openrewrite.text.RemoveByteOrderMark: Removes UTF-8 byte order marks from the beginning of files.
The BOM character (U+FEFF) is generally unnecessary in UTF-8 files and can cause issues with some tools.
Removed Recipes
- ai.timefold.solver.migration.fork.TimefoldChangeDependencies: Migrate all Maven and Gradle groupIds and artifactIds from OptaPlanner to Timefold.
- ai.timefold.solver.migration.v8.AsConstraintRecipe: Use
penalize().asConstraint()andreward().asConstraint()instead of the deprecatedpenalize()andreward()methods. - ai.timefold.solver.migration.v8.ConstraintRefRecipe: Use
getConstraintRef()instead ofgetConstraintId()et al. - ai.timefold.solver.migration.v8.NullableRecipe: Removes references to null vars and replace them with unassigned values.
- ai.timefold.solver.migration.v8.RemoveConstraintPackageRecipe: Remove the use of constraint package from
asConstraint(package, name). - ai.timefold.solver.migration.v8.ScoreGettersRecipe: Use
score()instead ofgetScore()onScoreimplementations. - ai.timefold.solver.migration.v8.ScoreManagerMethodsRecipe: Use
explain()andupdate()instead ofexplainScore(),updateScore()andgetSummary(). - ai.timefold.solver.migration.v8.SingleConstraintAssertionMethodsRecipe: Use
penalizesBy/rewardsWith(String, int)instead ofpenalizesBy/rewardsWith(int, String)onSingleConstraintAssertiontests. - ai.timefold.solver.migration.v8.SolutionManagerRecommendAssignmentRecipe: Use recommendAssignment() instead of recommendFit().
- ai.timefold.solver.migration.v8.SolverManagerBuilderRecipe: Use
solveBuilder()instead of deprecated solve methods onSolveManager. - com.google.guava.InlineGuavaMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - io.moderne.java.spring.boot4.SpringBootProperties_4_0: Migrate properties found in
application.propertiesandapplication.yml. - org.apache.logging.log4j.InlineLog4jApiMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - org.openrewrite.java.spring.boot3.ReplaceMockBeanAndSpyBean: Replaces
@MockBeanand@SpyBeanannotations with@MockitoBeanand@MockitoSpyBean. - org.openrewrite.java.springdoc.ApiInfoBuilderToInfo: Migrate SpringFox's
ApiInfoBuilderto Swagger'sInfo. - org.openrewrite.java.springdoc.SecurityContextToSecurityScheme: Replace
ApiKey,AuthorizationScope, andSecuritySchemeelements with Swagger's equivalents.
Changed Recipes
- org.openrewrite.gradle.search.FindDependency was changed:
- Old Options:
artifactId: { type: String, required: true }configuration: { type: String, required: false }groupId: { type: String, required: true }
- New Options:
artifactId: { type: String, required: true }configuration: { type: String, required: false }groupId: { type: String, required: true }version: { type: String, required: false }versionPattern: { type: String, required: false }
- Old Options:
- org.openrewrite.csharp.dependencies.DependencyVulnerabilityCheck was changed:
- Old Options:
addMarkers: { type: Boolean, required: false }
- New Options:
addMarkers: { type: Boolean, required: false }cvePattern: { type: String, required: false }
- Old Options:
- org.openrewrite.java.dependencies.DependencyVulnerabilityCheck was changed:
- Old Options:
maximumUpgradeDelta: { type: UpgradeDelta, required: false }minimumSeverity: { type: String, required: false }overrideTransitive: { type: Boolean, required: false }scope: { type: String, required: false }
- New Options:
cvePattern: { type: String, required: false }maximumUpgradeDelta: { type: UpgradeDelta, required: false }minimumSeverity: { type: String, required: false }overrideTransitive: { type: Boolean, required: false }scope: { type: String, required: false }
- Old Options: