ReSharper/Rider 2025.3 Release Party
In a Nutshell
ReSharper/Rider 2025.3 delivers major performance gains in startup, navigation, and code completion, plus day-zero C# 14 support with extension members and new exception-handling assistance. The island UI introduces independent brightness/contrast controls, while AI chat unifies Juny and other agents with quota transparency and upcoming BYO-key support. F# gains cross-language type fixes, GDScript expands, and Unreal debugging now handles const expressions and Android mobile call stacks.
These notes were generated by AI and may contain inaccuracies.
ReSharper and Rider 2025.3 represents the final major release of the year, though smaller updates will continue to be released. The stream is being recorded for later viewing by those unable to attend live.
A Reddit AMA will be held the following day featuring the entire team including developers, QA, planning, and dev advocates. Questions can cover any topic about how the products work or future plans.
Significant performance gains were achieved across multiple areas, particularly in code completion, search, and navigation. File navigation access is now even faster than previous versions. Startup performance received focused attention with reductions in initialization frequency, improved cache loading, and optimizations for both cold starts and warm starts. Further performance work is planned for subsequent releases.
Game development initialization saw particular improvements with up to 20% faster loading times for previously opened Unreal solutions. Cached data enables quicker subsequent reopens of solutions.
The new island UI has been available in Early Access Program builds and received positive user feedback. The major release now includes this UI update. Users can customize brightness and contrast between the main editor and tool windows independently. This addresses feedback about eye strain from high contrast, allowing lower contrast options for different tool windows as needed.
The UI will continue to receive improvements based on ongoing user feedback even after the major release.
Day-zero support for .NET 10 and C# 14 is included. Extension members represent one of the most anticipated features, expanding beyond previous extension methods limited to instance methods. New capabilities include static members on types like string, instance properties, and operators.
The conversion workflow allows transforming regular extension methods using the "this" keyword into extension blocks, with options to convert all extensions in a file, project, or solution. Caution is advised regarding parameter naming during conversion, as one parameter name may be eliminated. Bidirectional conversion between regular extension methods and extension blocks is supported.
A new feature helps generate catch clauses for methods that may throw exceptions. Documentation on throwing methods is analyzed to identify specific exceptions like DriveNotFoundException and UnreachableException. The feature generates try-catch blocks with repeated documentation as comments, providing initial exception handling structure.
The ReSharper plugin for Visual Studio Code now supports source generators with completion, navigation, and visibility under project dependencies. The plugin includes solution explorer functionality, navigation, completion, code analysis, editing capabilities, UI testing, formatting, and typing assists.
The plugin works in Visual Studio Code compatible editors and is available in extension stores. It remains in public preview status with user feedback requested.
Eugene Audich maintains the F# plugin for Rider since 2016, before Rider's initial release. The plugin uses the F# compiler service extensively, requiring significant contributions back to the compiler. This interactive usage revealed issues not previously discovered by other applications.
Double-pressing the control key displays inferred types, helpful for languages with type inference. Annotations can be added manually or for entire expressions. Integration with F# assembly metadata enables features like auto-import during code completion for functions, active patterns, and union cases without spinning up the full compiler service.
Quick fixes for changing types now work extensively in F#, previously limited to small cases. The feature integrates with C# support for seamless cross-language refactoring. Rename refactoring works between languages, and type-changing quick fixes function across C# and F# boundaries.
For example, a method returning int used where string is expected can have its return type changed from the usage location. Parameter types can also be fixed, with changes propagating across language boundaries.
Feature updates for F# wait for compiler and language support before integration into Rider. Some features require additional work to integrate with ReSharper analysis, while others work automatically. Upcoming debugging improvements will make stepping through F# code more natural and easier.
Unions are identified as the feature C# could most benefit from adopting from F#, given that async, tuples, and records have already been incorporated. The pipeline operator is not considered suitable for C# due to different paradigms, with builders being the C# equivalent approach.
Nick Chaps has done a video about using extension members to add an operator to existing types and pipe them like in F#. This was described as an interesting idea.
Parameter hints were first introduced quite a while ago. During co-working in Cypress, the team came up with the idea to call it "push to hint," which originated from Teamspeak's push to talk feature. The idea had also been used in games and was common in the gaming community.
Jenna is the main F# developer for Rider and is multi-talented beyond just F# development. Jenna worked together with Alex on the F# plugin.
There is significant passion for OpenTelemetry in JetBrains' social media and blog. The OpenTelemetry plugin was introduced in the last release. The team wants to spread the plugin to all other JetBrains IDEs, but there are still Rider-specific things related to run configurations and integration that need to be addressed.
The OpenTelemetry plugin can be downloaded from the marketplace. The plugin works with services and adds an extra node in the services tab to see OpenTelemetry data based on resources. The sample project includes a cat API and a cat recommender service, with Docker compose run configurations and multiple services managed through the services tab.
HTTP requests can be added directly into projects to test endpoints. The plugin shows logs related to requests, metrics that are being reported, and traces. The service map draws based on details in the logs.
A new feature allows right-clicking on things to examine the trace, showing a timeline of what's happening, including how long the whole thing took and individual requests. This works even when crossing boundaries between different resources, providing a waterfall view.
The OpenTelemetry plugin is integrated into AI through internal MCP. Sasha discussed exciting developments with JetBrains AI inside Rider.
For this release, the team is moving towards streamlining everything and making everything as transparent and convenient as possible. Juny is being brought into the AI chat, which was previously occupied by the AI assistant only. Juny is the first natively integrated third-party agentic LLM provider in JetBrains IDEs alongside Claude.
If the Juny plugin is not installed, writing the first prompt and sending it into the chat will automatically install all components of the plugin. The Juny tool window will remain for some time to ensure a smoother transition toward a unified AI chat experience.
More transparency in terms of AI quota usage has been a long-requested feature. The AI assistant popup now shows monthly credit progress, how much has been used, how much time remains for the monthly quota, and access to settings.
Coming soon is the ability to bring your own key (BYO key), allowing users to connect personal accounts for LLM providers like OpenAI and Anthropic. Users will be able to connect personal accounts to JetBrains Rider and enjoy freedom of using whichever agentic provider or LLM provider they prefer.
The general philosophy is to make AI tools as open and convenient as possible. Many people strongly favor Claude for coding. Juny will always be available and its capabilities will continue to expand with more native integration. The AI assistant allows access to all different models when working with chat, and Juny works with a number of top-tier models for agentic purposes.
ACP (Agent Client Protocol) support is being worked on. Users will be able to connect any agent into Rider. A blog post from a couple of days ago shows examples of this functionality.
AI assistant came first, then when Juny became available, different approaches were tested to see what works for various workflows. The landscape of AI tooling is being shaped by a more unified approach to UI, leading to a switch toward a streamlined, intuitive approach with a unified access point to all AI tools.
There is interest in keeping the possibility to have two agents side by side, allowing one agent to do work while still researching the next thing to work on.
Cloud multi-line code completion has been brought into shader files. AI can now suggest changes in shader code, working inside shader blocks like CG include or CG program blocks, as well as inside shader files themselves.
Hovering over the choose key for completion item shows what's going on, including who is giving the information (AI assistant). If third-party plugins are installed, information from other providers may be available, and users can configure which key to use for completion.
Support for adding Perforce as an MCP server has been added for game developers using Perforce as version control, allowing AI assistants to make use of it.
An IL viewer is built into code for Unity development. The IL viewer shows the post-processed data from Unity, allowing developers to see exactly what the CLR is going to do.
Loading performance improvements for Unreal can be up to 20% faster. First stages of debugging mobile games for Unreal Engine games on Android are available, with full call stack support. More work is planned for this feature.
Const expression expressions inside Unreal projects can now be debugged. This allows debugging compile-time calculations like Fibonacci numbers that don't exist at runtime.
Support for GDScript has been brought into GDO based on an existing community plugin. Extended support includes nested classes, enums, and typed dictionary structures. Integrated support with the Chickensoft GDO test runner allows rebuilding projects, finding tests, and running them.
Code highlighting in inactive pre-processor branches is a difficult problem due to combinatorial explosion of possibilities and redefined items. This version offers extra highlighting for some active branches. This was not trivial even for C# code.
Pre-processors are described as evil. Supporting renaming across inactive branches would require understanding where something is calling or defining items in active branches, which becomes complicated when multiple methods with the same name exist across different pre-processor branches.
IntelliJ IDEA, WebStorm, and DataGrip also have similar what's new pages. When they met in person last time, those releases are good to watch.
An event is scheduled for tomorrow around noon Central European time. Questions can be posted on the JetBrains subreddit.
Sasha wrote over 45 blog posts this year. A recent blog post covers five stories of users who develop with Rider using the free for non-commercial use license, featuring open-source and educational projects created with Rider. Open-source developers are encouraged to reach out via email at the end of the blog post or in comments to discuss their projects.
The blog post shows how different people use the tools for a variety of projects, disciplines, and industries. The community license focuses on non-commercial use.
Definitely like and subscribe. The usual drill should have been mentioned at the beginning, but if viewers were here from the beginning, they know what was going on. Thanks again. See you another time.
Thanks to Sasha and Matt for joining and particularly also Jenna today. Thanks for everyone attending and also to our background help there. See you next time. Bye-bye. See you next time folks. Bye-bye.
Keep JetBrains in your library
Save the videos and channels worth coming back to, and find them again in one place.

