Skip to content

Releases: reactiveui/refit

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

14.0.0-beta.5

14.0.0-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Jul 23:37
65f864e

🗞️ What's Changed

💥 Breaking Changes

✨ Features

♻️ Refactoring

🐛 Fixes

⚡ Performance

🧹 General Changes

✅ Tests

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v13.1.0...v14.0.0-beta.5

🙌 Contributions

🌱 New contributors since the last release: @arpitjain099, @JaviergarcíadelaNocedaArgüelles, @jgarciadelanoceda, @rmja
💖 Thanks to all the contributors: @arpitjain099, @ChrisPulman, @Copilot, @glennawatson, @JaviergarcíadelaNocedaArgüelles, @jgarciadelanoceda, @rmja, @TimothyMakkison

🤖 Automated services that contributed: @renovate[bot]

14.0.0-beta.4

14.0.0-beta.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Jul 15:22
8382bed

🗞️ What's Changed

💥 Breaking Changes

✨ Features

🐛 Fixes

⚡ Performance

🧹 General Changes

✅ Tests

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v13.1.0...v14.0.0-beta.4

🙌 Contributions

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

🤖 Automated services that contributed: @renovate[bot]

14.0.0-beta.3

14.0.0-beta.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Jul 03:03
f24d171

🗞️ What's Changed

💥 Breaking Changes

✨ Features

🐛 Fixes

⚡ Performance

🧹 General Changes

✅ Tests

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v13.1.0...v14.0.0-beta.3

🙌 Contributions

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

🤖 Automated services that contributed: @renovate[bot]

14.0.0-beta.2

14.0.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jul 11:32
71634f2

🗞️ What's Changed

💥 Breaking Changes

✨ Features

🐛 Fixes

⚡ Performance

🧹 General Changes

✅ Tests

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v13.1.0...v14.0.0-beta.2

🙌 Contributions

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

🤖 Automated services that contributed: @renovate[bot]

14.0.0-beta.1

14.0.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Jul 11:46
485c632

Summary

Refit 14 completes the shift to reflection-free, source-generated request building: interfaces whose methods all generate inline no longer touch the reflection request builder, so they are trim- and Native AOT-clean. The reflection request builder is now an opt-in package, and a few hot-path async members return ValueTask instead of Task. These are breaking changes - read the Breaking Changes below and the full v14 migration notes before upgrading.

Alongside that, this release adds a batch of request-shaping features - the new [Url], [PathPrefix], [Timeout], and [FormObject] attributes, optional {name?} URL segments, Server-Sent Events streaming, a per-type URL parameter formatter registry, optional/scoped authorization, building a request without sending it, and exposing call arguments to delegating handlers - plus bug fixes, a performance pass, and new analyzer diagnostics for invalid Refit interfaces.

🗞️ What's Changed

💥 Breaking Changes

✨ Features

🐛 Fixes

⚡ Performance

🧹 General Changes

✅ Tests

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v13.1.0...v14.0.0-beta.1

🙌 Contributions

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

🤖 Automated services that contributed: @renovate[bot]

13.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 01:18
ac79c76

🗞️ 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: v13.0.0...13.1.0

🙌 Contributions

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

13.0.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 07:39
c0bbb5a

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

🙌 Contributions

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

12.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Jun 00:10
db33053

🗞️ What's Changed

✨ Features

🐛 Fixes

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v12.0.0...12.1.0

🙌 Contributions

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

🤖 Automated services that contributed: @renovate[bot]