Update refit monorepo to v16 - #1853
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
3 times, most recently
from
June 24, 2026 13:58
cec204e to
d9f1255
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
2 times, most recently
from
July 1, 2026 22:32
a332ec3 to
f7a8579
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
from
July 3, 2026 02:00
f7a8579 to
b0f4a0f
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
from
July 25, 2026 09:27
b0f4a0f to
c8a1224
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
from
July 27, 2026 02:01
c8a1224 to
2bf2107
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
from
August 5, 2026 22:33
2bf2107 to
f005646
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
2 times, most recently
from
August 18, 2026 18:09
926f334 to
8e810d9
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
from
September 20, 2026 05:30
8e810d9 to
a32b32f
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
2 times, most recently
from
September 26, 2026 07:47
1b69ade to
5f510e5
Compare
renovate
Bot
force-pushed
the
renovate/major-refit-monorepo
branch
from
September 26, 2026 10:32
5f510e5 to
457c77e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
10.0.1→16.3.010.0.1→16.3.0Release Notes
reactiveui/refit (Refit)
v16.3.0: 16.3.0🗞️ What's Changed
✨ Features
053873cfeat(analyzers): explain why a method cannot generate and flag unbound route placeholders (#2340) @glennawatson🔗 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
d864935feat(testing): add controllable streams, request capture and a test clock to Refit.Testing (#2337) @glennawatson0418743feat(bodies): typed JSON Lines uploads from IEnumerable and IAsyncEnumerable (#2338) @glennawatson🧹 General Changes
2ecbf2achore: update packages, credit Refit's origins, remove stale files (#2336) @glennawatson7aa89fachore: remove the Jekyll site files now that GitHub Pages redirects to reactiveui.net @glennawatson✅ Tests
a463e8atest(bodies): cover the remaining typed JSON Lines branches (#2339) @glennawatson📝 Documentation
5d17ac9docs(readme): name the programme behind each sponsor @glennawatsonceb75e8docs(readme): link to the ReactiveUI sponsors page @glennawatsona330a63docs(readme): keep the README renderable on nuget.org @glennawatson176ebdbdocs: new Refit logo and official sponsor logos @glennawatson7333739docs(readme): credit OpenAI's Codex for Open Source support @glennawatson📦 Dependencies
b7ca029chore(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
aa139a2feat: add lazy paging with generated PagedEnumerable methods (#2332) @glennawatsonbb98726feat: register JSON contexts and accept JsonTypeInfo parameters (#2333) @glennawatson📝 Documentation
9df0751docs: point the code of conduct at the website @glennawatson📌 Other
5106e9cUpdate copyright year in LICENSE file @glennawatson🔗 Full Changelog: reactiveui/refit@v16.0.0...v16.1.0
🙌 Contributions
💖 Thanks to all the contributors: @glennawatson
v16.0.0: 16.0.0Summary
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
await.UseMonoRuntime=truealso run on Mono.Other changes
src/examples/Documentationhas a project for every website page, plus larger samples for topics such as multipart uploads, serializers and compression. Each project builds withRefit.slnxand checks its results against local replies, so none needs a live service.[Options]sendsOPTIONS, that[Url]accepts an empty path or/, and that[PathPrefix]does not add a leading slash. The Refit.Testing docs state thatVerifyAllCalledignores reusable and fallback routes.SECURITY.mdlists the supported versions and explains how to report a vulnerability through GitHub private reporting.sourceRefto 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
6f0507ffeat: expand generated request support & docs (#2329) @glennawatson6445e42feat: update nuget packages, update Renovate configuration, enhance generator tests, remove unused packages (#2330) @glennawatson1459f55feature: Remove runtime-async feature from Directory.Build.props (#2331) @glennawatson🧹 General Changes
ba8f492ci: let the shared fork SonarCloud workflow resolve the pull request itself @glennawatson1542153ci: remove SonarCloud scanning of fork pull requests @glennawatson7b1c3beci(lock): run the lock workflow at its own time of day @glennawatsondd2a75fci: pass sourceRef to the shared release workflow @glennawatson📝 Documentation
c2bd862docs(readme): link combined API reference @glennawatsondee79fcdocs: add security policy @glennawatson📦 Dependencies
45fcc59chore(deps): pin mcr.microsoft.com/dotnet/sdk docker tag toe622deb(#2324) renovate[bot]8b71ed0chore(deps): update dependency minver to v8 (#2320) renovate[bot]2d89767chore(deps): update dependency sonaranalyzer.csharp to 10.33.0.1635 (#2316) renovate[bot]2f75847chore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.11.2 (#2322) renovate[bot]9bf02a3chore(deps): update dependency verify.tunit to v32 (#2318) renovate[bot]96e91c6chore(deps): update dependency roslynator.analyzers to v5 (#2317) renovate[bot]47698c4chore(deps): pin github actions digests (#2323) renovate[bot]5d9fe43chore(deps): update dependency sonaranalyzer.csharp to 10.34.0.3385 (#2321) renovate[bot]38471c8chore(deps): update dependency publicapisharp.analyzers to v2 (#2328) renovate[bot]📌 Other
bb49573Update sponsors section in README @glennawatson5106e9cUpdate copyright year in LICENSE file @glennawatson🔗 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
1643323feat(body): compress request bodies (#2311) @glennawatson🐛 Fixes
96316a6fix(debugging): stop debugger displays rendering as a bare null (#2315) @glennawatson05c856afix(generator): keep the analyzers loadable in Visual Studio (#2309) @glennawatson1dc4377fix(headers): stop rewriting raw header values (#2310) @glennawatson📦 Dependencies
755b8c3chore(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
74cbb64fix(generator): ship a single Roslyn analyzer slot (#2305) @glennawatson⚡ Performance
b455f65perf(generator): return the request task instead of awaiting it (#2302) @glennawatson🧹 General Changes
0065f72build: raise the analyzer rules to error and fix the reported code (#2299) @glennawatson📦 Dependencies
46071ebchore(deps): update dependency sonaranalyzer.csharp to 10.32.0.713 (#2303) renovate[bot]51368eachore(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
6f5aa73feat: introduce GeneratedSingleTypeParameterAttributeProvider for single attribute type handling @glennawatson873c8bdfeat: keyed refit generated client DI registration (#2297) @rmja0ebbaf4feat: Implement a more legible Source Code (#2282) @glennawatson @JavierGarcíadelaNocedaArgüelles @jgarciadelanoceda🐛 Fixes
285cc67fix: resolve generated clients when the module initializer runs late (#2289) @glennawatsonee87983fix: differentiate explicitly empty string delimiter from "no delimiter" (#2295) @rmja69ee15ffix: Propagate cancellation exceptions during response buffering (#2284) @Lukas @radixy0🧹 General Changes
dc278d3chore(renovate): group related dependency cohorts (#2286) @glennawatson5d4a0b9build: track public API with PublicApiSharp.Analyzers (#2288) @glennawatson📦 Dependencies
7d6f29dchore(deps): update dependency sonaranalyzer.csharp to 10.31.0.145097 (#2290) @renovate[bot]52345acchore(deps): update dependency verify.tunit to 31.28.0 (#2291) @renovate[bot]🔗 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
132f72dfix(generator): support path and header bindings (#2281) @glennawatson⚡ Performance
2f16caaperf: escape query components in place (#2277) @glennawatson @jgarciadelanoceda6501f88perf: 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
v14.0.0: 14.0.0Refit 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
Refit.Reflectionpackage. Fully generated clients should not add it.ValueTask. This affects the success-guard methods,DefaultApiExceptionFactory.CreateAsync, and severalRefitSettingsdelegates. Most callers can continue toawaitthem; code that stores aTaskmay need.AsTask().ToString().ApiExceptionstack traces.AuthorizationHeaderValueGetterno longer sends a blankAuthorizationheader.Major fixes
InternalsVisibleToassemblies, and null parameter values round-trip correctly.Highlights
[PathPrefix], per-method[Timeout], absolute URLs with[Url], optional route segments, indexed query collections, header validation, and returning a builtHttpRequestMessagewithout sending it.IAsyncEnumerable<T>, and transport exceptions can be customized withTransportExceptionFactory.See the V14 migration details and complete feature documentation.
🗞️ What's Changed
💥 Breaking Changes
e511df2feat!: reflection-free source-generated request building (#2210) @glennawatson @TimothyMakkison✨ Features
88e1c24feat: add generic tests toReflectionTests(#2195) @TimothyMakkison463f5cffeat: add [Timeout] attribute for per-method request timeouts (#2238) @glennawatson294e63afeat: add success guards to the non-generic IApiResponse (#2242) @glennawatsonf754684feat: add interface-level [PathPrefix] attribute for a shared route prefix (#2240) @glennawatson65f864efeat: only generateAttributeProviderfield when not empty (#2271) @TimothyMakkison99c055bfeat: support optional url segments with {name?} syntax (#2237) @glennawatson759a3c0feat: support returning the built HttpRequestMessage without sending (#2235) @glennawatson88d5e68feat: add CollectionFormat.Indexed for indexed query collection expansion (#2262) @Copilot @glennawatson @jgarciadelanocedad9b3d5ffeat: support Server-Sent Events as a streaming content format (#2232) @glennawatson1e35cc9feat: add [Url] attribute for absolute request URLs (#2236) @glennawatson7c33871feat: add opt-in RefitSettings.ValidateHeaders (#2225) @glennawatsonb583a34feat: add null handling for round trip parameter and add verifying test (#2201) @TimothyMakkison485c632feat: opt-in [FormObject] flattens a model into multipart form fields (#2245) @glennawatson7ac3e1afeat: fix failiure when multiple generic overloads (#2199) @TimothyMakkison852cb2cfeat: move version configuration intoAddConfiguredRequestOptions(#2214) @glennawatson @TimothyMakkisona2b1581feat: add analyzer diagnostics for invalid Refit interfaces (#2220) @glennawatson4068d97feature: Create a TransportExceptionFactory to let the user decide the exception to be thrown (#2205) @glennawatson @jgarciadelanocedaed63528feat: optional auth header and scoped authorization token provider (#2221) @glennawatson7bf7b41feat: inline constrained-generic path-bound objects in the source generator (#2222) @glennawatson14895a4feat: expose call argument values to DelegatingHandlers (#2223) @glennawatson37efb4efeat: add per-type URL parameter formatter registry (#2226) @glennawatsonaa1c19bfeat: publish method name and route template in request options (#2239) @glennawatson♻️ Refactoring
aa2229brefactor: resolve analyzer diagnostics across solution (#2268) @ChrisPulman🐛 Fixes
8e4237bfix:Analyzer false positive on Indexed CollectionFormat (#2274) @jgarciadelanoceda809de10fix: do not dispose caller-supplied request streams (#2234) @glennawatson71634f2fix: escape keyword identifiers in generated interface member names (#2248) @glennawatson17c24d8fix: name generated helper types per assembly to avoid InternalsVisibleTo conflicts (#2257) @glennawatson78271e1fix: generate inline query building for nullable value-type query objects (#2265) @rmja02a037bfix: flatten nested objects in url-encoded request bodies (#2224) @glennawatson⚡ Performance
147282aperf: replaceStringBuilderwithValueStringBuilderinRoundTripEscapePath(#2253) @TimothyMakkisonb193498perf: replaceStringBuilderwithValueStringBuilder(#2270) @TimothyMakkisoneb92914perf: callPooledStringBuilderdirectly and removeConcatPartsandJoinParts(#2275) @TimothyMakkisonb575c9dperf:AllAttributesCachereplaceLazywith laziliy initialised code (#2211) @TimothyMakkison8382bedperf: reduce Refit.Reflection memory allocations (#2267) @glennawatsonfc06c57perf: check forallowUnmatchedParameterbefore callingIndexOf(#2252) @TimothyMakkisonf24d171perf: wrap helper methods inMethodImplOptions.AggressiveInlining(#2260) @TimothyMakkison8cea3f1perf: reduce runtime Refit memory allocations (#2263) @glennawatson5dcfcc9perf: cut source generator allocations and roughly halve generation time (#2259) @glennawatson🧹 General Changes
44f81deci: gate native AOT smoke test via shared reusable workflow (#2244) @glennawatsona9932f8chore: enable 1000 lines for real @glennawatson393b245ci: add alpha/beta/rc pre-release channel to release workflow @glennawatson8cc1c37chore: Relax number of file lines to 1000 lines instead of 500 @glennawatson✅ Tests
e5da8b8test: reach 100% product code coverage (#2243) @glennawatson865d0f2test(refit.testing): cover retry and timeout scenarios (#2208) @glennawatsone67c5c4test: cover TransportExceptionFactory cancellation and timeout behavior (#2203) @arpitjain099 @glennawatson📝 Documentation
544db0bdocs: make v12 Error.Content migration discoverable and add interface composition example (#2217) @glennawatson69eb3eedocs: document IQueryConverter and httpClientName client-name override (#2233) @glennawatson📦 Dependencies
3d0546d, @ddc42c9, @5cd9a96); Verify.DiffPlex 3.3.1 (@841ff03); Verify.TUnit 31.24.2, 31.24.3, 31.25.0, and 31.27.0 (@136d002, @e1512d1, @fb87be5, @cf77d87); actions/setup-dotnet v6 (@b920e21); and the lock-threads workflow action (@d688b1f).🔗 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
CS0436build error fromPrimitivesR3BridgeGeneratedAttribute(#2176, #2194). BumpsReactiveUI.Primitivesto 6.0.0, which moves the R3 bridge generator out of the runtime package. Projects usingInternalsVisibleTo(e.g. test projects) build again, and the<Analyzer Remove=... />workaround is no longer needed.AddRefitGeneratedClientand NativeAOT. Now coversenum,Guid,DateTime/DateTimeOffset/DateOnly/TimeOnly/TimeSpan, all integer widths (incl.Int128/UInt128/Half), and anyIFormattable(#2193).✨ Features
b592413feat: add generated request building support for path parameters in the URL. (#2174) @calebkiage @glennawatson9bc6754feat: support more path parameter types in generated request building (#2193) @glennawatson🧹 General Changes
ac79c76build: update NuGet dependencies (#2198) @glennawatson🔗 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.
TypeNameHandlingby 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.Refit.Testingpackage (#2184) — a first-party way to stub and verify Refit clients in tests without spinning up a realHttpClient. Supply canned responses for interface calls and assert which requests your code made, instead of hand-rollingHttpMessageHandlerfakes.✨ Features
cc24382feat: security hardening from audit (XXE, Newtonsoft type handling, redaction) (#2181) @glennawatson339cb8dfeat: add Refit.Testing package for stubbing and verifying clients (#2184) @glennawatson🧹 General Changes
5d272c8ci: run SonarCloud on fork pull requests @glennawatson📝 Documentation
533bbbedocs: slim fork-PR SonarCloud wrapper comments @glennawatson📌 Other
c0bbb5a[codex] Fix R3 bridge analyzer removal target (#2186) @ChrisPulman🔗 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
89f17aefeat: AOT-safe generated-only client DI registration and case-insensitive problem+json detection (#2172) @glennawatsonb31e9fefeat: read sent request body and synchronously inspect the error body on ApiException (#2175) @glennawatson🐛 Fixes
e3ec13ffix: correctly annotate error out parameters for nullable flow (#2177) @HulinCedric📝 Documentation
db33053docs: document v12 breaking changes and update package versions (#2180) @ChrisPulman📦 Dependencies
459aec4chore(deps): update dependency verify.diffplex to 3.3.0 (#2178) @renovate[bot]🔗 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.0Overview
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
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.[Body(BodySerializationMethod.JsonLines)]plus a streamingJsonLinesContent(application/x-ndjson), wired through both the reflection and source-gen paths.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.EnsureSuccessStatusCodeAsync()/EnsureSuccessfulAsync()are now available directly onIApiResponse<T>; a newIsSuccessfulWithContent(andHasContent) gives a single, mock-safe success-with-content check; nullable annotations on `IConfiguration
📅 Schedule: (in timezone Asia/Shanghai)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.