8.71.0 release (2026-01-07)
Total recipe count: 5095
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.5
Removed Artifacts
- rewrite-comprehension
New Recipes
- io.moderne.hibernate.MigrateToHibernate72: This recipe will apply changes commonly needed when migrating to Hibernate 7.2.x.
- io.moderne.java.spring.boot4.AddModularStarters: Add Spring Boot 4.0 starter dependencies based on package usage. 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.cloud20251.SpringCloudProperties_2025_1: Migrate properties found in
application.propertiesandapplication.ymlfor Spring Cloud 2025.1 (Oakwood). This includes the stubrunner property prefix migration fromstubrunner.tospring.cloud.contract.stubrunner.. - io.moderne.java.spring.cloud20251.UpgradeSpringCloud_2025_1: Upgrade to Spring Cloud 2025.1 (Oakwood). This release is based on Spring Framework 7 and Spring Boot 4. Each Spring Cloud project has been updated to version 5.0.0.
- io.moderne.java.spring.security7.ModularizeSpringSecurity7: Spring Security Core was modularized in version 7, deprecated classes that are still a crucial part of some applications are moved to
spring-security-access. - org.openrewrite.featureflags.quarkus.RemoveGetInt: Replace
getInt()invocations forfeatureKeywithreplacementValue, and simplify constant if branch execution. - org.openrewrite.featureflags.quarkus.RemoveGetString: Replace
getString()invocations forfeatureKeywithreplacementValue, and simplify constant if branch execution. - org.openrewrite.featureflags.quarkus.RemoveIsEnabled: Replace
isEnabled()invocations forfeatureKeywithreplacementValue, and simplify constant if branch execution. - org.openrewrite.featureflags.quarkus.search.FindFeatureFlag: Find a Quarkus feature flag.
- org.openrewrite.gradle.RemoveRedundantSecurityResolutionRules: Remove
resolutionStrategy.eachDependencyrules that pin dependencies to versions that are already being managed by a platform/BOM to equal or newer versions. Only removes rules that have a security advisory identifier (CVE or GHSA) in thebecauseclause, unless a custom pattern is specified. - org.openrewrite.java.dependencies.RemoveRedundantDependencies: Remove explicit dependencies that are already provided transitively by a specified dependency. This recipe downloads and resolves the parent dependency's POM to determine its true transitive dependencies, allowing it to detect redundancies even when both dependencies are explicitly declared.
- org.openrewrite.java.migrate.io.AddInputStreamBulkReadMethod: Adds a
read(byte[], int, int)method toInputStreamsubclasses that only override the single-byteread()method. Java's defaultInputStream.read(byte[], int, int)implementation calls the single-byteread()method in a loop, which can cause severe performance degradation (up to 350x slower) for bulk reads. This recipe detectsInputStreamimplementations that delegate to another stream and adds the missing bulk read method to delegate bulk reads as well. - org.openrewrite.java.spring.boot2.UpgradeSpockToGroovy3: Upgrade Spock dependencies to a Groovy 3 compatible 2.0 variant when Groovy 3 is on the classpath.
- org.openrewrite.java.spring.boot4.AddSpringBootStarterFlyway: Adds the necessary Spring Boot 4.0 Flyway starter for autoconfiguration based on dependency usage.
- org.openrewrite.java.springdoc.UpgradeSpringDoc_3_0: Upgrade to SpringDoc v3.0.
- org.openrewrite.java.testing.junit5.HandleExternalResourceRules: Handles the usage of the ExternalResourceRule fields by adding the @ExtendWith(ExternalResourceSupport.class) annotation to the test class.
- org.openrewrite.java.testing.junit5.UpgradeToJUnit513: Upgrades JUnit 5 to 5.13.x and migrates all deprecated APIs.
- org.openrewrite.java.testing.testcontainers.ConvertToRawType: Convert parameterized types of a specified Java class to their raw types.
- org.openrewrite.json.CopyValue: Copies a JSON value from one key to another. The existing key/value pair remains unaffected by this change. Attempts to create the new key if it does not exist.
- org.openrewrite.kotlin.OrderImports: Groups and orders import statements. If a style has been defined, this recipe will order the imports according to that style. If no style is detected, this recipe will default to ordering imports in the same way that IntelliJ IDEA does.
- org.openrewrite.kubernetes.migrate.MigrateToAPIv1_33: This recipe will apply changes commonly needed when migrating to Kubernetes API v1.33.
- org.openrewrite.kubernetes.migrate.MigrateToAPIv1_34: This recipe will apply changes commonly needed when migrating to Kubernetes API v1.34.
- org.openrewrite.kubernetes.migrate.MigrateToAPIv1_35: This recipe will apply changes commonly needed when migrating to Kubernetes API v1.35.
Removed Recipes
- 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.testing.search.FindUnitTests: Produces a data table showing how methods are used in unit tests.
Changed Recipes
- org.openrewrite.csharp.dependencies.DependencyVulnerabilityCheck was changed:
- Old Options:
addMarkers: { type: Boolean, required: false }cvePattern: { type: String, required: false }
- New Options:
addMarkers: { type: Boolean, required: false }cvePattern: { type: String, required: false }minimumSeverity: { type: String, required: false }
- Old Options:
- org.openrewrite.json.AddKeyValue was changed:
- Old Options:
key: { type: String, required: true }keyPath: { type: String, required: true }prepend: { type: boolean, required: false }value: { type: String, required: true }
- New Options:
key: { type: String, required: true }keyPath: { type: String, required: true }prepend: { type: Boolean, required: false }value: { type: String, required: true }
- Old Options:
- org.openrewrite.nodejs.DependencyVulnerabilityCheck was changed:
- Old Options:
addMarkers: { type: Boolean, required: false }
- New Options:
addMarkers: { type: Boolean, required: false }cvePattern: { type: String, required: false }minimumSeverity: { type: String, required: false }
- Old Options:
- org.openrewrite.yaml.CopyValue was changed:
- Old Options:
newFilePath: { type: String, required: false }newKey: { type: String, required: true }oldFilePath: { type: String, required: false }oldKeyPath: { type: String, required: true }
- New Options:
createNewKeys: { type: Boolean, required: false }newFilePath: { type: String, required: false }newKey: { type: String, required: true }oldFilePath: { type: String, required: false }oldKeyPath: { type: String, required: true }
- Old Options: