## RStudio 2026.07.0 "Pacific Dogwood" Release Notes

### New
- ([#5908](https://github.com/rstudio/rstudio/issues/5908)): Dates and times (such as the Files pane Modified column) are now formatted according to the system region by default, rather than always using a US-style format. A new settings menu on the Files pane toolbar adds options to use ISO-8601 formatting or the UTC time zone instead.
- ([#18077](https://github.com/rstudio/rstudio/issues/18077)): The Quarto Document dialog now offers separate PDF (Typst) and PDF (LaTeX) output options. Typst is bundled with Quarto and requires no additional software.
- ([#18020](https://github.com/rstudio/rstudio/pull/18020)): Add `rserver --check-config` (and the `rstudio-server check-config` admin subcommand) to validate the configuration file without starting the service, reporting all unrecognized options in a single pass. `--test-config` is now a deprecated alias for `--check-config` with the same behavior; it previously stopped at the first unrecognized option. Using `--test-config` prints a deprecation warning, and it will be removed in a future release. `--check-config` now also validates that configured file paths (secure-cookie-key-file, rsession-config-file, database-config-file) exist on disk, and reports the detected R installation (informational). In Posit Workbench builds, the check also covers database connectivity and license status.
- ([#17992](https://github.com/rstudio/rstudio/issues/17992)): The Find in Files replace preview and Replace All results no longer present matches whose proposed replacement is identical to the matched text; lines whose every match would be unchanged are omitted entirely.
- ([#10417](https://github.com/rstudio/rstudio/issues/10417)): RStudio can now reduce background file operations (recursive file monitoring, code indexing, and external-edit checks) for projects located on network or remote filesystems, improving responsiveness on slow drives. This applies automatically when a remote filesystem is detected, and can be configured globally (Tools > Global Options > General > Advanced) or overridden per-project (Project Options > General).

### Fixed
- ([#18148](https://github.com/rstudio/rstudio/issues/18148)): Fixed the editor's missing-packages banner sometimes failing to reappear when "Toggle Detect Missing Packages" was used to re-enable it after a per-file dismissal; package discovery could race with the dismissal property being cleared and silently suppress the banner.
- ([#18145](https://github.com/rstudio/rstudio/issues/18145)): Fixed the visual editor hanging at its loading spinner for every subsequently opened document after a visual-mode document (for example a freshly created Quarto document) was closed while its markdown conversion was still in flight. The stale document could also throw an uncaught `IndexOutOfBoundsException` while marking itself dirty after its tab was gone; the source pane now detaches a closed tab's handlers so a dismissed document can no longer act on the tab strip.
- ([#18138](https://github.com/rstudio/rstudio/issues/18138)): Fixed `View()` failing with `'length = 2' in coercion to 'logical(1)'` for objects containing a component whose class provides a `length()` method returning more than one value (for example the `Formula` objects stored in `mlogit` models). The Object Explorer now uses the internal length when inspecting such objects.
- ([#18134](https://github.com/rstudio/rstudio/issues/18134)): An error raised while activating the visual editor could leave the editor stuck on its loading spinner indefinitely, with no error reported. Such errors are now logged and reported through the standard error dialog instead of being silently swallowed.
- ([#18125](https://github.com/rstudio/rstudio/issues/18125)): Fixed autocompletion inside `geom_*()` calls failing to offer a ggplot2 aesthetic when the typed token matched only an aesthetic and not one of the function's formal arguments (for example, `linet` now completes to `linetype`).
- ([#18089](https://github.com/rstudio/rstudio/issues/18089)): Restored the Cmd+Alt+F (Ctrl+Alt+F) keyboard shortcut for "Run Current Function Definition", which had been unintentionally overridden by the "Find in Console" command. Find in Console is still available via the console toolbar and by pressing the Find (Cmd+F / Ctrl+F) shortcut while the console has focus.
- ([#14040](https://github.com/rstudio/rstudio/issues/14040)): Fixed the visual editor's "Editor content width" resetting to the default (full) width when more than one R Markdown or Quarto document was open in visual mode and the user interacted with one of them (for example right-clicking a misspelled word, opening a toolbar menu, switching tabs, or resizing a pane). Hidden visual-editor tabs no longer overwrite the shared content-width style.
- ([#17831](https://github.com/rstudio/rstudio/issues/17831)): Fixed autocomplete not updating when deleting a colon to go from `pkg:::` to `pkg::`; the completion list now correctly narrows from all objects to only exported objects.
- ([#17796](https://github.com/rstudio/rstudio/issues/17796)): The Title, Author, and Date fields in the New R Markdown, New Quarto Document, and Compile Notebook dialogs no longer show the browser's native spell-checking squiggles.
- ([#17758](https://github.com/rstudio/rstudio/issues/17758)): Fixed the console becoming unresponsive (sometimes for minutes, with the session entering uninterruptible sleep) after running a command that merely contained a word like "remove" or "update" -- in a comment, a string, or as part of another function name such as `str_remove_all()`. RStudio now parses the command and resolves each call's namespace before refreshing the Packages pane, so only genuine package-management calls (for example `install.packages()`, `remove.packages()`, or `renv::update()`) trigger the refresh and its potentially slow library scan. Base R's `remove()` and `update()` no longer do.
- ([#18091](https://github.com/rstudio/rstudio/pull/18091)): RStudio Server sessions now suspend and shut down faster. Stopping the server (or a session timing out) no longer waits up to several seconds for a now-disconnected browser to retrieve final events, and suspending no longer spends time serializing internal RStudio-managed options that are recreated on resume.
- ([#18046](https://github.com/rstudio/rstudio/issues/18046)): Fixed Copilot completions sometimes appearing only as a gutter icon (rather than inline) when the first completion in a document fell back to a next edit suggestion. Such fallback suggestions now honor the "automatically display next edit suggestions" preference instead of being collapsed to the gutter.
- ([#6796](https://github.com/rstudio/rstudio/issues/6796)): The Git History pane now shows the full commit message body (not just the subject line) when viewing commit details.
- ([#17982](https://github.com/rstudio/rstudio/issues/17982)): Fixed a race condition in RStudio Desktop where the viewer pane iframe could be blocked by Electron's navigation policy, causing cross-origin SecurityErrors when previewing markdown files or R Notebooks as HTML. The `setViewerUrl` IPC call is now awaited before the iframe navigates, ensuring the URL authority is registered in time.
- ([#18057](https://github.com/rstudio/rstudio/issues/18057)): Reduced the padding on text input fields and drop-down (select) controls, which had grown overly large (most noticeably in dark themes), and made the padding consistent across text inputs, password fields, and selects in both light and dark themes.
- ([#18037](https://github.com/rstudio/rstudio/issues/18037)): Fixed the Plots pane not being brought to the front when Posit Assistant runs code that produces a plot. Interactive agent code now activates the Plots pane like a console command does.
- ([#18033](https://github.com/rstudio/rstudio/issues/18033)): Fix ghost text set via `rstudioapi::setGhostText()` not being dismissed when navigating the cursor away or typing a non-matching character, which left it insertable by Tab even after it appeared to be gone.
- ([#17970](https://github.com/rstudio/rstudio/issues/17970)): Fix the Packages pane vulnerability dialog listing vulnerabilities that affect a different installed version of the clicked package; the dialog now shows only the vulnerabilities for that row's version. A package with vulnerability records from multiple repositories now shows a single combined warning icon and dialog instead of one per repository.
- ([#17985](https://github.com/rstudio/rstudio/issues/17985)): Fixed an issue where the Import Dataset preview dialog failed to display error messages when the readr preview subprocess encountered an error, causing the dialog to hang indefinitely waiting for data that would never arrive.
- ([#18003](https://github.com/rstudio/rstudio/issues/18003)): Fixed an issue where reformat-on-save with Air configured as an external formatter ignored the project's air.toml configuration.
- ([#17774](https://github.com/rstudio/rstudio/issues/17774)): Fixed reformat-on-save not formatting R scripts opened outside of an RStudio project (or with no project open), even though the "Reformat Document" command worked. Format-on-save is no longer restricted to files inside the active project.
- ([#6147](https://github.com/rstudio/rstudio/issues/6147)): The data viewer now scrolls continuously through the columns of a very wide data frame instead of paging through fixed blocks of columns, so a column's filter, sort, and pin are no longer limited to (or lost when leaving) the currently visible set of columns.
- ([#6147](https://github.com/rstudio/rstudio/issues/6147)): The data viewer's column-pagination arrows are replaced by a "Go to column" box in the toolbar that jumps to a column by name or number.
- ([#6147](https://github.com/rstudio/rstudio/issues/6147)): The data viewer's summary sidebar now lists every column of the frame, loading each column's summary as it scrolls into view.
- ([#6147](https://github.com/rstudio/rstudio/issues/6147)): The data viewer's summary sidebar now reflects the active filter and search, rather than always describing the whole frame.
- ([#17979](https://github.com/rstudio/rstudio/issues/17979)): Add a "Show Filter UI by default" toggle to the data viewer's Settings menu. When enabled, the filter bar is shown automatically each time a data frame is opened, instead of requiring a click to reveal it.
- ([#17993](https://github.com/rstudio/rstudio/issues/17993)): Add a "Use overlay scrollbars" toggle to the data viewer's Settings menu. When disabled, the data viewer uses native, always-visible scrollbars instead of the auto-hiding overlay scrollbars.
- ([#17807](https://github.com/rstudio/rstudio/issues/17807)): Fixed a startup stall and missing package vulnerability badges that could occur when an intermediary (such as a proxy) kept the connection to Posit Package Manager open after responding. RStudio's HTTP client now completes a response as soon as its full Content-Length body has been received, rather than waiting for the connection to close.
- ([#18019](https://github.com/rstudio/rstudio/issues/18019)): Fixed an issue where a transient connection failure while writing user state during startup could leave the IDE stuck on an empty grey screen.
- ([#1667](https://github.com/rstudio/rstudio/issues/1667)): On Linux Desktop, hardened middle-click (primary selection) paste in the editor and console: a selection is now flushed to the primary selection on mouse release rather than only after a short delay, and a middle-click paste falls back to the event's clipboard text when the tracked selection is empty, so quickly selecting and middle-click-pasting no longer pastes nothing.
- ([#18065](https://github.com/rstudio/rstudio/issues/18065)): Fixed an uncaught JavaScript exception thrown when an r2d3 widget requested the editor theme, caused by an uninjected user-state provider in the page's message listener. The theme handshake now completes so r2d3 widgets pick up the editor theme.
- ([#18068](https://github.com/rstudio/rstudio/issues/18068)): Auto-downloaded copies of the Air formatter are now installed under RStudio's per-user data directory (for example `~/.local/share/rstudio/air` on Linux or `%LOCALAPPDATA%\rstudio\air` on Windows) instead of `~/.local/lib/air`. Copies installed by older versions of RStudio in the previous location are still detected and reused.
- ([#18093](https://github.com/rstudio/rstudio/issues/18093)): Fixed interactive execution of `sql` chunks that use the `--|` cell-option comment syntax (for example `--| connection: con`). The option line is now stripped from the chunk body before the query is sent to the database, so backends such as MySQL and MariaDB that reject `--|` as invalid SQL syntax no longer error.

- ([#18139](https://github.com/rstudio/rstudio/issues/18139)): Fixed an issue on Windows where the R session started in the "C" locale instead of the operating system's locale, corrupting non-ASCII console input and breaking `list.files()` and other locale-sensitive operations for users whose locale is not ASCII-compatible (for example Turkish on Windows 11). The session now adopts the operating system locale at startup, restores the session locale rather than pinning it to "C" after rendering an R Markdown document, and logs locale synchronization failures instead of failing silently.
- ([#18101](https://github.com/rstudio/rstudio/issues/18101)): Fixed "Run Selection as Background Job" (and the related Source/Launcher job commands) appearing to do nothing when invoked from a detached source window on Windows Desktop. The job launcher dialog is shown in the main window, which is now brought forward so the dialog is visible.
- ([#18143](https://github.com/rstudio/rstudio/issues/18143)): Fixed the Object Explorer emitting `Setting class(x) to "environment"` warnings (and showing no description) for S4 objects wrapping environments, such as reference class instances. The explorer also no longer temporarily modifies the class of an environment being described.

### Dependencies
- Ace 1.43.5
- Copilot Language Server 1.509.1
- Electron 41.9.0
- Node.js 22.22.2 (copilot, Posit Assistant)
- Quarto 1.9.38
- xterm.js 6.0.0
