Rider 2023.1 improves support for C#, including a set of inspections to optimize and speed up your work with various types of collections, and more adjustable ways to introduce null checks in your code. Game development using Rider is bolstered by the introduction of support for Unity’s Data Oriented Tech Stack (DOTS) and Unreal Engine 5.2, including the recent updates to the Blueprints file format, support for Godot 4, as well as a host of other gamedev workflow enhancements. The latest version of the IDE also boasts some handy tweaks to the Editor, improvements to Version Control tools and working with Docker, as well as a bunch of improvements to the new UI and overall user experience.
Following Unity’s lead in moving from object-oriented to data-oriented design, Rider 2023.1 has introduced support for Data Oriented Tech Stack (DOTS) – a paradigm-shifting, CPU-friendly approach to building games.
We’ve added inspections and corresponding quick-fixes to optimize your work
with collections by reducing the number of lookups. For example, Rider will
now suggest removing redundant Contains
and ContainsKey
checks or using TryAdd
and TryGetValue
methods instead.
Rider’s integration with Perforce received a major upgrade with the addition of Perforce to the Version Control Systems (VCS) widget. The VCS widget for Perforce provides quick access to essential actions such as Commit, Revert, and Update Project. It also indicates the current workspace and displays the status of your connection.
During a debugging session, you can now see the values visualized for HTML, XML, JSON, JWT, or URL-encoding string variables. Just click on the View link next to a string in the Threads & Variables tab of the Debug tool window. Alternatively, click on the View link that appears when you hover over a variable in the Editor.
We’ve introduced a set of inspections with corresponding quick-fixes to optimize and speed up your work with different types of collections by reducing the number of lookups in collections:
Contains(item)
check before adding the item into HashSet
or other collections implementing the ISet
interface.
ContainsKey(key)
check before adding the item into
Dictionary
or other collections implementing the
IDictionary
interface.
TryAdd(key, value)
for Dictionary
collections
or collections inherited from Dictionary
when possible.
TryGetValue(key, out value)
for IDictionary
collections when possible.
We provided the new Syntax style setting to help you enforce one consistent
style of not null
checks inside the patterns. It consists of two
options: empty recursive pattern syntax { }
and negated pattern
not null
, where the latter is the default one. You can adjust the
behavior anytime by going to
Settings/Preferences | Editor | Code Style | C# | Syntax Style tab.
Using the not null pattern has a disadvantage as it doesn't allow for variable
names to be introduced for the checked value like the recursive pattern
{ LastName: { } lastName }
can. We've added the
Add pattern variable context action over the not null
pattern to look for expressions accessing the same value (since we are
introducing a variable name) and replace all of them with the newly
introduced name to consolidate all of the accesses to the same value.
.NET 6.0 SDK introduced a new API for null
checking -
ArgumentNullException.ThrowIfNull
. Our code analysis engine has
recognized this checking approach since that time, but there was no option to
use this API as a default style of null checks produced by Rider.
In the 2023.1 release we added an ArgumentNullException.ThrowIfNull
pattern to Settings/Preferences | Editor | Code Style | C# | Null checking
for Rider.
If you use property pattern matching heavily, try our new inspection with a quick-fix to extract common elements from several property patterns when they come together in the code flow. The code generated by the Extract common property pattern quick-fix helps you reduce code repetition by moving common property patterns to a higher-level pattern.
C# developers often rely on the #region
directive and code folding
in the IDE to structure their code. Refactoring may leave some
#region
’s empty, which can make the code look misleading when
collapsed. With this new code inspection, you'll be able to identify empty
#region
’s in their collapsed state and clean up the code with a
corresponding quick-fix.
span.SequenceEqual(“str”)
Code analysis now has a code inspection that will suggest replacing
span.SequenceEqual("stringLiteral")
with
span is "stringLiteral"
– a cleaner and more convenient C# syntax
solution than calling a function.
Lambda expressions in C# can have implicitly-typed parameters and inferred return types. However, explicit types can be added to clarify code in complex overload resolution scenarios. Starting from C# 11, it’s also possible to add a return type specification for lambda expressions.
To accomplish this, we’re introducing an Insert return type specification context action in version 2023.1. The action can be applied to all scopes, including method, class, file, project, or to the entire solution, to accomplish this.
C# or
/and
/not
patterns are useful for compact value checks, but
can be less recognizable than traditional expressions, such as ||
/&&
/!
.
They may also create hard-to-find bugs if parentheses are missed. To help with this
we introduced a new code analysis that warns you about "dead" checks inside complex
patterns.
We are continuing to improve our support of C# 11 list patterns. With the new Convert to list pattern context action you can turn collection length checks into a list pattern syntax. It works in any context where a check of a collection length can be done.
Data-Oriented Tech Stack (DOTS) is a major architectural change for Unity. It stores component data in contiguous vectors, which systems can access and modify in a more CPU-efficient manner. This leads to improved performance, especially with larger, more ambitious projects.
With this release, we’re introducing support for Unity DOTS to bolster Rider’s reputation as the most innovative IDE for game development.
With Rider 2023.1, you can take advantage of the following new features:
Find out everything you need to know about DOTS in Rider from this blog post and demo.
While it’s been possible to debug Android games via WiFi, sometimes it’s better just to use a cable. Rider 2023.1 now supports debugging Android games via USB.
Use the Attach to Unity Process dialog to see which projects are running on connected devices, and start debugging.
Rider 2023.1 will automatically create a temporary run configuration when debugging a player via the Attach to Unity Process dialog. This makes it easier to start another debugging session. You can save the run configuration to make it permanent, and share it with your team. This works with all supported players, including desktop, mobile devices, consoles, and USB devices (iOS or Android).
Rider already gives you online documentation for the .NET Base Class Libraries and core Unity API. However, with this release, it also gives you quick access to online documentation for Unity registry packages, including DOTS. You can view links to the documentation by either pressing F1 or consulting the Quick Documentation popup that appears when you hover over a symbol.
Like the rest of the product, Unity support in Rider is fully localized, and this extends to Unity’s API documentation and online help, wherever the translated documentation is available.
Starting with Unity 2022.2, the UI Toolkit is the recommended way to write UI extensions for the Unity Editor. To get you started, we’ve added 3 new customizable file templates based on the UI Toolkit: creating editor windows, property drawers, or custom Inspector editors. They are only available in Unity 2022.2 or later, and the IMGUI versions are still available.
As always, there are plenty of other changes and updates, such as more accurately
detecting serialized fields in your code, including complex scenarios using derived
types and the [SerializeReference]
attribute. We’ve also improved support
for finding usages of C# code in Unity animations, and highlighting your methods
as event handlers. A frequently requested update to the formatting engine to place
[Header]
attributes on a separate line has also been implemented.
Epic Games has merged UnrealHeaderTool (UHT) into UnrealBuildTool (UBT) in Unreal Engine 5.1 and 5.2. Rider 2023.1 is ready for these changes, and the UHT integration in Rider will work for the new Unreal Engine versions. Rider now also supports recent updates to the Blueprints file format, which will be included in Unreal Engine 5.2.
We’ve reworked the Unreal Class… context action which now offers a range of parent classes to choose from, as well as the option to specify whether the class is public or private. Overall, the dialog now looks and functions more in line with its Unreal Engine counterpart.
If a Blueprint file fails to be parsed by Rider, Rider will now display the parsing errors in a separate Blueprints tab in the Problems View window. This allows you to locate the problematic file in the native file system explorer. Each problem contains a short description of the kind of error that was detected.
Rider 2023.1 can now parse messages generated by the Clang compiler when building Unreal Engine games on macOS and Linux. All Clang warnings and errors in the Build Output tool window are parsed correctly, including links to files. Double-clicking on the link navigates you to the exact place in the code where the warning or error stems from.
When hovering over a macro, you can now see its expansion preview in the tooltip, with full syntax highlighting and proper code formatting. You can still use the Substitute macro call context action to expand it right in the editor, but the instant preview makes working with macros easier.
Rider now offers a built-in
UInterface live template for Unreal Engine
solutions. Similar to the existing UCLASS
, USTRUCT
,
and UENUM
live templates, UInterface lets you quickly add a new
interface class that follows the
Unreal Engine conventions, saving you
the time and effort of creating it manually.
You can now specify mappings for virtual and physical shader directories. If you have RiderLink installed in the game or engine project, you can also load shader mappings information from Unreal Engine.
The latest version of the Godot plugin for Rider comes with the following updates and fixes:
res://
completion was improved to increase its usability
and visibility. For certain known API calls, i.e.
GD.LoadPackedScene
, completion for string literals will be
immediately available, even before the res://
prefix is typed.
There’s a new Selection checkbox in Settings/Preferences | Editor | General | Appearance | Show Whitespaces that allows you to configure this setting so that Rider shows whitespaces as small dots only when you select code.
The code editor inside Rider will now render color and brush previews for the
values and references inside Avalonia XAML (.axaml
) and C# files,
just like it does for WPF applications.
We’ve implemented a way for Rider to hide type conversion hints for selected operators. To hide the inlay hints, place the caret next to an operator and use the Alt+Enter shortcut to trigger a context menu, then go to Configure Inlay Hints | Type Conversion Hints and select the Hide for... action.
You can also go to Settings / Preferences | Editor | Inlay Hints | C# | Type Conversion Hints to configure the list of operators for which you want to hide type conversion hints.
We’ve updated the Typo inspection so that it no longer checks the spelling of hashes and special values and doesn’t report them as misspelled. This update covers the following values:
Md5
, Sha1
, and Sha256
hex values.
Sha384
and Sha512
base64-encoded integrity values
with the shaNNN-
prefix.
JWT
tokens.
As it already does with NUnit, Rider can now display
parameter name hints for the attributes
InlineData
and InlineAutoData
in xUnit tests.
In Rider 2023.1, when you’re working with global and exported symbols in the Angular template, the IDE will automatically add an import for them into your component on code completion or when you use a quick-fix.
Rider 2023.1 includes support for TypeScript in Vue template expressions. The
Vue template expressions now sync with lang=”ts”
when added to script
tags. As a result, Rider can better evaluate TypeScript, providing preferences and
relevant refactorings matching what’s inside the script tag. You may have noticed
before that there were differences between settings and refactorings for pure
.js
and .ts
files. Now the lang attributes will match.
Rider will now transform your single- or double-quoted strings into template
literals automatically whenever you type ${
. This works for raw
strings as well as for JSX properties.
Learn more: What's New in WebStorm 2023.1
It’s now possible to zoom into and out of Rider, increasing or decreasing the size of all UI elements at once. From the main menu, select View | Appearance and adjust the IDE’s scaling.
In Rider 2023.1, we’ve introduced a new layout option that allows you to unify the width of the side tool windows or retain the ability to freely adjust their sizes as you customize your layout. The new Remember size for each tool window checkbox is available in Settings/Preferences | Appearance & Behavior | Tool Windows.
To provide you with more relevant and accurate search results, we continue our efforts to integrate machine-learning ranking into the Search Everywhere (Double Shift) functionality. The sorting algorithm in the Classes tab is now also powered by machine learning by default, along with the results in the Actions and Files tabs.
For the new UI, we’ve introduced the option to split the tool window area so that you can conveniently arrange these windows.
To add a tool window to this area and place it in the lower part, drag its icon along the sidebar and drop it under the separator. Alternatively, you can right-click on an icon to call the context menu and assign the new placement for a tool window using the Move to action.
To improve the user experience with Rider’s new UI on smaller screens, we’ve introduced Compact Mode, which provides a more consolidated look and feel due to the reduced heights for toolbars and tool window headers, scaled-down spacings and paddings, and smaller icons and buttons.
To turn on Compact Mode, go to the View menu and select Appearance | Compact Mode.
We’ve implemented one of the most popular feature requests for the IDE’s new UI – project tabs for macOS users. When you have several projects open, you can now easily switch between them using project tabs displayed under the main toolbar.
We’ve added the Show Hidden Tabs feature to the new UI. Next to the open tabs, you now have a drop-down showing the complete list of open tabs. Previously, they may have been hidden.
We’ve redesigned the Run widget in the main window header using calmer colors, so that its appearance is subtler and easier on the eyes.
For Rider 2023.1 we’ve fine-tuned the process of reviewing code inside the IDE. Our research shows that users typically switch between GitHub and their IDE for cases when they require code browsing. We’ve improved on this workflow by reworking the Pull Request tool window.
The window now has a dedicated tab for each pull request, displaying only essential information to help users focus on the task at hand. We also added a button for easy execution of the most important action for the pull request's current state.
With Rider 2023.1, we’ve implemented auto-completion in the Create New Branch popup. Once you start typing a name for your new branch, the IDE will suggest relevant prefixes based on the names of existing local branches.
We’ve improved the usability of the Branches popup. For instance, navigating between branches is now easier, as they are grouped and stored in expandable lists.
Schema Compare is an essential tool for database development and maintenance. It lets users compare two databases to quickly identify the differences between them, ensure there are no discrepancies, and keep the data up to date.
Rider 2023.1 introduces Schema Compare for connected databases, SQL Server
database projects, and .dacpac
files. To initiate the comparison,
right-click on the database project file in the Solution Explorer and choose
Schema Compare....
We’ve created a dedicated editor window where you can view and edit
Schema Compare (.scmp
) files. Additionally, the
Problems View window will now include the issues identified as a
result of database comparison and the ones spotted by database model validation.
Important: Rider’s Schema Compare implementation is based on SQL Server Data Tools and therefore requires you to have Microsoft Visual Studio (version 2017 or newer) installed on your computer.
Fast mode is now available to run Docker projects in Rider. Previously, you
could only use it for debugging. We’ve also made it possible to use Fast mode
with a wider range of Dockerfile
s. Last but not least, we’ve made Fast mode
even faster by pulling the Docker images and inspecting them during solution
startup.
Rider 2023.1 can generate Docker Compose run configurations from
.dcproj
project files automatically upon opening a solution. This
version of the IDE is also able to generate Dockerfile
run configurations
whenever there’s a DockerfileFile project property specified or a Docker
profile included in the launchSettings.json
file.
Additional customization can be achieved by specifying
httpPort
, sslPort
, publishAllPorts
, and
useSSL
properties in the launch settings profile.
Whenever you deploy an application to Docker in Fast mode, you need to share the generated HTTPS development certificates between the host and the container. We’ve automated this step by adding a Share generated SSL certificate option for Docker run configurations. It is only possible to share trusted certificates on Windows and macOS, which means you need to manually trust the certificate on Linux.
Now you can add Docker Compose to your project to easily handle multiple containers at once. To do so, call up the context menu for a project and select Add | Docker Compose File to generate:
docker-compose.yml
file in the Solution Items solution
folder above all of the projects in the tree.
docker-compose.yml
.
The Dashboard tab of the Docker Compose node now pulls together logs from every Docker Compose container and displays them all in one place, updated in real time.
You can now easily connect to Azure Container Registry. Go to Settings/Preferences | Build, Execution, Deployment | Docker | Docker Registry and set it up by selecting the Docker V2 option in the Registry input field.
Sometimes you may want to run your application on a runtime that is installed in a custom folder. For this case, we’ve introduced an Add Custom Runtime option for the Runtime setting on the Run/Debug Configurations page.
We’ve also added paths to the default runtime versions in the Runtime dropdown list.
Rider 2023.1 also provides support for the DebugRoslynComponent
command from the launchSettings.json
file to help you debug Roslyn components
with ease.
You can now easily reattach Rider’s debugger to the last process it was attached to by simply going to Run | Reattach to Process... in the main menu or by using the keyboard shortcut Ctrl+Alt+Shift+F5. This new action becomes active after the first debugging session.
Rider can now debug startup code for WebAssembly (WASM) .NET applications. Previously, the WASM debugger could only attach after app initialization was done for most projects, because it required some time to perform port calculation, connection initialization, etc. The delay made it impossible to debug startup-time code.
Now, Rider waits for the page target initialization, connects the debugger, and only then does it start the actual app loading. That makes it possible to catch breakpoints set at the early stages of the app’s initialization logic.
When you start a debugging session for an ASP.NET Core application in Rider, it triggers the IDE to open a new browser window or a tab for it. Until now, running several debugging sessions would leave you with multiple open tabs that you would then have to close manually.
Now, whenever you debug an ASP.NET Core application with a JavaScript debugger enabled, Rider will close the corresponding browser tab the moment you stop the process.
We’ve introduced the new postfix templates match
, for
,
and with
to help you with writing required boilerplate code.
When starting a new match
expression, there's a suggestion to
generate all cases for union
, enum
, bool
and tuple values.
We’ve added support for regular expressions in string literals for F# (with
significant help from
Saul Rennison). When passing string
parameters annotated with [RegexPatternAttribute]
or
[StringSyntax(StringSyntaxAttribute.Regex)]
, or if there is a
comment //language=regex
next to a string literal, Rider will
process strings as regular expressions, highlight the syntax and errors, and
offer auto-completion.
match
expression.
You can find the full list of F# updates and fixes here.
Rider 2023.1 introduces the first stage of localization into Chinese, Korean, and Japanese! You will get a partially localized UI, code inspections, an Alt+Enter menu, tool windows, and notifications, including those for Unity and Unreal Engine support.
To localize your IDE, go to Settings/Preferences | Plugins and search the Marketplace for a language pack plugin in your desired language. Install the plugin and restart the IDE to apply the changes. Alternatively, you can download a Chinese, Korean, or Japanese language pack plugin from the JetBrains Marketplace website and install it by going to Settings/Preferences | Plugins | ⚙️ | Install Plugin from Disk.
We’ve introduced a Trigger Continuous Testing action, as well as the option to set up a shortcut for it. The action makes it possible to trigger continuous testing directly, whereas previously, you could only do this indirectly by building or saving your project.
To assign a shortcut to this action, go to Settings/Preferences | Build, Execution, Deployment | Unit Testing | Continuous Testing, select Trigger Continuous Testing on..., and set up a shortcut of your choice.
Initial Astro support has landed, with a new plugin available to use in Rider. You can download the Astro plugin from JetBrains Marketplace, or install it directly from the IDE by going to Settings/Preferences | Plugins and searching for “Astro”.
The plugin provides basic functionality such as syntax highlighting, code completion with automatic imports, refactorings, navigation, intentions, code folding, Emmet support, and correct formatting.
Rider 2023.1 comes packed with improvements and fixes for code navigation. Rider now shows inherited members in the Structure view tool window, and we’ve restored Rider’s ability to display the class members of decompiled code in the Structure view.
Rider will now use IntelliJ IDEA’s Structure view popup when the Go to File Member command is initiated. This will enable the IDE to show the structure of a file and allow it to show symbols from compiled base types. We’ve also implemented grouping inside the popup, so you can tell where each item is located at a glance.
Reformat inactive preprocessor branches in file is a new task type for code cleanup we’re introducing in Rider 2023.1. The task enables you to reformat inactive preprocessor branches. It can only be applied to the entire file at once and works only with C# sources.
This task cannot reformat code hidden behind a preprocessor directive
#if
that is always false. The two most obvious examples of this
limitation are #if false ... #endif
and
#define A #if !A ... #endif
constructs.
Text search filters applied to unit test trees inside the Unit Tests and Unit Test Coverage tool windows, are now taken into account when running tests using the toolbar’s Run buttons. Only the tests that satisfy the search criteria will remain listed and run.
We have improved the way Rider handles renaming files in a project. From this version of Rider and onwards, whenever you rename a file inside your solution, a dialog will appear with the option to rename all relevant symbols (classes, interfaces, etc.) to match the change.