Skip to content

Update ktor monorepo to v3.6.0 - #238

Merged
chrissearle merged 1 commit into
mainfrom
renovate/ktor-monorepo
Sep 17, 2026
Merged

chrissearle merged 1 commit into
mainfrom
renovate/ktor-monorepo

Conversation

@renovate

@renovate renovate Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
io.ktor:ktor-client-mock 3.5.23.6.0 age confidence
io.ktor:ktor-server-test-host-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-serialization-kotlinx-json 3.5.23.6.0 age confidence
io.ktor:ktor-server-status-pages-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-metrics-micrometer-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-cors-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-core-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-content-negotiation-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-compression-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-cio 3.5.23.6.0 age confidence
io.ktor:ktor-server-call-logging-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-call-id-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-auth-jwt-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-server-auth-jvm 3.5.23.6.0 age confidence
io.ktor:ktor-client-call-id 3.5.23.6.0 age confidence
io.ktor:ktor-client-cio 3.5.23.6.0 age confidence
io.ktor:ktor-client-logging 3.5.23.6.0 age confidence
io.ktor:ktor-client-core 3.5.23.6.0 age confidence
io.ktor:ktor-client-content-negotiation 3.5.23.6.0 age confidence
io.ktor:ktor-client-auth 3.5.23.6.0 age confidence

Release Notes

ktorio/ktor (io.ktor:ktor-client-mock)

v3.6.0

Published 16 September 2026

Features
  • KTOR-8596 OpenID Connect (OAuth2) auto-discover & configuration
  • KTOR-9645 Client curated multi-platform facade module
  • KTOR-8883 Support nested jars in static resources
  • KTOR-8672 Support at least zstd and deflate formats of precompressed files
  • KTOR-8595 Auth JWK Support (auto-discover)
  • KTOR-9841 OIDC Server Plugin
  • KTOR-9654 Override fetch in JS engine
  • KTOR-9785 Typesafe Authentication DSL
  • KTOR-462 Async CIO DNS resolver with timeout
  • KTOR-9709 Add resource attribute for client resources plugin
  • KTOR-5009 ContentNegotiation: Add a way to prevent changing Accept and Content-Type headers
  • KTOR-9776 OpenAPI: Support the "const" validation keyword
  • KTOR-7468 DefaultConversionService: Support Uuid type introduced in Kotlin 2.0
  • KTOR-9578 HttpCache add method for clearing
  • KTOR-9590 OpenAPI Contextual JSON schema inference support
  • KTOR-6610 Log which ConfigLoader has been used for loading the server configuration
  • KTOR-9735 Commonize HttpCache FileCacheStorage
  • KTOR-8953 WebRTC client on JVM
  • KTOR-9674 UDP support for Node.js targets
  • KTOR-9612 Add text/markdown to the ContentType constants
Improvements
  • KTOR-9876 Typo in KDoc for routing function: "for the this Application".
  • KTOR-9778 Character classification in ktor-http hot paths uses boxed Set lookups and per-symbol encoder allocations
  • KTOR-9702 Duplicate code in ByteReadChannel
  • KTOR-9716 Make ApplicationCallPipeline.ApplicationPhase.Validators public in 3.6.0
  • KTOR-9734 Use TagConsumer in respondHtmlFragment lambda receiver
  • KTOR-5577 Support nullable types in ApplicationCall.receive
  • KTOR-2367 OAuth: clients expect to get authenticated once per "session" for all protected routes
  • KTOR-8594 Auth: Non-optional principal is of nullable type
  • KTOR-9816 Escape $ in application.yaml file
  • KTOR-8193 Unnecessary blocking in OutputStream wrapper
Bugfixes
  • KTOR-8705 testApplication: call coroutine context isn't preserved when responding with ChannelWriterContent
  • KTOR-9248 JWTAuthenticationProvider silently swallows exceptions
  • KTOR-9892 Digest Auth client: nc and qop are not handled according to RFC 7616
  • KTOR-9891 CIO on Kotlin/Native collapses above ~50 connections: HttpHeadersMap pools contend on an allocating SynchronizedObject
  • KTOR-9794 Digest Auth: NullPointerException when the server does not expect Digest auth
  • KTOR-9788 Netty: engine double-responds after its built-in 400, crashing the call-handler coroutine with "Headers can no longer be set because response was already completed"
  • KTOR-9834 HttpClient eagerly initializes SLF4J during Android startup
  • KTOR-9701 Jackson/Gson converters waste time on unnecessary Dispatchers.IO dispatch
  • KTOR-9832 Apache5: Upgrading Apache HttpClient5 to version 5.6 breaks the Ktor client with Content-Length mismatch error for any gzipped content
  • KTOR-9870 OkHttp: Reduce coroutine dispatching and allocations while reading response bodies
  • KTOR-9627 Cancel blocking bridges when coroutine is cancelled
  • KTOR-7067 Ktor Cookie.parseClientCookiesHeader returns Map, which breaks Cookie header contract
  • KTOR-9643 Allow H2C and HTTP/2 on same server
  • KTOR-9302 OpenAPI: No way to set tag description
  • KTOR-9827 Authorization header removed from refresh token request
  • KTOR-8355 Bad percentage encoding in URL query causes uncaught exception and 500 status
  • KTOR-9762 Android: can hang when cancelling a streaming response during a blocking read
  • KTOR-9443 OpenAPI: "No mapping for symbol: VALUE_PARAMETER" exception when respondText receives a conditional ContentType within ApplicationCall extension function
  • KTOR-9392 OpenAPI: "No mapping for symbol: VAR name" exception when code inference is on
  • KTOR-9389 OpenAPI: "IllegalStateException: No mapping for symbol" when code inference and passing received body to HttpStatusCode()
  • KTOR-9784 Multipart is not supported on non-JVM server targets
  • KTOR-9657 OpenAPI: generated schema for recursive types uses invalid schemaRef with ReflectionJsonSchemaInference
  • KTOR-9676 Incorrect warning about streaming compression buffering
  • KTOR-9712 Netty HTTP/3: the listener can only ever serve ONE QUIC connection — every subsequent handshake times out
  • KTOR-9386 Misleading log output for Unix Domain Socket servers: "Responding at unix://0.0.0.0:80"
  • KTOR-8755 CIO: The engine doesn't encode Unicode symbols like '–' (U+2013) in request URL
  • KTOR-9513 CharsetDecoder.decode() ignores the max argument on JVM
  • KTOR-9825 Unescape quoted-pair at the end of a header parameter value
  • KTOR-9731 CIO: HttpRequestLifecycle cancels Connection: close call too soon, sending an incomplete response
  • KTOR-9770 CIO: mapToKtor unwraps non-timeout exceptions to their cause
  • KTOR-9772 Make quality parameter case-insensitive
  • KTOR-9773 OkHttp: Cancelling a request can close the response body on the Android main thread
  • KTOR-7009 CIO: "Failed to parse HTTP response: unexpected EOF" when pipelining is on
  • KTOR-9819 Curl: Requests leak curl_slist and response StableRef
  • KTOR-9761 CIO server: request handler can leak when idle timeout cancels a claimed response
  • KTOR-9817 Darwin CertificatePinner over-releases borrowed Core Foundation references
  • KTOR-9774 CIO: pipelining corrupts requests with non-empty bodies
  • KTOR-9766 OpenAPI: "has no continuation" AssertionError when a suspend call inside a sealed-type branch reads the smart-cast value
  • KTOR-9775 OkHttp: duplex streaming does not release the connection after the request completes
  • KTOR-9722 DigestAuthProvider cannot be initialized with a congested Dispatchers.Default pool
  • KTOR-9739 Outdated KDoc for AuthProvider.refreshToken method
  • KTOR-9792 Application lifecycle events affect other reload generations
  • KTOR-9793 The new DI scope is cancelled during hot reload
  • KTOR-9648 OpenAPI: reflection schema inference produces incorrect discriminator mapping for Jackson-annotated and nested sealed hierarchies
  • KTOR-9760 Digest Auth: URI and HA2 are empty for a URL without a path
  • KTOR-9705 OpenAPI UI (ktor-server-openapi) does not support OpenAPI spec 3.1.*
  • KTOR-9715 Netty HTTP/3: user handler code is dispatched on the QUIC event loop — one blocking handler freezes the entire HTTP/3 listener (callEventGroup / pinnedCallExecutor not used)
  • KTOR-2912 CORS Plugin: Access-Control-Allow-Methods header does not include default methods (GET, POST, HEAD)
  • KTOR-9526 Static Content: excluded extension prevents fallback, and index file bypasses exclusion rules
  • KTOR-9523 OAuth2: fallback handler not invoked when token endpoint returns invalid_grant
  • KTOR-9501 Websockets: Closing WebSocketSession with a long message leads to ProtocolViolationException
  • KTOR-9561 ByteReadChannel.copyTo does not propagate source closedCause on normal exit
  • KTOR-9640 ktor-io reader/writer ignores autoFlush
  • KTOR-9889 DI: Concurrent module loading can cause a deadlock
  • KTOR-9886 Netty: inverted skippedRead CAS leaves runningLimit read-resumption broken; runningLimit = 1 deadlocks keep-alive connections

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/ktor-monorepo branch from f4d8eb9 to a424ece Compare September 17, 2026 17:40
@chrissearle
chrissearle merged commit b03e542 into main Sep 17, 2026
9 of 10 checks passed
@renovate
renovate Bot deleted the renovate/ktor-monorepo branch September 17, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant