Skip to content

Releases

All versions are published to Maven Central. This page mirrors the v4 releases — the full history including 3.x (Spring Boot 3) lives on GitHub.

4.0.0

October 26, 2026

First stable release of the 4.x line: Spring Boot 4.1, Jackson 3, RFC 9457 error responses and a rebuilt TypeScript client generator. Migration guide: https://commons-rest.rocketbase.io/migration-v4/

since 4.0.0-M5

  • upgraded to spring-boot 4.1.2, typescript-generator 4.2.1
  • openapi: still on the io.github.vpelikh springdoc fork (5.1.0 / swagger 4.0.6) - official springdoc 3.2.0 ships swagger-core 2.2.x and therefore jackson 2; swagger-core 3.0 (jackson 3) is on its release branch, the swap back to org.springdoc / io.swagger.core.v3 follows in 4.1 and is a pure coordinate change
  • @rocketbase/commons-rest-client dev tooling moved to vitest 5 - clears the tinypool / esbuild audit findings, runtime untouched
  • release workflow: tag is now created on the built commit (github.sha) instead of the default branch

4.x at a glance (vs 3.5.x)

  • requires spring-boot 4.x / spring framework 7 (java 17+ unchanged)
  • jackson 3: core + databind under tools.jackson.*, annotations stay at com.fasterxml.jackson.annotation; custom serializers move to ValueSerializer / ValueDeserializer
  • breaking error responses are problem details (RFC 9457, application/problem+json): message -> detail, new type / title / instance, fields stays as extension member - getMessage() bridge and @JsonAlias("message") ease the transition
  • nullability annotations switched to jspecify (org.jspecify.annotations.Nullable)
  • removed BaseRestResource / BaseController, QueryParamBuilder / QueryParamParser / UrlParts, EntityWithKeyValue / HasKeyValue / HasFirstAndLastName and the commons-rest-posthog module - see migration guide for replacements
  • BadRequestException stays first-class (old JAX-RS deprecation note dropped)
  • tsid: lowercase output, invalid ids raise TsidDecodeException (404) - opt-out via tsid.invalid.allowed=true; tsid-creator dependency removed (hypersistence-tsid only)
  • generator rebuilt on typescript-generator: zod schemas + @ZodSchema, react-query v5 hooks, enumValue support, custom-type-mappings / required-annotations properties, @NotEmpty + @NonNull variants mark fields required
  • breaking v5 infinite hooks with only a Pageable: useInfinite*(options) -> useInfinite*(filter, options)
  • regenerate every typescript client - folder layout unchanged, pre-M5 output does not compile
  • Nulls: notNull(Double), notNull(Collection), notEmpty(Collection/Map), two-level get(source, a, b)
  • ci: java matrix 17 / 21 / 25
  • new docs site: https://commons-rest.rocketbase.io

4.0.0-M5pre-release

September 18, 2026

  • upgraded to spring-boot 4.1.1 + springdoc fork 5.1.0 / swagger 4.0.6 - annotations artifact renamed to swagger-annotations (packages unchanged)
  • generator: fixed cross-folder imports - were ../../model, one level above src/
  • generator: zip download now runs the model generator - types.ts + zod-schemas.ts were missing from the archive and DTOs came out as java fqns
  • generator: PageableRequest now declares overrides - already used by the generated code
  • breaking v5 infinite hooks for @InfiniteHook methods with only a Pageable: useInfinite*(options) -> useInfinite*(filter, options) - hooks with own query fields unchanged
  • regenerate your typescript clients - folder layout stays the same
  • commons-lang3 now an explicit dependency - no longer pulled in by springdoc 5.x
  • ci: java matrix 17/21/25 (was 17/19)
  • TypeScriptCompilationTest generated from the empty OpenAPI bean and typechecked nothing - now fetches /v3/api-docs with a stricter tsconfig

4.0.0-M4pre-release

July 5, 2026

  • changed tsid output to lowercase (json + path-variables) - parsing stays case-insensitive
  • tsid: invalid ids in json bodies / conversions now raise TsidDecodeException (404) instead of silent null - opt-out via tsid.invalid.allowed=true
  • typescript-generator: @NotEmpty now marks fields required; also accepts spring @NonNull, jakarta @Nonnull + jspecify @NonNull - configurable via required-annotations property
  • generator: wired custom-type-mappings property (was documented but inactive), exposed zod-infer-type-export + zod-infer type-suffix as properties
  • Nulls: added notNull(Double), notNull(Collection), notEmpty(Collection/Map) + two-level get(source, a, b)

4.0.0-M3pre-release

July 5, 2026

  • upgraded to spring-boot 4.1 / jackson 3 (tools.jackson) + springdoc 4
  • switched error responses to problem details (RFC 9457) - message renamed to detail, content-type application/problem+json
  • zod: allow configure inferred types export + suffix
  • un-deprecated BadRequestException - stays first-class
  • removed tsid-creator dependency (hypersistence-tsid only)
  • new docs site: https://commons-rest.rocketbase.io

4.0.0-M2pre-release

May 25, 2026

  • improved zod generation (corrected detection dto + nested reading)
  • added @ZodSchema annotation

4.0.0-M1pre-release

May 19, 2026

The 4.x line is the long-term track that will move commons-rest onto Spring Boot 4 and eventually Jackson 3. We're currently waiting on Swagger/OpenAPI tooling to ship Jackson 3 compatibility
before we can complete that jump — until then, 4.x milestones stabilize on the current Spring Boot 3.5 / Jackson 2 baseline.

This milestone is a cleanup and optimization pass on the OpenAPI generator (commons-rest-openapi):

  • Refactored the standalone TypeScript client generator
  • Replaced string-based type conversion with typescript-generator for more reliable Java → TypeScript mapping
  • Added Zod schema generation with improved nullable handling
  • Updated React Query integration to v5, with corrected abort-signal handling
  • Added enumValue support and a migration guide with deprecation warnings
  • Dropped MapStruct in favor of the shared common validator
  • Removed the PostHog integration
  • Simplified TokenService and various utility helpers
  • Dependency bumps (Spring Boot 3.5.14, Springdoc 2.8.15)