8.66.1 release (2025-11-04)
Total recipe count: 4972
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.50.1 - Staging CLI version:
v3.50.1
New Recipes
- com.google.guava.InlineGuavaMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - io.moderne.java.spring.boot4.UpgradeSpringBoot_4_0: Migrate applications to the latest Spring Boot 4.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. This recipe will also chain additional framework migrations (Spring Framework, Spring Data, etc) that are required as part of the migration to Spring Boot 4.0.
- io.moderne.java.spring.framework.NullableSpringWebParameters: In Spring Boot 4, JSpecify's
@Nullableannotation should be used to indicate that a parameter can be null. This recipe adds@Nullableto parameters annotated with@PathVariable(required = false)or@RequestParam(required = false)and removes the now-redundantrequired = falseattribute. - org.apache.logging.log4j.InlineLog4jApiMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - org.openrewrite.github.MigrateSetupUvV6ToV7: Migrates
astral-sh/setup-uvfrom v6 to v7. Updates the action version and removes the deprecatedserver-urlinput. See the v7.0.0 release notes for breaking changes. - org.openrewrite.gradle.MigrateDependenciesToVersionCatalog: Migrates Gradle project dependencies to use the version catalog feature. Supports migrating dependency declarations of various forms:
Stringnotation:"group:artifact:version"Mapnotation:group: 'group', name: 'artifact', version: 'version'- Property references:
"group:artifact:$version"or"group:artifact:${version}"
The recipe will:
- Create a
gradle/libs.versions.tomlfile with version declarations - Replace dependency declarations with catalog references (e.g.,
libs.springCore) - Migrate version properties from
gradle.propertiesto the version catalog - Preserve project dependencies unchanged
Note: If a version catalog already exists, the recipe will not modify it.
- org.openrewrite.java.migrate.guava.NoGuavaCollections2Transform: Prefer
Collection.stream().map(Function)overCollections2.transform(Collection, Function). - org.openrewrite.java.migrate.guava.NoGuavaFunctionsCompose: Prefer
Function.compose(Function)overFunctions.compose(Function, Function). - org.openrewrite.java.migrate.guava.NoGuavaIterablesAnyFilter: Prefer
Collection.stream().anyMatch(Predicate)overIterables.any(Collection, Predicate). - org.openrewrite.java.migrate.guava.NoGuavaIterablesTransform: Prefer
Collection.stream().map(Function)overIterables.transform(Collection, Function). - org.openrewrite.java.migrate.guava.NoGuavaOptionalAsSet: Prefer
Optional.stream().collect(Collectors.toSet())overOptional.asSet(). - org.openrewrite.java.migrate.guava.NoGuavaPredicate: Change the type only where no methods are used that explicitly require a Guava
Predicate. - org.openrewrite.java.migrate.guava.NoGuavaPredicatesEqualTo: Prefer
Predicate.isEqual(Object)overPredicates.equalTo(Object). - org.openrewrite.java.migrate.guava.NoGuavaSetsFilter: Prefer
Collection.stream().filter(Predicate)overSets.filter(Set, Predicate). - org.openrewrite.java.migrate.jakarta.JettyUpgradeEE10: Update Jetty dependencies from EE9 to EE10, changing the groupId and artifactIds as needed.
- org.openrewrite.java.spring.PropertiesToKebabCaseProperties: Normalize Spring
application*.propertiesproperties to kebab-case. - org.openrewrite.java.spring.PropertiesToKebabCaseYaml: Normalize Spring
application*.{yml,yaml}properties to kebab-case. - org.openrewrite.java.spring.boot2.MigrateDatabaseCredentialsForToolProperties: Migrate null credentials.
- org.openrewrite.java.spring.boot2.MigrateDatabaseCredentialsForToolYaml: Migrate null credentials.
- org.openrewrite.java.spring.boot4.SpringBootProperties_4_0: Migrate properties found in
application.propertiesandapplication.yml. - org.openrewrite.java.spring.boot4.UpgradeSpringBoot_4_0: Migrate applications to the latest Spring Boot 4.0 release. This recipe will modify an application's build files, make changes to deprecated/preferred APIs.
- org.openrewrite.java.spring.framework.UpgradeSpringFramework_7_0: Migrate applications to the latest Spring Framework 7.0 release.
- org.openrewrite.java.spring.search.FindConfigurationProperties: Find all classes annotated with
@ConfigurationPropertiesand extract their prefix values. This is useful for discovering all externalized configuration properties in Spring Boot applications. - org.openrewrite.java.springdoc.ApiInfoBuilderToInfo: Migrate SpringFox's
ApiInfoBuilderto Swagger'sInfo. - org.openrewrite.java.springdoc.SecurityContextToSecurityScheme: Replace
ApiKey,AuthorizationScope, andSecuritySchemeelements with Swagger's equivalents. - org.openrewrite.java.testing.assertj.SimplifySequencedCollectionAssertions: Simplify AssertJ assertions on SequencedCollection by using dedicated assertion methods. For example,
assertThat(sequencedCollection.getLast())can be simplified toassertThat(sequencedCollection).last(). - org.openrewrite.staticanalysis.ReorderAnnotationAttributes: Reorder annotation attributes to be alphabetical. Positional arguments (those without explicit attribute names) are left in their original position.
- org.openrewrite.staticanalysis.ReplaceStringConcatenationWithStringValueOf: Replace inefficient string concatenation patterns like
"" + ...withString.valueOf(...). This improves code readability and may have minor performance benefits. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$FluxTimeoutFluxEmptyRecipe: Prefer
Flux#timeout(Duration, Publisher)over more contrived or less performant alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$MonoTimeoutDurationMonoEmptyRecipe: Prefer
Mono#timeout(Duration, Mono)over more contrived or less performant alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$MonoTimeoutDurationMonoJustRecipe: Prefer
Mono#timeout(Duration, Mono)over more contrived or less performant alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$MonoTimeoutDurationRecipe: Prefer
Mono#timeout(Duration, Mono)over more contrived or less performant alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$MonoTimeoutPublisherMonoEmptyRecipe: Prefer
Mono#timeout(Publisher, Mono)over more contrived or less performant alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$MonoTimeoutPublisherMonoJustRecipe: Prefer
Mono#timeout(Publisher, Mono)over more contrived or less performant alternatives. - tech.picnic.errorprone.refasterrules.ReactorRulesRecipes$MonoTimeoutPublisherRecipe: Prefer
Mono#timeout(Publisher, Mono)over more contrived or less performant alternatives.
Removed Recipes
- io.moderne.java.spring.security6.UpgradeSpringSecurity_6_4: Migrate applications to the latest Spring Security 6.4 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.logging.log4j.InlineMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table. - org.openrewrite.java.migrate.UpdateJakartaAnnotationsIfExistsForJakarta: Counteract the
jakarta.annotation-apiby updating tojakartanamespace - org.openrewrite.java.migrate.UpdateJakartaAnnotationsIfForJavax: Counteract the
jakarta.annotation-apiby updating tojakartanamespace - org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods: Automatically generated recipes to inline method calls based on
@InlineMeannotations discovered in the type table.
Changed Recipes
- org.openrewrite.java.format.AutoFormat was changed:
- Old Options:
None
- New Options:
style: { type: String, required: false }
- Old Options:
- org.openrewrite.java.dependencies.DependencyVulnerabilityCheck was changed:
- Old Options:
maximumUpgradeDelta: { type: UpgradeDelta, required: false }overrideTransitive: { type: Boolean, required: false }scope: { type: String, required: false }
- New Options:
maximumUpgradeDelta: { type: UpgradeDelta, required: false }minimumSeverity: { type: String, required: false }overrideTransitive: { type: Boolean, required: false }scope: { type: String, required: false }
- Old Options: