Skip to content

Releases: reactiveui/refit

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]

12.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 10:45
98982b4

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 IApiResponse<T> were corrected to be sound.
  • URL and route control. Opt-in RFC 3986 / HttpClient-style URL resolution via RefitSettings.UrlResolution, and RefitSettings.AllowUnmatchedRouteParameters to leave an unmatched {token} for a DelegatingHandler to rewrite.
  • Faster JSON. A fast-path serialization option (SystemTextJsonContentSerializer.GetFastPathJsonSerializerOptions()) and buffered/streamed request-body modes that run through it.
  • Smaller additions. [Query(SerializeNull = true)] to send a null property as key= instead of omitting it, and a public UniqueName.ForType<T>() to resolve the generated IHttpClientFactory client name.
  • Fixes. Multipart Guid/DateTime/DateTimeOffset/TimeSpan (and DateOnly/TimeOnly) are sent as plain text (#2016); property-level [Query(delimiter, prefix)] is honoured when flattening complex objects (#1334); [Query(Format = "")] serializes a complex value via ToString() (#1281); and IApiResponse<T> no longer shadows base members (#1933).

Breaking changes and migration

  • IApiResponse<T> no longer shadows base members. The new-shadowed Error, ContentHeaders, IsSuccessStatusCode, and IsSuccessful members are removed from the generic interface. Source that reads these still compiles (they bind to the inherited base members), but code compiled against v8-v11 that bound to the generic-interface slots needs a recompile. If you relied on IsSuccessful to narrow Content to non-null on an IApiResponse<T>-typed value, switch to HasContent / IsSuccessfulWithContent.
  • The default System.Text.Json serializer now reads numbers from JSON strings (NumberHandling = AllowReadingFromString). Opt back out with NumberHandling = JsonNumberHandling.Strict on your JsonSerializerOptions.

🗞️ What's Changed

💥 Breaking Changes

✨ Features

♻️ Refactoring

⚡ Performance

🧹 General Changes

🔗 Full Changelog: v11.2.0...v12.0.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

11.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 00:26
54a8e62

🗞️ What's Changed

🐛 Fixes

🔗 Full Changelog: v11.1.0...v11.2.0

🙌 Contributions

💖 Thanks to all the contributors: @glennawatson

11.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Jun 07:17
5f67752

🗞️ What's Changed

🐛 Fixes

🧹 General Changes

📝 Documentation

📦 Dependencies

🔗 Full Changelog: v11.0.1...v11.1.0

🙌 Contributions

🌱 New contributors since the last release: @HulinCedric
💖 Thanks to all the contributors: @ChrisPulman, @glennawatson, @HulinCedric, @PressXtoChris

🤖 Automated services that contributed: @renovate[bot]