Skip to content

Bump Refit.HttpClientFactory from 13.1.0 to 14.0.1 - #481

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/samples/CommunityToolkit.Maui.Markup.Sample/Refit.HttpClientFactory-14.0.1
Open

Bump Refit.HttpClientFactory from 13.1.0 to 14.0.1#481
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/samples/CommunityToolkit.Maui.Markup.Sample/Refit.HttpClientFactory-14.0.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 27, 2026

Copy link
Copy Markdown
Contributor

Updated Refit.HttpClientFactory from 13.1.0 to 14.0.1.

Release notes

Sourced from Refit.HttpClientFactory's releases.

14.0.1

🗞️ What's Changed

🐛 Fixes

  • reactiveui/refit@​132f72d875f3181b96ec34229788ab4c01d51053 fix(generator): support path and header bindings (#​2281) @​glennawatson

⚡ Performance

  • reactiveui/refit@​2f16caa9841b140eb9c93a70c105056ea5f1a33d perf: escape query components in place (#​2277) @​glennawatson @​jgarciadelanoceda
  • reactiveui/refit@​6501f88cfbf41cd32550a062e02f08f94f3bf50c perf: Use String Interpolation In Code Generation (#​2278) @​glennawatson @​jgarciadelanoceda

🔗 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

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

  • reactiveui/refit@​e511df252a1e53e760bf5a325a134953e50c172d feat!: reflection-free source-generated request building (#​2210) @​glennawatson @​TimothyMakkison

✨ Features

  • reactiveui/refit@​88e1c240245078bed6ba835920f0191c50911860 feat: add generic tests to ReflectionTests (#​2195) @​TimothyMakkison
  • reactiveui/refit@​463f5cfafb21a805cfeb9b9f4de6f07dee5fdbb5 feat: add [Timeout] attribute for per-method request timeouts (#​2238) @​glennawatson
  • reactiveui/refit@​294e63a4a48d9164ea5daf958f2fb5eb29120c77 feat: add success guards to the non-generic IApiResponse (#​2242) @​glennawatson
  • reactiveui/refit@​f754684d8d67f62489dfa304e0630b98c68b7fd8 feat: add interface-level [PathPrefix] attribute for a shared route prefix (#​2240) @​glennawatson
  • reactiveui/refit@​65f864e00cb1e01c41c76c5afbee1ddbf9ca17c2 feat: only generate AttributeProvider field when not empty (#​2271) @​TimothyMakkison
  • reactiveui/refit@​99c055b4064184bcc5b32efdaa250fa447474c7b feat: support optional url segments with {name?} syntax (#​2237) @​glennawatson
  • reactiveui/refit@​759a3c0fe2d43e46cd1e0000cedef824d97c238d feat: support returning the built HttpRequestMessage without sending (#​2235) @​glennawatson
  • reactiveui/refit@​88d5e68214dc890b4e2641c11ee2940cc03d64d6 feat: add CollectionFormat.Indexed for indexed query collection expansion (#​2262) @​Copilot @​glennawatson @​jgarciadelanoceda
  • reactiveui/refit@​d9b3d5f3ac28687cae557e9d6c4ed0901f9ea043 feat: support Server-Sent Events as a streaming content format (#​2232) @​glennawatson
  • reactiveui/refit@​1e35cc9c0d1ed07e10af1f671b90d25c4314787c feat: add [Url] attribute for absolute request URLs (#​2236) @​glennawatson
  • reactiveui/refit@​7c338710b98dcba74d12f4942b4a4c1d00dd0852 feat: add opt-in RefitSettings.ValidateHeaders (#​2225) @​glennawatson
  • reactiveui/refit@​b583a34b266de4cab5173d8c259f947f19aad03b feat: add null handling for round trip parameter and add verifying test (#​2201) @​TimothyMakkison
  • reactiveui/refit@​485c63211a86144228423844452c7df33c35ab61 feat: opt-in [FormObject] flattens a model into multipart form fields (#​2245) @​glennawatson
  • reactiveui/refit@​7ac3e1a3e9b7d4dd28a6ca1f7e00a6e9319d97ab feat: fix failiure when multiple generic overloads (#​2199) @​TimothyMakkison
  • reactiveui/refit@​852cb2c39b3740670a1e17d9c1470a551c09e2aa feat: move version configuration into AddConfiguredRequestOptions (#​2214) @​glennawatson @​TimothyMakkison
  • reactiveui/refit@​a2b158139ffc46d351920f7373dda655d4683319 feat: add analyzer diagnostics for invalid Refit interfaces (#​2220) @​glennawatson
  • reactiveui/refit@​4068d9739554a2649d1ec954e480cde1a75430a2 feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#​2205) @​glennawatson @​jgarciadelanoceda
    ... (truncated)

14.0.0-beta.5

🗞️ What's Changed

💥 Breaking Changes

  • reactiveui/refit@​e511df252a1e53e760bf5a325a134953e50c172d feat!: reflection-free source-generated request building (#​2210) @​glennawatson @​TimothyMakkison

✨ Features

  • reactiveui/refit@​65f864e00cb1e01c41c76c5afbee1ddbf9ca17c2 feat: only generate AttributeProvider field when not empty (#​2271) @​TimothyMakkison
  • reactiveui/refit@​88e1c240245078bed6ba835920f0191c50911860 feat: add generic tests to ReflectionTests (#​2195) @​TimothyMakkison
  • reactiveui/refit@​463f5cfafb21a805cfeb9b9f4de6f07dee5fdbb5 feat: add [Timeout] attribute for per-method request timeouts (#​2238) @​glennawatson
  • reactiveui/refit@​88d5e68214dc890b4e2641c11ee2940cc03d64d6 feat: add CollectionFormat.Indexed for indexed query collection expansion (#​2262) @​Copilot @​glennawatson @​JavierGarcíadelaNocedaArgüelles @​jgarciadelanoceda
  • reactiveui/refit@​294e63a4a48d9164ea5daf958f2fb5eb29120c77 feat: add success guards to the non-generic IApiResponse (#​2242) @​glennawatson
  • reactiveui/refit@​f754684d8d67f62489dfa304e0630b98c68b7fd8 feat: add interface-level [PathPrefix] attribute for a shared route prefix (#​2240) @​glennawatson
  • reactiveui/refit@​99c055b4064184bcc5b32efdaa250fa447474c7b feat: support optional url segments with {name?} syntax (#​2237) @​glennawatson
  • reactiveui/refit@​759a3c0fe2d43e46cd1e0000cedef824d97c238d feat: support returning the built HttpRequestMessage without sending (#​2235) @​glennawatson
  • reactiveui/refit@​d9b3d5f3ac28687cae557e9d6c4ed0901f9ea043 feat: support Server-Sent Events as a streaming content format (#​2232) @​glennawatson
  • reactiveui/refit@​1e35cc9c0d1ed07e10af1f671b90d25c4314787c feat: add [Url] attribute for absolute request URLs (#​2236) @​glennawatson
  • reactiveui/refit@​7c338710b98dcba74d12f4942b4a4c1d00dd0852 feat: add opt-in RefitSettings.ValidateHeaders (#​2225) @​glennawatson
  • reactiveui/refit@​b583a34b266de4cab5173d8c259f947f19aad03b feat: add null handling for round trip parameter and add verifying test (#​2201) @​TimothyMakkison
  • reactiveui/refit@​485c63211a86144228423844452c7df33c35ab61 feat: opt-in [FormObject] flattens a model into multipart form fields (#​2245) @​glennawatson
  • reactiveui/refit@​7ac3e1a3e9b7d4dd28a6ca1f7e00a6e9319d97ab feat: fix failiure when multiple generic overloads (#​2199) @​TimothyMakkison
  • reactiveui/refit@​852cb2c39b3740670a1e17d9c1470a551c09e2aa feat: move version configuration into AddConfiguredRequestOptions (#​2214) @​glennawatson @​TimothyMakkison
  • reactiveui/refit@​a2b158139ffc46d351920f7373dda655d4683319 feat: add analyzer diagnostics for invalid Refit interfaces (#​2220) @​glennawatson
  • reactiveui/refit@​4068d9739554a2649d1ec954e480cde1a75430a2 feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#​2205) @​glennawatson @​JavierGarcíadelaNocedaArgüelles @​jgarciadelanoceda
  • reactiveui/refit@​ed63528dc18dc28925889045c736ff0d21e7f9a0 feat: optional auth header and scoped authorization token provider (#​2221) @​glennawatson
  • reactiveui/refit@​7bf7b41a0dd58119c032caa6cda991676278441f feat: inline constrained-generic path-bound objects in the source generator (#​2222) @​glennawatson
  • reactiveui/refit@​14895a493c84cea284c881cd5e0a5af656aa5b8b feat: expose call argument values to DelegatingHandlers (#​2223) @​glennawatson
  • reactiveui/refit@​37efb4e543ed8a04311b344f36a444f535408bc0 feat: add per-type URL parameter formatter registry (#​2226) @​glennawatson
  • reactiveui/refit@​aa1c19bfce5fc269dee974c024598f02d2a79e59 feat: publish method name and route template in request options (#​2239) @​glennawatson

♻️ Refactoring

  • reactiveui/refit@​aa2229bd7a8263f76eec493d857bdf5d1073eba6 refactor: resolve analyzer diagnostics across solution (#​2268) @​ChrisPulman

🐛 Fixes

  • reactiveui/refit@​809de10e91f198bd3089f61f3fbf5169feffc53c fix: do not dispose caller-supplied request streams (#​2234) @​glennawatson
  • reactiveui/refit@​71634f2c5d0845c311b1cf4f4bb512437fe86fb5 fix: escape keyword identifiers in generated interface member names (#​2248) @​glennawatson
  • reactiveui/refit@​17c24d82ab530b47c098c6a68b4b60c6a6190a99 fix: name generated helper types per assembly to avoid InternalsVisibleTo conflicts (#​2257) @​glennawatson
  • reactiveui/refit@​78271e1e34907cbdeeda36c71904b72c3fe25cb3 fix: generate inline query building for nullable value-type query objects (#​2265) @​rmja
  • reactiveui/refit@​02a037bccc6fa13d76aae72bfeeb1d0877992158 fix: flatten nested objects in url-encoded request bodies (#​2224) @​glennawatson

⚡ Performance

  • reactiveui/refit@​b575c9d95c6101d5b043188075ffdef8d3f7bc50 perf: AllAttributesCache replace Lazy with laziliy initialised code (#​2211) @​TimothyMakkison
  • reactiveui/refit@​b193498c7ad3005000d2c14b41814d1d99f78069 perf: replace StringBuilder with ValueStringBuilder (#​2270) @​TimothyMakkison
  • reactiveui/refit@​8382bed9878a9d75ec0f6b86c985bfad7e3802fb perf: reduce Refit.Reflection memory allocations (#​2267) @​glennawatson
  • reactiveui/refit@​8cea3f1cfebe6dca0fb78e6b2464b29666d2be4f perf: reduce runtime Refit memory allocations (#​2263) @​glennawatson
  • reactiveui/refit@​fc06c57dd872971a79ded40cdb5e3fd7221ecd19 perf: check for allowUnmatchedParameter before calling IndexOf (#​2252) @​TimothyMakkison
  • reactiveui/refit@​f24d1713f9682c6395f46264893a2dd19c732a58 perf: wrap helper methods in MethodImplOptions.AggressiveInlining (#​2260) @​TimothyMakkison
  • reactiveui/refit@​5dcfcc91618ba05a506f4c037fc97ac73da9c6d7 perf: cut source generator allocations and roughly halve generation time (#​2259) @​glennawatson
  • reactiveui/refit@​147282aa57f889a29d02b13654c38e0252c9f1c0 perf: replace StringBuilder with ValueStringBuilder in RoundTripEscapePath (#​2253) @​TimothyMakkison

🧹 General Changes

... (truncated)

14.0.0-beta.4

🗞️ What's Changed

💥 Breaking Changes

  • reactiveui/refit@​e511df252a1e53e760bf5a325a134953e50c172d feat!: reflection-free source-generated request building (#​2210) @​glennawatson @​TimothyMakkison

✨ Features

  • reactiveui/refit@​88e1c240245078bed6ba835920f0191c50911860 feat: add generic tests to ReflectionTests (#​2195) @​TimothyMakkison
  • reactiveui/refit@​463f5cfafb21a805cfeb9b9f4de6f07dee5fdbb5 feat: add [Timeout] attribute for per-method request timeouts (#​2238) @​glennawatson
  • reactiveui/refit@​294e63a4a48d9164ea5daf958f2fb5eb29120c77 feat: add success guards to the non-generic IApiResponse (#​2242) @​glennawatson
  • reactiveui/refit@​f754684d8d67f62489dfa304e0630b98c68b7fd8 feat: add interface-level [PathPrefix] attribute for a shared route prefix (#​2240) @​glennawatson
  • reactiveui/refit@​99c055b4064184bcc5b32efdaa250fa447474c7b feat: support optional url segments with {name?} syntax (#​2237) @​glennawatson
  • reactiveui/refit@​759a3c0fe2d43e46cd1e0000cedef824d97c238d feat: support returning the built HttpRequestMessage without sending (#​2235) @​glennawatson
  • reactiveui/refit@​d9b3d5f3ac28687cae557e9d6c4ed0901f9ea043 feat: support Server-Sent Events as a streaming content format (#​2232) @​glennawatson
  • reactiveui/refit@​1e35cc9c0d1ed07e10af1f671b90d25c4314787c feat: add [Url] attribute for absolute request URLs (#​2236) @​glennawatson
  • reactiveui/refit@​7c338710b98dcba74d12f4942b4a4c1d00dd0852 feat: add opt-in RefitSettings.ValidateHeaders (#​2225) @​glennawatson
  • reactiveui/refit@​b583a34b266de4cab5173d8c259f947f19aad03b feat: add null handling for round trip parameter and add verifying test (#​2201) @​TimothyMakkison
  • reactiveui/refit@​485c63211a86144228423844452c7df33c35ab61 feat: opt-in [FormObject] flattens a model into multipart form fields (#​2245) @​glennawatson
  • reactiveui/refit@​7ac3e1a3e9b7d4dd28a6ca1f7e00a6e9319d97ab feat: fix failiure when multiple generic overloads (#​2199) @​TimothyMakkison
  • reactiveui/refit@​852cb2c39b3740670a1e17d9c1470a551c09e2aa feat: move version configuration into AddConfiguredRequestOptions (#​2214) @​glennawatson @​TimothyMakkison
  • reactiveui/refit@​a2b158139ffc46d351920f7373dda655d4683319 feat: add analyzer diagnostics for invalid Refit interfaces (#​2220) @​glennawatson
  • reactiveui/refit@​4068d9739554a2649d1ec954e480cde1a75430a2 feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#​2205) @​glennawatson @​JavierGarcíadelaNocedaArgüelles @​jgarciadelanoceda
  • reactiveui/refit@​ed63528dc18dc28925889045c736ff0d21e7f9a0 feat: optional auth header and scoped authorization token provider (#​2221) @​glennawatson
  • reactiveui/refit@​7bf7b41a0dd58119c032caa6cda991676278441f feat: inline constrained-generic path-bound objects in the source generator (#​2222) @​glennawatson
  • reactiveui/refit@​14895a493c84cea284c881cd5e0a5af656aa5b8b feat: expose call argument values to DelegatingHandlers (#​2223) @​glennawatson
  • reactiveui/refit@​37efb4e543ed8a04311b344f36a444f535408bc0 feat: add per-type URL parameter formatter registry (#​2226) @​glennawatson
  • reactiveui/refit@​aa1c19bfce5fc269dee974c024598f02d2a79e59 feat: publish method name and route template in request options (#​2239) @​glennawatson

🐛 Fixes

  • reactiveui/refit@​809de10e91f198bd3089f61f3fbf5169feffc53c fix: do not dispose caller-supplied request streams (#​2234) @​glennawatson
  • reactiveui/refit@​17c24d82ab530b47c098c6a68b4b60c6a6190a99 fix: name generated helper types per assembly to avoid InternalsVisibleTo conflicts (#​2257) @​glennawatson
  • reactiveui/refit@​78271e1e34907cbdeeda36c71904b72c3fe25cb3 fix: generate inline query building for nullable value-type query objects (#​2265) @​rmja
  • reactiveui/refit@​71634f2c5d0845c311b1cf4f4bb512437fe86fb5 fix: escape keyword identifiers in generated interface member names (#​2248) @​glennawatson
  • reactiveui/refit@​02a037bccc6fa13d76aae72bfeeb1d0877992158 fix: flatten nested objects in url-encoded request bodies (#​2224) @​glennawatson

⚡ Performance

  • reactiveui/refit@​8382bed9878a9d75ec0f6b86c985bfad7e3802fb perf: reduce Refit.Reflection memory allocations (#​2267) @​glennawatson
  • reactiveui/refit@​8cea3f1cfebe6dca0fb78e6b2464b29666d2be4f perf: reduce runtime Refit memory allocations (#​2263) @​glennawatson
  • reactiveui/refit@​b575c9d95c6101d5b043188075ffdef8d3f7bc50 perf: AllAttributesCache replace Lazy with laziliy initialised code (#​2211) @​TimothyMakkison
  • reactiveui/refit@​fc06c57dd872971a79ded40cdb5e3fd7221ecd19 perf: check for allowUnmatchedParameter before calling IndexOf (#​2252) @​TimothyMakkison
  • reactiveui/refit@​f24d1713f9682c6395f46264893a2dd19c732a58 perf: wrap helper methods in MethodImplOptions.AggressiveInlining (#​2260) @​TimothyMakkison
  • reactiveui/refit@​147282aa57f889a29d02b13654c38e0252c9f1c0 perf: replace StringBuilder with ValueStringBuilder in RoundTripEscapePath (#​2253) @​TimothyMakkison
  • reactiveui/refit@​5dcfcc91618ba05a506f4c037fc97ac73da9c6d7 perf: cut source generator allocations and roughly halve generation time (#​2259) @​glennawatson

🧹 General Changes

  • reactiveui/refit@​3d0546d41691dcbcf0be73732e464beb2ec7eb67 build: add PerformanceSharp.Analyzers and upgrade StyleSharp.Analyzers to 3.17.7 (#​2206) @​glennawatson
  • reactiveui/refit@​ddc42c9cb456c2f74140b37a4375f63dc11139f6 build: upgrade StyleSharp/PerformanceSharp analyzers to 3.26.0 (#​2227) @​glennawatson
  • reactiveui/refit@​a9932f856788daf92b642423473c70ee55944786 chore: enable 1000 lines for real @​glennawatson
  • reactiveui/refit@​8cc1c374c227f5cd05168e775d98741e06f5a485 chore: Relax number of file lines to 1000 lines instead of 500 @​glennawatson
  • reactiveui/refit@​44f81dedf6d153fd0a44f8547e9f0620a2debcef ci: gate native AOT smoke test via shared reusable workflow (#​2244) @​glennawatson
  • reactiveui/refit@​393b245a1be45d2840c9e093b076c1f2ae29e13a ci: add alpha/beta/rc pre-release channel to release workflow @​glennawatson
    ... (truncated)

14.0.0-beta.3

🗞️ What's Changed

💥 Breaking Changes

  • reactiveui/refit@​e511df252a1e53e760bf5a325a134953e50c172d feat!: reflection-free source-generated request building (#​2210) @​glennawatson @​TimothyMakkison

✨ Features

  • reactiveui/refit@​88e1c240245078bed6ba835920f0191c50911860 feat: add generic tests to ReflectionTests (#​2195) @​TimothyMakkison
  • reactiveui/refit@​463f5cfafb21a805cfeb9b9f4de6f07dee5fdbb5 feat: add [Timeout] attribute for per-method request timeouts (#​2238) @​glennawatson
  • reactiveui/refit@​294e63a4a48d9164ea5daf958f2fb5eb29120c77 feat: add success guards to the non-generic IApiResponse (#​2242) @​glennawatson
  • reactiveui/refit@​f754684d8d67f62489dfa304e0630b98c68b7fd8 feat: add interface-level [PathPrefix] attribute for a shared route prefix (#​2240) @​glennawatson
  • reactiveui/refit@​99c055b4064184bcc5b32efdaa250fa447474c7b feat: support optional url segments with {name?} syntax (#​2237) @​glennawatson
  • reactiveui/refit@​759a3c0fe2d43e46cd1e0000cedef824d97c238d feat: support returning the built HttpRequestMessage without sending (#​2235) @​glennawatson
  • reactiveui/refit@​d9b3d5f3ac28687cae557e9d6c4ed0901f9ea043 feat: support Server-Sent Events as a streaming content format (#​2232) @​glennawatson
  • reactiveui/refit@​1e35cc9c0d1ed07e10af1f671b90d25c4314787c feat: add [Url] attribute for absolute request URLs (#​2236) @​glennawatson
  • reactiveui/refit@​7c338710b98dcba74d12f4942b4a4c1d00dd0852 feat: add opt-in RefitSettings.ValidateHeaders (#​2225) @​glennawatson
  • reactiveui/refit@​b583a34b266de4cab5173d8c259f947f19aad03b feat: add null handling for round trip parameter and add verifying test (#​2201) @​TimothyMakkison
  • reactiveui/refit@​485c63211a86144228423844452c7df33c35ab61 feat: opt-in [FormObject] flattens a model into multipart form fields (#​2245) @​glennawatson
  • reactiveui/refit@​7ac3e1a3e9b7d4dd28a6ca1f7e00a6e9319d97ab feat: fix failiure when multiple generic overloads (#​2199) @​TimothyMakkison
  • reactiveui/refit@​852cb2c39b3740670a1e17d9c1470a551c09e2aa feat: move version configuration into AddConfiguredRequestOptions (#​2214) @​glennawatson @​TimothyMakkison
  • reactiveui/refit@​a2b158139ffc46d351920f7373dda655d4683319 feat: add analyzer diagnostics for invalid Refit interfaces (#​2220) @​glennawatson
  • reactiveui/refit@​4068d9739554a2649d1ec954e480cde1a75430a2 feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#​2205) @​glennawatson @​JavierGarcíadelaNocedaArgüelles @​jgarciadelanoceda
  • reactiveui/refit@​ed63528dc18dc28925889045c736ff0d21e7f9a0 feat: optional auth header and scoped authorization token provider (#​2221) @​glennawatson
  • reactiveui/refit@​7bf7b41a0dd58119c032caa6cda991676278441f feat: inline constrained-generic path-bound objects in the source generator (#​2222) @​glennawatson
  • reactiveui/refit@​14895a493c84cea284c881cd5e0a5af656aa5b8b feat: expose call argument values to DelegatingHandlers (#​2223) @​glennawatson
  • reactiveui/refit@​37efb4e543ed8a04311b344f36a444f535408bc0 feat: add per-type URL parameter formatter registry (#​2226) @​glennawatson
  • reactiveui/refit@​aa1c19bfce5fc269dee974c024598f02d2a79e59 feat: publish method name and route template in request options (#​2239) @​glennawatson

🐛 Fixes

  • reactiveui/refit@​809de10e91f198bd3089f61f3fbf5169feffc53c fix: do not dispose caller-supplied request streams (#​2234) @​glennawatson
  • reactiveui/refit@​17c24d82ab530b47c098c6a68b4b60c6a6190a99 fix: name generated helper types per assembly to avoid InternalsVisibleTo conflicts (#​2257) @​glennawatson
  • reactiveui/refit@​71634f2c5d0845c311b1cf4f4bb512437fe86fb5 fix: escape keyword identifiers in generated interface member names (#​2248) @​glennawatson
  • reactiveui/refit@​02a037bccc6fa13d76aae72bfeeb1d0877992158 fix: flatten nested objects in url-encoded request bodies (#​2224) @​glennawatson

⚡ Performance

  • reactiveui/refit@​b575c9d95c6101d5b043188075ffdef8d3f7bc50 perf: AllAttributesCache replace Lazy with laziliy initialised code (#​2211) @​TimothyMakkison
  • reactiveui/refit@​fc06c57dd872971a79ded40cdb5e3fd7221ecd19 perf: check for allowUnmatchedParameter before calling IndexOf (#​2252) @​TimothyMakkison
  • reactiveui/refit@​f24d1713f9682c6395f46264893a2dd19c732a58 perf: wrap helper methods in MethodImplOptions.AggressiveInlining (#​2260) @​TimothyMakkison
  • reactiveui/refit@​5dcfcc91618ba05a506f4c037fc97ac73da9c6d7 perf: cut source generator allocations and roughly halve generation time (#​2259) @​glennawatson
  • reactiveui/refit@​147282aa57f889a29d02b13654c38e0252c9f1c0 perf: replace StringBuilder with ValueStringBuilder in RoundTripEscapePath (#​2253) @​TimothyMakkison

🧹 General Changes

  • reactiveui/refit@​3d0546d41691dcbcf0be73732e464beb2ec7eb67 build: add PerformanceSharp.Analyzers and upgrade StyleSharp.Analyzers to 3.17.7 (#​2206) @​glennawatson
  • reactiveui/refit@​8cc1c374c227f5cd05168e775d98741e06f5a485 chore: Relax number of file lines to 1000 lines instead of 500 @​glennawatson
  • reactiveui/refit@​393b245a1be45d2840c9e093b076c1f2ae29e13a ci: add alpha/beta/rc pre-release channel to release workflow @​glennawatson
  • reactiveui/refit@​44f81dedf6d153fd0a44f8547e9f0620a2debcef ci: gate native AOT smoke test via shared reusable workflow (#​2244) @​glennawatson
  • reactiveui/refit@​ddc42c9cb456c2f74140b37a4375f63dc11139f6 build: upgrade StyleSharp/PerformanceSharp analyzers to 3.26.0 (#​2227) @​glennawatson

✅ Tests

  • reactiveui/refit@​e5da8b850622d8f99b7d41dcb4e69909ba709b85 test: reach 100% product code coverage (#​2243) @​glennawatson
  • reactiveui/refit@​e67c5c43dd10ff6a59d6d5e6a91bfd5d8eca5c69 test: cover TransportExceptionFactory cancellation and timeout behavior (#​2203) @​arpitjain099 @​glennawatson
    ... (truncated)

14.0.0-beta.2

🗞️ What's Changed

💥 Breaking Changes

  • reactiveui/refit@​e511df252a1e53e760bf5a325a134953e50c172d feat!: reflection-free source-generated request building (#​2210) @​glennawatson @​TimothyMakkison

✨ Features

  • reactiveui/refit@​88e1c240245078bed6ba835920f0191c50911860 feat: add generic tests to ReflectionTests (#​2195) @​TimothyMakkison
  • reactiveui/refit@​485c63211a86144228423844452c7df33c35ab61 feat: opt-in [FormObject] flattens a model into multipart form fields (#​2245) @​glennawatson
  • reactiveui/refit@​463f5cfafb21a805cfeb9b9f4de6f07dee5fdbb5 feat: add [Timeout] attribute for per-method request timeouts (#​2238) @​glennawatson
  • reactiveui/refit@​294e63a4a48d9164ea5daf958f2fb5eb29120c77 feat: add success guards to the non-generic IApiResponse (#​2242) @​glennawatson
  • reactiveui/refit@​7c338710b98dcba74d12f4942b4a4c1d00dd0852 feat: add opt-in RefitSettings.ValidateHeaders (#​2225) @​glennawatson
  • reactiveui/refit@​f754684d8d67f62489dfa304e0630b98c68b7fd8 feat: add interface-level [PathPrefix] attribute for a shared route prefix (#​2240) @​glennawatson
  • reactiveui/refit@​d9b3d5f3ac28687cae557e9d6c4ed0901f9ea043 feat: support Server-Sent Events as a streaming content format (#​2232) @​glennawatson
  • reactiveui/refit@​99c055b4064184bcc5b32efdaa250fa447474c7b feat: support optional url segments with {name?} syntax (#​2237) @​glennawatson
  • reactiveui/refit@​759a3c0fe2d43e46cd1e0000cedef824d97c238d feat: support returning the built HttpRequestMessage without sending (#​2235) @​glennawatson
  • reactiveui/refit@​1e35cc9c0d1ed07e10af1f671b90d25c4314787c feat: add [Url] attribute for absolute request URLs (#​2236) @​glennawatson
  • reactiveui/refit@​b583a34b266de4cab5173d8c259f947f19aad03b feat: add null handling for round trip parameter and add verifying test (#​2201) @​TimothyMakkison
  • reactiveui/refit@​7ac3e1a3e9b7d4dd28a6ca1f7e00a6e9319d97ab feat: fix failiure when multiple generic overloads (#​2199) @​TimothyMakkison
  • reactiveui/refit@​852cb2c39b3740670a1e17d9c1470a551c09e2aa feat: move version configuration into AddConfiguredRequestOptions (#​2214) @​glennawatson @​TimothyMakkison
  • reactiveui/refit@​a2b158139ffc46d351920f7373dda655d4683319 feat: add analyzer diagnostics for invalid Refit interfaces (#​2220) @​glennawatson
  • reactiveui/refit@​aa1c19bfce5fc269dee974c024598f02d2a79e59 feat: publish method name and route template in request options (#​2239) @​glennawatson
  • reactiveui/refit@​37efb4e543ed8a04311b344f36a444f535408bc0 feat: add per-type URL parameter formatter registry (#​2226) @​glennawatson
  • reactiveui/refit@​4068d9739554a2649d1ec954e480cde1a75430a2 feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#​2205) @​glennawatson @​JavierGarcíadelaNocedaArgüelles @​jgarciadelanoceda
  • reactiveui/refit@​ed63528dc18dc28925889045c736ff0d21e7f9a0 feat: optional auth header and scoped authorization token provider (#​2221) @​glennawatson
  • reactiveui/refit@​7bf7b41a0dd58119c032caa6cda991676278441f feat: inline constrained-generic path-bound objects in the source generator (#​2222) @​glennawatson
  • reactiveui/refit@​14895a493c84cea284c881cd5e0a5af656aa5b8b feat: expose call argument values to DelegatingHandlers (#​2223) @​glennawatson

🐛 Fixes

  • reactiveui/refit@​71634f2c5d0845c311b1cf4f4bb512437fe86fb5 fix: escape keyword identifiers in generated interface member names (#​2248) @​glennawatson
  • reactiveui/refit@​809de10e91f198bd3089f61f3fbf5169feffc53c fix: do not dispose caller-supplied request streams (#​2234) @​glennawatson
  • reactiveui/refit@​02a037bccc6fa13d76aae72bfeeb1d0877992158 fix: flatten nested objects in url-encoded request bodies (#​2224) @​glennawatson

⚡ Performance

  • reactiveui/refit@​b575c9d95c6101d5b043188075ffdef8d3f7bc50 perf: AllAttributesCache replace Lazy with laziliy initialised code (#​2211) @​TimothyMakkison

🧹 General Changes

  • reactiveui/refit@​44f81dedf6d153fd0a44f8547e9f0620a2debcef ci: gate native AOT smoke test via shared reusable workflow (#​2244) @​glennawatson
  • reactiveui/refit@​393b245a1be45d2840c9e093b076c1f2ae29e13a ci: add alpha/beta/rc pre-release channel to release workflow @​glennawatson
  • reactiveui/refit@​3d0546d41691dcbcf0be73732e464beb2ec7eb67 build: add PerformanceSharp.Analyzers and upgrade StyleSharp.Analyzers to 3.17.7 (#​2206) @​glennawatson
  • reactiveui/refit@​ddc42c9cb456c2f74140b37a4375f63dc11139f6 build: upgrade StyleSharp/PerformanceSharp analyzers to 3.26.0 (#​2227) @​glennawatson

✅ Tests

  • reactiveui/refit@​e67c5c43dd10ff6a59d6d5e6a91bfd5d8eca5c69 test: cover TransportExceptionFactory cancellation and timeout behavior (#​2203) @​arpitjain099 @​glennawatson
  • reactiveui/refit@​865d0f25a83697fc9a3f5b779cb45c78c7cdc9d7 test(refit.testing): cover retry and timeout scenarios (#​2208) @​glennawatson
  • reactiveui/refit@​e5da8b850622d8f99b7d41dcb4e69909ba709b85 test: reach 100% product code coverage (#​2243) @​glennawatson

📝 Documentation

  • reactiveui/refit@​69eb3ee67d47cd0463f5258c023931bfe4ea462b docs: document IQueryConverter and httpClientName client-name override (#​2233) @​glennawatson
  • reactiveui/refit@​544db0b5671bfe5bec46185ed3298ba36119af65 docs: make v12 Error.Content migration discoverable and add interface composition example (#​2217) @​glennawatson

... (truncated)

14.0.0-beta.1

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

  • reactiveui/refit@​e511df252a1e53e760bf5a325a134953e50c172d feat!: reflection-free source-generated request building (#​2210) @​glennawatson @​TimothyMakkison

✨ Features

  • reactiveui/refit@​485c63211a86144228423844452c7df33c35ab61 feat: opt-in [FormObject] flattens a model into multipart form fields (#​2245) @​glennawatson
  • reactiveui/refit@​88e1c240245078bed6ba835920f0191c50911860 feat: add generic tests to ReflectionTests (#​2195) @​TimothyMakkison
  • reactiveui/refit@​463f5cfafb21a805cfeb9b9f4de6f07dee5fdbb5 feat: add [Timeout] attribute for per-method request timeouts (#​2238) @​glennawatson
  • reactiveui/refit@​7c338710b98dcba74d12f4942b4a4c1d00dd0852 feat: add opt-in RefitSettings.ValidateHeaders (#​2225) @​glennawatson
  • reactiveui/refit@​294e63a4a48d9164ea5daf958f2fb5eb29120c77 feat: add success guards to the non-generic IApiResponse (#​2242) @​glennawatson
  • reactiveui/refit@​d9b3d5f3ac28687cae557e9d6c4ed0901f9ea043 feat: support Server-Sent Events as a streaming content format (#​2232) @​glennawatson
  • reactiveui/refit@​759a3c0fe2d43e46cd1e0000cedef824d97c238d feat: support returning the built HttpRequestMessage without sending (#​2235) @​glennawatson
  • reactiveui/refit@​f754684d8d67f62489dfa304e0630b98c68b7fd8 feat: add interface-level [PathPrefix] attribute for a shared route prefix (#​2240) @​glennawatson
  • reactiveui/refit@​99c055b4064184bcc5b32efdaa250fa447474c7b feat: support optional url segments with {name?} syntax (#​2237) @​glennawatson
  • reactiveui/refit@​1e35cc9c0d1ed07e10af1f671b90d25c4314787c feat: add [Url] attribute for absolute request URLs (#​2236) @​glennawatson
  • reactiveui/refit@​b583a34b266de4cab5173d8c259f947f19aad03b feat: add null handling for round trip parameter and add verifying test (#​2201) @​TimothyMakkison
  • reactiveui/refit@​7ac3e1a3e9b7d4dd28a6ca1f7e00a6e9319d97ab feat: fix failiure when multiple generic overloads (#​2199) @​TimothyMakkison
  • reactiveui/refit@​852cb2c39b3740670a1e17d9c1470a551c09e2aa feat: move version configuration into AddConfiguredRequestOptions (#​2214) @​glennawatson @​TimothyMakkison
  • reactiveui/refit@​aa1c19bfce5fc269dee974c024598f02d2a79e59 feat: publish method name and route template in request options (#​2239) @​glennawatson
  • reactiveui/refit@​37efb4e543ed8a04311b344f36a444f535408bc0 feat: add per-type URL parameter formatter registry (#​2226) @​glennawatson
  • reactiveui/refit@​a2b158139ffc46d351920f7373dda655d4683319 feat: add analyzer diagnostics for invalid Refit interfaces (#​2220) @​glennawatson
  • reactiveui/refit@​4068d9739554a2649d1ec954e480cde1a75430a2 feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#​2205) @​glennawatson @​jgarciadelanoceda
  • reactiveui/refit@​ed63528dc18dc28925889045c736ff0d21e7f9a0 feat: optional auth header and scoped authorization token provider (#​2221) @​glennawatson
  • reactiveui/refit@​7bf7b41a0dd58119c032caa6cda991676278441f feat: inline constrained-generic path-bound objects in the source generator (#​2222) @​glennawatson
  • reactiveui/refit@​14895a493c84cea284c881cd5e0a5af656aa5b8b feat: expose call argument values to DelegatingHandlers (#​2223) @​glennawatson

🐛 Fixes

  • reactiveui/refit@​809de10e91f198bd3089f61f3fbf5169feffc53c fix: do not dispose caller-supplied request streams (#​2234) @​glennawatson
  • reactiveui/refit@​02a037bccc6fa13d76aae72bfeeb1d0877992158 fix: flatten nested objects in url-encoded request bodies (#​2224) @​glennawatson

⚡ Performance

  • reactiveui/refit@​b575c9d95c6101d5b043188075ffdef8d3f7bc50 perf: AllAttributesCache replace Lazy with laziliy initialised code (#​2211) @​TimothyMakkison

🧹 General Changes

  • reactiveui/refit@​44f81dedf6d153fd0a44f8547e9f0620a2debcef ci: gate native AOT smoke test via shared reusable workflow (#​2244) @​glennawatson
  • reactiveui/refit@​393b245a1be45d2840c9e093b076c1f2ae29e13a ci: add alpha/beta/rc pre-release channel to release workflow @​glennawatson
  • reactiveui/refit@​3d0546d41691dcbcf0be73732e464beb2ec7eb67 build: add PerformanceSharp.Analyzers and upgrade StyleSharp.Analyzers to 3.17.7 (#​2206) @​glennawatson
  • reactiveui/refit@​ddc42c9cb456c2f74140b37a4375f63dc11139f6 build: upgrade StyleSharp/PerformanceSharp analyzers to 3.26.0 (#​2227) @​glennawatson

✅ Tests

  • reactiveui/refit@​e5da8b850622d8f99b7d41dcb4e69909ba709b85 test: reach 100% product code coverage (#​2243) @​glennawatson
  • reactiveui/refit@​e67c5c43dd10ff6a59d6d5e6a91bfd5d8eca5c69 test: cover TransportExceptionFactory cancellation and timeout behavior (#​2203) @​arpitjain099 @​glennawatson
  • reactiveui/refit@​865d0f25a83697fc9a3f5b779cb45c78c7cdc9d7 test(refit.testing): cover retry and timeout scenarios (#​2208) @​glennawatson
    ... (truncated)

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

---
updated-dependencies:
- dependency-name: Refit.HttpClientFactory
  dependency-version: 14.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jul 27, 2026
@TheCodeTraveler
TheCodeTraveler enabled auto-merge (squash) July 27, 2026 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant