Skip to content

Releases: reactiveui/refit

16.3.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 07:54
053873c

🗞️ What's Changed

✨ Features

🔗 Full Changelog: v16.2.0...v16.3.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

16.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 03:06
a463e8a

🗞️ 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: v16.1.0...v16.2.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

🤖 Automated services that contributed: renovate[bot]

16.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 04:20
bb98726

🗞️ What's Changed

✨ Features

📝 Documentation

📌 Other

🔗 Full Changelog: v16.0.0...v16.1.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

16.0.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 01:00
1459f55

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

  • 45fcc59 chore(deps): pin mcr.microsoft.com/dotnet/sdk docker tag to e622deb (#2324) renovate[bot]
  • 8b71ed0 chore(deps): update dependency minver to v8 (#2320) renovate[bot]
  • 2d89767 chore(deps): update dependency sonaranalyzer.csharp to 10.33.0.1635 (#2316) renovate[bot]
  • 2f75847 chore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.11.2 (#2322) renovate[bot]
  • 9bf02a3 chore(deps): update dependency verify.tunit to v32 (#2318) renovate[bot]
  • 96e91c6 chore(deps): update dependency roslynator.analyzers to v5 (#2317) renovate[bot]
  • 47698c4 chore(deps): pin github actions digests (#2323) renovate[bot]
  • 5d9fe43 chore(deps): update dependency sonaranalyzer.csharp to 10.34.0.3385 (#2321) renovate[bot]
  • 38471c8 chore(deps): update dependency publicapisharp.analyzers to v2 (#2328) renovate[bot]

📌 Other

🔗 Full Changelog: v15.2.0...v16.0.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

🤖 Automated services that contributed: renovate[bot]

15.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 14:53
96316a6

🗞️ What's Changed

✨ Features

🐛 Fixes

📦 Dependencies

  • 755b8c3 chore(deps): update dependency roslynator.analyzers to 4.16.1 (#2312) renovate[bot]

🔗 Full Changelog: v15.1.0...v15.2.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

🤖 Automated services that contributed: renovate[bot]

15.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 02:03
74cbb64

🗞️ 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: v15.0.0...v15.1.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

🤖 Automated services that contributed: renovate[bot]

15.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 20:12
873c8bd

🗞️ What's Changed

✨ Features

🐛 Fixes

🧹 General Changes

📦 Dependencies

🔗 Full Changelog: v14.0.1...v15.0.0

🙌 Contributions

🌱 New contributors since the last release: @lukas, @radixy0
💖 Thanks to all the contributors: @glennawatson, @jgarciadelanoceda, @lukas, @radixy0, @rmja

🤖 Automated services that contributed: @renovate[bot]

15.0.0-beta.1

15.0.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Aug 08:35
52345ac

🗞️ What's Changed

✨ Features

🐛 Fixes

🧹 General Changes

📦 Dependencies

🔗 Full Changelog: v14.0.1...v15.0.0-beta.1

🙌 Contributions

🌱 New contributors since the last release: @lukas, @radixy0
💖 Thanks to all the contributors: @glennawatson, @JaviergarcíadelaNocedaArgüelles, @jgarciadelanoceda, @lukas, @radixy0

🤖 Automated services that contributed: @renovate[bot]

14.0.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 23:42
132f72d

🗞️ What's Changed

🐛 Fixes

⚡ Performance

🔗 Full Changelog: 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

14.0.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 06:46
5cd9a96

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

  • 544db0b docs: make v12 Error.Content migration discoverable and add interface composition...
Read more