Skip to content

Update refit monorepo to v16 - #1853

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-refit-monorepo
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-refit-monorepo

Conversation

@renovate

@renovate renovate Bot commented Jun 13, 2026 •

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
Refit 10.0.1 → 16.3.0 age confidence
Refit.HttpClientFactory 10.0.1 → 16.3.0 age confidence

Release Notes

reactiveui/refit (Refit)

v16.3.0: 16.3.0

🗞️ What's Changed

✨ Features

🔗 Full Changelog: reactiveui/refit@v16.2.0...v16.3.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v16.2.0: 16.2.0

🗞️ What's Changed

✨ Features
🧹 General Changes
✅ Tests
📝 Documentation
📦 Dependencies
  • @​b7ca029 chore(deps): update dependency reactiveui.primitives to 8.1.0 (#​2334) renovate[bot]

🔗 Full Changelog: reactiveui/refit@v16.1.0...v16.2.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v16.1.0: 16.1.0

🗞️ What's Changed
✨ Features
📝 Documentation
📌 Other

🔗 Full Changelog: reactiveui/refit@v16.0.0...v16.1.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

v16.0.0: 16.0.0

Summary

Refit 16.0.0 is a major version because the .NET 11 assemblies are built without runtime-async. The public API does not change.

Why runtime-async is off
  • In .NET 10 and older, the C# compiler adds a state machine to each async method. The state machine stores the local variables and tracks where to resume after each await.
  • .NET 11 adds a feature called runtime-async. The runtime does this work instead, so async code can run faster.
  • Refit 12.0.0 to 15.2.0 built the .NET 11 assemblies with runtime-async on. We did not use it with older .NET 8-10 nor .NET framework assemblies.
  • The feature needs a runtime that supports it. CoreCLR does, and Mono does not.
  • Blazor WebAssembly runs on Mono unless you opt into CoreCLR. WASI, Android API levels 21 to 23, and apps that set UseMonoRuntime=true also run on Mono.
  • Refit built with runtime-async can fail in every app that runs on Mono.
  • Microsoft builds its framework assemblies twice, once for each runtime. ASP.NET Core turns the feature on only for libraries inside the shared framework, and leaves it off for libraries that also ship on NuGet.
  • A NuGet package ships one build for every runtime, so Refit leaves the feature off. The feature is opt-in, so doing nothing is the correct setting.
  • Apps that target .NET 10 or older are not affected, because only the .NET 11 assemblies used the feature. Apps on .NET 11 that run on CoreCLR do not get the speed gain inside Refit's own async code.
  • You can turn on runtime-async in your own app if it runs only on CoreCLR.
Other changes
  • Refit has a documentation website at https://reactiveui.net/documentation/refit/. It has guides for requests, results, clients, serialization and testing, and one page that lists the full API.
  • The README is a short overview of the packages, the build requirements and the links to the website.
  • src/examples/Documentation has a project for every website page, plus larger samples for topics such as multipart uploads, serializers and compression. Each project builds with Refit.slnx and checks its results against local replies, so none needs a live service.
  • On older target frameworks, Refit checks the cancellation token before it buffers or reads HTTP content. A token that is already cancelled stops the operation before it starts.
  • Doc comments were corrected to match how Refit works. They state that [Options] sends OPTIONS, that [Url] accepts an empty path or /, and that [PathPrefix] does not add a leading slash. The Refit.Testing docs state that VerifyAllCalled ignores reusable and fallback routes.
  • The Blazor WebAssembly sample builds for .NET 10 and .NET 11. It uses a generated client and JSON source generation, and builds without trimmer warnings.
  • Refit depends on ReactiveUI.Primitives 8.0.0. On .NET 11, Refit.HttpClientFactory depends on Microsoft.Extensions.Http 11.0.0-rc.1, and other targets depend on 10.0.12.
  • SECURITY.md lists the supported versions and explains how to report a vulnerability through GitHub private reporting.
  • CI workflows drop code scanning of fork pull requests and pass sourceRef to the shared release workflow. Renovate handles package updates per target framework, and the generator snapshot tests use a small in-repo helper instead of the Verify packages.
🗞️ What's Changed
✨ Features
🧹 General Changes
📝 Documentation
📦 Dependencies
📌 Other

🔗 Full Changelog: reactiveui/refit@v15.2.0...v16.0.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v15.2.0: 15.2.0

🗞️ What's Changed
✨ Features
🐛 Fixes
📦 Dependencies
  • @​755b8c3 chore(deps): update dependency roslynator.analyzers to 4.16.1 (#​2312) renovate[bot]

🔗 Full Changelog: reactiveui/refit@v15.1.0...v15.2.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v15.1.0: 15.1.0

🗞️ What's Changed
🐛 Fixes
⚡ Performance
🧹 General Changes
📦 Dependencies
  • @​46071eb chore(deps): update dependency sonaranalyzer.csharp to 10.32.0.713 (#​2303) renovate[bot]
  • @​51368ea chore(deps): update dependency roslynator.analyzers to 4.16.0 (#​2298) renovate[bot]

🔗 Full Changelog: reactiveui/refit@v15.0.0...v15.1.0

🙌 Contributions

💖 Thanks to all the contributors: @​glennawatson

🤖 Automated services that contributed: renovate[bot]

v15.0.0: 15.0.0

🗞️ What's Changed
✨ Features
🐛 Fixes
🧹 General Changes
📦 Dependencies

🔗 Full Changelog: reactiveui/refit@v14.0.1...v15.0.0

🙌 Contributions

🌱 New contributors since the last release: @​Lukas, @​radixy0
💖 Thanks to all the contributors: @​glennawatson, @​JavierGarcíadelaNocedaArgüelles, @​jgarciadelanoceda, @​Lukas, @​radixy0, @​rmja

🤖 Automated services that contributed: @​renovate[bot]

v14.0.1: 14.0.1

🗞️ What's Changed

🐛 Fixes
⚡ Performance

🔗 Full Changelog: reactiveui/refit@v14.0.0...v14.0.1

🙌 Contributions

🌱 New contributors since the last release: @​JavierGarciadelaNocedaArguelles
💖 Thanks to all the contributors: @​glennawatson, @​JavierGarciadelaNocedaArguelles, @​JavierGarcíadelaNocedaArgüelles, @​jgarciadelanoceda

v14.0.0: 14.0.0

Refit 14.0.0

Refit 14 is a major bug-fix and request-generation release. It fixes a broad set of correctness issues while completing the move to source-generated request building. Most clients can now build requests without runtime reflection, improving trimming, Native AOT support, startup time, and allocations.

What end users need to know
  • Check RF006 warnings before upgrading. The reflection request builder has moved out of the main package. If any API method reports RF006, add the Refit.Reflection package. Fully generated clients should not add it.
  • Some async APIs now return ValueTask. This affects the success-guard methods, DefaultApiExceptionFactory.CreateAsync, and several RefitSettings delegates. Most callers can continue to await them; code that stores a Task may need .AsTask().
  • A few request-building behaviours are intentionally different. Query objects are flattened from their declared type, serializer property names are honoured in query keys, and nested URL-encoded objects are flattened instead of using ToString().
  • Caller-owned streams remain open. Refit no longer disposes streams supplied as request bodies or multipart parts; callers are responsible for disposing them.
  • Validation timing can change. Fully generated interfaces validate route templates when the first request is built rather than when the client is created. Generated method frames also no longer appear in ApiException stack traces.
  • Empty authorization tokens now omit the header. Returning null, empty, or whitespace from AuthorizationHeaderValueGetter no longer sends a blank Authorization header.
Major fixes
  • Request generation now handles multiple generic overloads, escaped C# keyword identifiers, nullable value-type query objects, nested URL-encoded bodies, and indexed query collections correctly.
  • Caller-supplied request streams can be reused, generated helper types no longer collide across InternalsVisibleTo assemblies, and null parameter values round-trip correctly.
Highlights
  • New request controls include [PathPrefix], per-method [Timeout], absolute URLs with [Url], optional route segments, indexed query collections, header validation, and returning a built HttpRequestMessage without sending it.
  • Query objects, dictionaries, generic methods, multipart form objects, and custom return-type adapters gain broader reflection-free generation.
  • Server-Sent Events can be consumed as IAsyncEnumerable<T>, and transport exceptions can be customized with TransportExceptionFactory.
  • Runtime, reflection, and source-generator allocation reductions improve throughput; source generation is roughly twice as fast in the measured workload.

See the V14 migration details and complete feature documentation.

🗞️ What's Changed
💥 Breaking Changes
✨ Features
♻️ Refactoring
🐛 Fixes
⚡ Performance
🧹 General Changes
✅ Tests
📝 Documentation
📦 Dependencies

🔗 Full Changelog: reactiveui/refit@v13.1.0...v14.0.0

🙌 Contributions

🌱 New contributors since the last release: @​arpitjain099, @​jgarciadelanoceda, @​rmja
💖 Thanks to all the contributors: @​arpitjain099, @​ChrisPulman, @​glennawatson, @​jgarciadelanoceda, @​rmja, @​TimothyMakkison

🤖 Automated services that contributed: @​Copilot, @​renovate[bot]

v13.1.0: 13.1.0

🗞️ What's Changed
  • Fixed the CS0436 build error from PrimitivesR3BridgeGeneratedAttribute (#​2176, #​2194). Bumps ReactiveUI.Primitives to 6.0.0, which moves the R3 bridge generator out of the runtime package. Projects using InternalsVisibleTo (e.g. test projects) build again, and the <Analyzer Remove=... /> workaround is no longer needed.
  • Path parameters now use generated request building instead of reflection (#​2174), so they work with AddRefitGeneratedClient and NativeAOT. Now covers enum, Guid, DateTime/DateTimeOffset/DateOnly/TimeOnly/TimeSpan, all integer widths (incl. Int128/UInt128/Half), and any IFormattable (#​2193).
✨ Features
🧹 General Changes

🔗 Full Changelog: reactiveui/refit@v13.0.0...13.1.0

🙌 Contributions

🌱 New contributors since the last release: @​calebkiage
💖 Thanks to all the contributors: @​calebkiage, @​glennawatson

v13.0.0: 13.0.0

🗞️ What's Changed

Refit 13 is a major release focused on security hardening and a brand-new testing package.

  • Security hardening (#​2181) — closes issues found in a security audit. XML deserialization is now protected against XXE (external entity) attacks, the Newtonsoft.Json integration no longer honours unsafe TypeNameHandling by default (blocking type-confusion/deserialization attacks), and sensitive values (auth headers, tokens) are now redacted from exception and log output. This is the main reason for the major version bump: if you relied on permissive Newtonsoft type handling you may need to opt back in explicitly.
  • New Refit.Testing package (#​2184) — a first-party way to stub and verify Refit clients in tests without spinning up a real HttpClient. Supply canned responses for interface calls and assert which requests your code made, instead of hand-rolling HttpMessageHandler fakes.
  • R3 bridge analyzer fix (#​2186) — corrects the removal target for the R3 bridge analyzer.
  • CI and documentation tidy-ups for SonarCloud on fork pull requests.
✨ Features
🧹 General Changes
📝 Documentation
📌 Other

🔗 Full Changelog: reactiveui/refit@v12.1.0...v13.0.0

🙌 Contributions

💖 Thanks to all the contributors: @​ChrisPulman, @​glennawatson

v12.1.0: 12.1.0

🗞️ What's Changed

✨ Features
🐛 Fixes
📝 Documentation
📦 Dependencies

🔗 Full Changelog: reactiveui/refit@v12.0.0...12.1.0

🙌 Contributions

💖 Thanks to all the contributors: @​ChrisPulman, @​glennawatson, @​HulinCedric

🤖 Automated services that contributed: @​renovate[bot]

v12.0.0: 12.0.0

Overview

Refit 12.0 is a large release centred on a near-complete rewrite of how requests are built. The source generator now constructs HTTP requests inline at compile time instead of going through the reflection pipeline, making generated clients faster and friendly to trimming and Native AOT. On top of that foundation it adds response streaming, JSON Lines, naming-convention presets, and a batch of long-standing fixes. Two small, well-scoped breaking changes are called out below.

This release also removed netstandard2.0 and netstandard2.1 support. You should to use net462/net8 as your base lines, and use multiple targets if you need to target both.

Highlights
  • Reflection-free, AOT-ready source generation. Eligible interface methods now have their request (URI, headers, body, request properties) built directly in generated code, with the reflection request-builder kept only as a fallback for shapes that cannot be generated inline. Form bodies flatten through compiled, source-generated field descriptors. The generator itself was modernised and optimised, and ships analyzer diagnostics and code fixes. There is also a generated-only client-creation mode and a build-time switch for generated request building.
  • IAsyncEnumerable<T> response streaming. Stream large responses, auto-detecting a JSON array vs JSON Lines from the content type, generated inline on the hot path.
  • JSON Lines request bodies. [Body(BodySerializationMethod.JsonLines)] plus a streaming JsonLinesContent (application/x-ndjson), wired through both the reflection and source-gen paths.
  • Naming-convention presets. RefitSettings.CamelCase() / SnakeCase() / KebabCase() configure query keys, form-url-encoded keys, and JSON body property names consistently, plus snake/kebab URL key formatters. Opt-in, so existing behaviour is unchanged.
  • Response ergonomics. EnsureSuccessStatusCodeAsync() / EnsureSuccessfulAsync() are now available directly on IApiResponse<T>; a new IsSuccessfulWithContent (and HasContent) gives a single, mock-safe success-with-content check; nullable annotations on `I

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Asia/Shanghai)

  • Branch creation
    • "before 5:00am,before 10am,before 3pm,before 8pm"
  • Automerge
    • At any time (no schedule defined)

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

♻ Rebasing: Whenever PR is behind base branch, 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/major-refit-monorepo branch 3 times, most recently from cec204e to d9f1255 Compare June 24, 2026 13:58
@renovate renovate Bot changed the title Update refit monorepo to v11 Update refit monorepo to v12 Jun 24, 2026
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch 2 times, most recently from a332ec3 to f7a8579 Compare July 1, 2026 22:32
@renovate renovate Bot changed the title Update refit monorepo to v12 Update refit monorepo to v13 Jul 1, 2026
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch from f7a8579 to b0f4a0f Compare July 3, 2026 02:00
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch from b0f4a0f to c8a1224 Compare July 25, 2026 09:27
@renovate renovate Bot changed the title Update refit monorepo to v13 Update refit monorepo to v14 Jul 25, 2026
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch from c8a1224 to 2bf2107 Compare July 27, 2026 02:01
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch from 2bf2107 to f005646 Compare August 5, 2026 22:33
@renovate renovate Bot changed the title Update refit monorepo to v14 Update refit monorepo to v15 Aug 5, 2026
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch 2 times, most recently from 926f334 to 8e810d9 Compare August 18, 2026 18:09
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch from 8e810d9 to a32b32f Compare September 20, 2026 05:30
@renovate renovate Bot changed the title Update refit monorepo to v15 Update refit monorepo to v16 Sep 20, 2026
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch 2 times, most recently from 1b69ade to 5f510e5 Compare September 26, 2026 07:47
@renovate
renovate Bot force-pushed the renovate/major-refit-monorepo branch from 5f510e5 to 457c77e Compare September 26, 2026 10:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants