Xojo 2026r2.1 Release Notes
Release Date: 2026-08-04
You can find the release notes for 2026r2 here.
Highlights
New DesktopScrollableArea control
DesktopToolbar now supports different toolbar styles and symbol-based button icons
Jade now works with OpenAI, OpenRouter, and local LLMs; when used with Anthropic Claude or OpenAI, it can request project context including source code and compile errors
New AI panel in Settings
Improved copy-and-paste support for code items (properties, methods, etc.) into and out of Xojo
Added WebGraphics.DrawPath and FillPath methods and WebTextField/Area.Format property
Web applications now comply with more SEO requirements
DatabaseConnections in web projects can now be instantiated per session
Improved macOS console app code signing
Improved macOS app debugging, with support for Sandboxing, Hardened Runtime, Entitlements, and applied Provisioning Profiles
DesktopHTMLViewer now uses WebView2 when building for WinUI
iOS: New MobileMenuItem and MobilePopupMenu
Android: XMLDocument, MobileMenuItem support; MobilePopupMenu, MobileSwitch now use modern Material styling
New Code Editor page guide
Statistics
Bugs fixed: 14
Features added: 2
Documentation changes: 28
Examples changed: 1
IDE
Resolved Issues
Opening an Android project with an invalid KeyStore file path on Windows or Linux no longer raises an UnsupportedFormatException. (81647)
Fixed a NilObjectException that could occur when Jade requests project source code. (81636)
Fixed an issue where oversized custom Library icons could extend beyond the bounds of the Library list. Icons are now scaled to the appropriate maximum size before being displayed. (81614)
When no Developer ID is selected for macOS Console apps, we revert to the old path for Ad-Hoc codesigning on Debugged apps. (81591)
macOS: Reverting Notarizing macOS apps as .DMG files because it seems to fail under some, unclear, circumstances for some users / projects. (81667)
macOS: Fixed building Console apps when the selected Team for signing equals to None. (81628)
macOS: Fixed an issue where controls in the Inspector were not clipped correctly at the top while scrolling. (81599)
Framework
New Features
The AddSocket event description has been updated to include: The TCPSocket instance returned by this event is associated with a single connection and is not reused. (67128)
iOS: Added the ability to update the UI when a MobileMenuItem instance changes the value on any of its properties (title, icon, enabled, checkmark...) (81676)
Resolved Issues
Fixed another potential crash caused by attempting to close a container control that had already been destroyed. (81641)
Added that IS is not affected by the presence of a convert operator in addition to a comparison operator. (75672)
Desktop: Fixed an issue where closing a window containing Container controls could occasionally cause a crash. (81616)
iOS: Fixed an issue where the left navigation MobileToolbarButton item was going out of scope when menu selection was made from a different MobileToolbarButton (for example on a ToolBar). (81677)
iOS: Fixed not raising the Pressed event on MobileMessageBox when there is only one button. (81659)
iOS: Fixed showing MobileMessageBox when it is displayed from a Modal Screen. (81610)
macOS: Tooltips no longer cause intermittent crashes on macOS 27. (81687)
Documentation
Resolved Issues
Expanded SSLSocket Notes section with an explanation of CertificateRejectionFile, instructions for creating a self-signed certificate for testing using OpenSSL, and a guide for obtaining and installing a CA-signed certificate for production. (4649)
Clarified that the Show 64 bit Sizes setting in the Structure Editor Inspector is project-wide and affects all structures, not just the one currently selected. (51123)
Corrected Str function documentation: Color values are returned in &hAARRGGBB format (including the alpha channel), not &hRRGGBB as previously stated. (58987)
Added three-section format string examples (positive; negative; zero) to Double.ToString, Integer.ToString, and Single.ToString documentation. (61517)
Improved FolderItem.Type documentation to clarify that the property returns the FileType.Name (MIME name) string, added examples showing how to compare against a FileType object using .Name or implicit String conversion, and added a note explaining when the property returns empty (no matching File Type Set) with Extension as an alternative. (62008)
System.EnvironmentVariable documentation now includes a note that OS-managed variables such as PWD cannot be reliably set, a code example showing how to set the working directory for Shell commands using cd, and cross-references between System.EnvironmentVariable and Shell. (64824)
Fixed MemoryBlock.Ptr examples that assumed 32-bit pointer sizes (4 bytes) — updated to use correct 64-bit sizes (8 bytes per pointer) and added a note explaining the architecture dependency. (65809)
Clarified that Select Case string comparisons are case-insensitive. (67414)
Added a note to String.ToArray documenting that calling ToArray on an empty String returns an empty array with no elements, even when a delimiter is specified. (67553)
Expanded the XOJO_IPCPATH environment variable documentation to explain how the full IPC socket path is constructed on each platform, including the temp directory search order and Windows path, and clarified that IDECommunicator must use the same resolved path to connect. (68115)
Clarified in / (Division) docs that assigning a divide-by-zero result (NaN or infinity) to an integer type yields undefined, platform-dependent behavior. (68142)
Added a note in the Remote Debugging topic that on Windows, double-clicking the Machine Name or IP Address in the Remote Debugger Stub copies it to the clipboard. (68336)
Updated MouseCursor, DesktopUIControl, and RectControl documentation to clarify that image-based custom cursors work on both macOS and Windows OS; .cur and CURS resource file support is noted as a legacy option still available on Windows. (74847)
Clarified ExecuteSQL and SelectSQL descriptions to note that INSERT, UPDATE, and DELETE statements using a RETURNING clause return a RowSet and must use SelectSQL rather than ExecuteSQL. (75104)
Fixed garbled phrasing to used to render custom a custom cell → used to render a custom cell in WebListBox.CellRendererAt and the deprecated WebListBox.CellValueAt docs. (75168)
Added a note to the Array keyword's Type Considerations section explaining that hex literals cause a Type Mismatch when assigning to UInt8, UInt16, or UInt32 arrays, with a workaround using a typed ParamArray helper function. (75230)
Added notes to DrawPicture, DrawRectangle, and FillRectangle documenting that fractional coordinates on standard resolution (non-Retina/non-HiDPI) displays can cause blurring of high-contrast edges, with Round()/Ceiling() workarounds. (75870)
Added a warning to the Office Automation topic noting that collection accessor index parameters require Int32 rather than Int64, which affects 64-bit builds where Integer resolves to Int64; updated the code example accordingly. (75879)
Clarified in the Try documentation that when an exception occurs, execution of the remaining Try block stops immediately even without a Catch — a Try without Catch does not allow code to continue after an exception. (76011)
Clarified that DesktopCanvas.AcceptPictureDrop accepts dragged Picture objects, not image files from the file system, and added a cross-reference to AcceptFileDrop for file-based drops. (76173)
Added a note to the Remote Debugging page clarifying that the IDE debugger uses the local development machine's system settings, which may cause locale-sensitive values (numbers, dates, etc.) to display differently than they would on the remote machine. (76399)
DesktopListBox.HasHeader now correctly indicates that when rows are added via the Inspector, the first row will only be treated as the header when HasHeader is true before rows are added. (77341)
Added a note to DragItem documenting that UTI strings used with RawData and RawDataAvailable may only contain letters, digits, dots, and hyphens — underscores and other characters are not permitted per the UTI specification. (77344)
Updated IOException Description and Notes to reflect the full set of classes that can raise it (BinaryStream, FolderItem, PDFDocument, SerialConnection, SpecialFolder, TextInputStream, TextOutputStream), and removed the misleading reference in Notes to FolderItem.LastErrorCode which is not a currently supported property. (77623)
Updated Thread documentation to reflect that the Xojo framework is now largely safe for concurrent use with preemptive threads; clarified that XojoScript and Runtime.IterateObjects are the specific exceptions; expanded the shared-resource protection guidance to include MemoryBlock and note that read-only access does not require synchronization; noted that AddUserInterfaceUpdate is safe from a preemptive thread. (78696)
The list of roadmap items that has already been delivered has been restored. (81629)
Web: Added missing WebListBoxTextRenderer cross-references to WebListBoxCellRenderer and all sibling renderer pages; fixed incorrect description and added sample code to the WebListBoxTextRenderer page. (76469)
Web: WebHTMLViewer.LoadURL now clarifies that URL contents are loaded inside an IFrame and can affect the web app itself. (79688)
Examples
New Features
Added a new DesktopScrollableArea example. (81658)