Xojo 2025r3 Release Notes
Release Date: 2025-12-09
Highlights
Support for macOS Tahoe 26 and iOS 26
IDE now supports Libraries for Desktop, Web, Console and iOS projects
IDE now has an AI assistant, called Jade
Added DesktopGrid control
Multiple WebListBox improvements
Web now uses Bootstrap v5.3.7 and Bootstrap Icons v1.13.1
Added Passkeys/WebAuth support for web apps
Windows DesktopXAMLContainer improvements
Expanded WinUI-backed controls
Several Crypto enhancements
Improved color settings for layouts and controls on iOS and Android
Android Support for PDFDocument
Statistics
Bugs fixed: 186
Features added: 97
Documentation changes: 3
IDE
New Features
Xojo can now create and use libraries with Desktop, Web, Console and iOS projects. (78006)
Added a preference to the Settings window to allow switching the Navigator search field between Filter and Go To Location. (79554)
Added Jade, an AI coding assistant. (79461)
Plugin developers can now add a top-level PluginInfo.json file with Version, Copyright, Description, BuildDate, and IDEVersion keys that are displayed in the about box. (59301)
Desktop and Mobile control subclasses can now define custom Library and Navigator icons, just like Web controls, by adding a Base64-encoded PNG image as a LibraryIcon or NavigatorIcon constant on the subclass. (77817)
Metadata from Shared Build settings (Version, Copyright, Description plus Build Date and IDE Version) are now saved in the built library and displayed in the About window Plugins & Libraries tab. (80217)
We now detect the minimum OS version required by any plugins used in a macOS or iOS build and automatically update the Info.plist to match it if necessary. (80055)
Project->Breakpoint->Ignore All setting is now saved in Preferences like Break on Exceptions and Break on Fatal Error. (77703)
Remote debugger stub now remembers its window positioning. (49159)
Remote Debugger Stub: now blocks multiple instances from launching simultaneously. (79905)
Restored the ability to copy the full error message information when using the Copy or Copy All options from the contextual menu in the IDE. (79409)
Added additional Coding setting with more flexibility to replace Apply standardize format after ending line. There is now a new setting called Automatically Standardize Format that has a PopupMenu with three choices: Never, After Ending Line and Always. Never does nothing, After Ending Line formats the line when return (or shift-return) is pressed. Always formats the line whenever the cursor leaves the line, including with arrow keys or mouse clicks. If Apply standardize format after ending line had previously been set, then After Ending Line is automatically used. Changing the new setting does not affect the old setting for those switching between Xojo versions. (79376)
IDE: Added a new debugger menu option to enable or disable trapping of fatal errors. When disabled, the IDE allows the OS to handle crashes normally, i.e. by displaying the system crash dialog. (79465)
Android: Display a better compile error if unable to download required Android build components. (80251)
Android: Added MobileTextField.BorderStyle property and BorderStyles enum. (69129)
Android: Android containers no longer use the portrait/landscape command bar toggle button in the Layout Editor. They can now be resized as needed to better match how they work in other projects. (79459)
Android: Added support for MobileImagePicker.Sources.FrontCamera. (79350)
iOS: Added BackgroundColor, BorderWidth and BorderColor properties to MobileButton on iOS. (37047)
macOS: Added UI Compatibility Mode switch under the Build section of the Inspector Panel for macOS and iOS projects (Build Settings > Mac and Build Settings > iOS, respectively) (80225)
Web: Added WebDatePicker.DisplayFormat to the Inspector Panel. (80125)
Resolved Issues
Fixed a NilObjectException that would occur when trying to pull version info from old-school rbx plugins, such as MSOfficeAutomation. (80377)
Clearing caches no longer raises an exception if a cache folder no longer exists. (76450)
Improved readability of Jade syntax highlighting in dark mode. (80229)
If the build process fails to create an appropriate intermediate compilation directory, the IDE now reports this as an error with an explanation, rather than raising an unrecoverable assertion failure. (80018)
Inspector now shows the actual property name for Database properties. (80021)
Database property inspector controls now align with the rest of the properties. (80011)
UInteger.ToString is now shown by autocomplete. (63966)
Double-clicking an empty row in the Recent projects / Templates section of the New Project window doesn't close that window. (79932)
Fixed an incorrectly formatted text message when precompiling plugins for Windows ARM64. (79931)
The Resume toolbar button now enables correctly after successfully connecting to a remote debugging session. (79138)
Remote Debugger Stub: When editing the settings, the password is now preserved when unchanged, instead of being cleared automatically. (79907)
Remote Debugger Stub: minimizing the window no longer hides it from view. (79904)
Errors during communication with the Remote Debugger Stub are now displayed in a dedicated error dialog, preventing messages from being truncated in the debugger UI. (79903)
Structure fields using fully qualified types are no longer incorrectly flagged as errors. (79823)
Importing a poorly encoded Xojo code/project item no longer raises a failed assertion. (79789)
App.BuildDateTime now autocompletes correctly for Desktop, Console, and Web projects. (79761)
Changes made by Shift-Return to Standardize Format are now properly saved to the project file. (79693)
SMTPSecureSocket: The SSL Connection Type inspector popup now includes TLS v1.3 as an option. (79721)
Fixed the IDE crashing after adding a new property to a Report control subclass through the Inspector Behavior panel. (79728)
Fixed an issue where deleting an item in the IDE's ToolBar Editor resulted in deleting the whole edited toolbar. (79731)
Fixed a possible NilObjectException than may occur when Notarizing a macOS app. (79730)
Fixed an issue where pasting a copied property into the global scope after it lost control focus could trigger an unhandled InvalidArgumentException, potentially crashing the app and causing loss of unsaved changes. (79704)
IDE: Tabbing in the inspector panel for Platform-Specific Build Settings now works correctly. (79634)
IDE: can now cancel the linking phase of the compilation process. (79560)
Exceptions during early control setup no longer break into the debugger with a blank pane, the standard exception dialog now appears instead. (79413)
Android: The Android Layout Editor top and bottom border no longer overlaps some of the main content area. (77856)
Android: CurrentBuildLocation and CurrentBuildLocationNative now work with IDE Script Build Steps in Android projects. (79782)
Android: The status bar drawn at the top of MobileScreen is now the same width as the rest of the layout. (79958)
Android: On Windows, fixed a problem where the IDE might not quit after some Android debugging sessions. (78713)
Every OS: System.DebugLog messages generated during App.Closing are now properly sent to the IDE and appear in the Messages pane. (60462)
macOS: The macOS ARM64 IDE now correctly breaks on the line that a fatal error happens instead of presenting a blank debugger pane. (80123)
macOS: Fixed setting the shortcuts for windows under the Window menu on the IDE for macOS (79792)
macOS: For Mac Universal Console builds, an IDE Build Script that uses CurrentBuildLocation and CurrentBuildLocationNative now returns the folder containing the app (instead of the macOS Universal folder). (75117)
macOS: Typo fixed in AppStore message error checklist. (79559)
macOS: Fixed filtering the Developer ID value so it can't include quotes. (79432)
macOS: Fixed entering several lines into the Bundle Identifier field for macOS apps. (79388)
macOS: Fixed a Plist file parsing issue resulting in a OutOfBoundsException under certain circumstances when using the Load option from the Property List Editor in the IDE. (79395)
macOS: Fixed a NilObjectException happening when Delete is selected from the contextual menu after adding a Collection cell type (Array, Dictionary) in the Property List Editor. (79394)
Web: Fixed an IDE issue causing the WebPage preview to display a transparent background, sometimes. (80278)
Web: Fixed an issue causing Web controls to have rendering issues when entering wrong CSS class names. (79826)
Web: Fixed an issue in Web projects causing some properties to not be loaded properly, when reopening the project. (79515)
Web: Fixed some NilObjectException issues being raised when staying on breakpoints for some time, while the web project was still receiving additional requests. (79396)
Windows: Windows IDE: new installs no longer default to Consolas as the default control font. The default control font for new Xojo installs is now System. (79582)
Framework
New Features
Added overloaded shared methods to the Thread class for more convenient execution of methods in threads. Refer to the documentation on Thread.StartMethod (39122)
Minor tweaks to the Barcode scanning UI window for consistency on Linux/Windows. Also updated the message requesting camera access to scan barcodes on macOS/iOS for consistency. (80088)
Added PaintBefore / PaintAfter methods to PDFTableDataSource class interface for PDFDocument. (79842)
Crypto: extended RSA signing support to include PKCS#1 v1.5 modes with SHA256 and SHA512, as well as PSS with SHA1, now with clearer, explicit enumeration constants for improved clarity. (79687)
Added Sound.Rate property to control the playback speed, with a default value of 1.0. (1403)
Removed the deprecated REALSQLDatabase. (34421)
Android: Added PDFDocument for Android. (79762)
Android: Added GraphicsBrush, PictureBrush, RadialGradientBrush, LinearGradientBrush classes and Graphics.Brush property. (66655)
Android: Added MobileScreen.NavigationBarColor and MobileScreen.NavigationBarTextColor properties to Android. (79570)
Android: Added Graphics.DrawTextBlock() and TextBlockSize() methods. (77725)
Android: Added MobileScreen.BackgroundColor As ColorGroup property. (79889)
Android: Added MobileToolbar.OverflowIcon As Picture property. (70468)
Android: Added global MD5 function. (74826)
Android: Added MobileTextField.InputTypes.None enum that provides a way to ensure the soft keyboard won't appear. (79172)
Android: Added UserAuthentication Opening and Closing events. (79900)
Android: Added AndroidMobileUserControl.AppearanceChanged event. (79901)
Android: Added DateTime.Handle As Ptr for Declares. (77265)
Android: Added MobileCanvas.AppearanceChanged event. (79852)
Android: Added AppearanceChanged event to MobileScreen and MobileContainer. (76385)
Android: Added MobileApplication.SignificantTimeChange event. (76457)
Android: Added MobileSegment.Enabled As Boolean property. (79622)
Android: Added MobileImageViewer.URL property to match iOS. (76130)
Android: Added MobileButton/MobileDateTimePicker.BackgroundColor, BorderColor and BorderWidth. (79571)
Android: Added MobileTextField.HintColor property. For Android the color is only applied when the field gets focus. (79640)
Android: Added MobileButton/MobileDateTimePicker.CornerSize and Icon properties. (79569)
Desktop: Added more properties to the DesktopGrid control Inspector Panel. (80138)
Desktop: Added the AllowCellSelection As Boolean property to GridControl, so it is possible to enable/disable the cell selection at all by code or via user interaction (80167)
Every OS: Crypto: Added ES256 (ECDSA with SHA-256) support. (79642)
Every OS: Added LastControlIndex to MobileScreen and MobileContainer on iOS. (59519)
iOS: New iOSMobileTable side Index feature is now driven by its own iOSMobileTableDataSourceIndex class interface. (80178)
iOS: Added the AdjustTextSizeToFit boolean property to MobileLabel, MobileButton and MobileTextField on iOS, so the text automatically adjusts to the control width when this property is set to True. (79664)
iOS: Added MobileTextField.HintColor property to iOS projects. (69769)
iOS: Added the iOSTabBar.BadgeTextColor on iOS, so it is possible to set the color for the text used in the badge(s). (79633)
iOS: Added MobileSegment.Enabled property to iOS for consistency with Desktop and Web projects. (64691)
iOS: Added BadgeColor property to iOSTabBar. (79606)
iOS: Added MobileTabBar.SelectedTabTextColor and MobileTabBar.UnselectedTabTextColor properties, so the user can set the text color for selected/unselected bars added to the TabBar. (79605)
iOS: Added MobileTabBar.BackgroundColor As ColorGroup property to iOS projects. (79598)
iOS: Added Iterator to MobileSegmentedButton on iOS. (62161)
iOS: Added ThumbColor property to MobileSwitch on iOS. (79572)
iOS: Now, setting the TintColor on a ProgressWheel instance on iOS actually sets the control color. Also added the Style property and the Styles enum so it is possible to set the control size. (79567)
iOS: Added MobileScreen.NavigationBarColor and MobileScreen.NavigationBarTextColor properties to iOS. (36806)
iOS: Added iOMobileTable.SectionBackgroundColor, iOSMobileTable.SectionTextColor, MobileTableCellData.TextColor and MobileTableCellData.DetailTextColor properties for table coloring customization completion on iOS. (79557)
iOS: iOS: Added the ability to set indexes to iOSMobileTable feed by a DataSource. (37619)
iOS: Added iOSMobileTable.SelectedRowColor property so it is possible to set the row selection color to the desired one for light / dark modes. (79530)
iOS: Added DesktopMoviePlayer.Rate (As Double) property to control playback speed. For example, a default value of 1.0 plays the movie at normal speed, 0.5 plays at half speed, 2.0 plays it twice as fast, and -1.0 plays it in reverse, etc. Also added MobileMoviePlayer.Rate for iOS. (32978)
iOS: Added MobileTableCellData.BackgroundColor property for iOS. (79512)
iOS: Added iOSMobileTable.BackgroundColor property. (36981)
iOS: Added iOSTabBar.SelectedIndex property to get and set the visible tab panel on iOS. (36718)
iOS: iOS: Added MobileScreen.BackgroundColor property. (36531)
iOS: Implemented the following properties on MobileButton for iOS:
Icon As Picture (Get/Set), CornerSize As Integer (Get/Set)(79568)Mobile: Added timeStamp As DateTime parameter to MobileLocation.LocationChanged event. (67641)
Web: Added LastAddedIndex and LastIndex to DesktopRadioGroup. WebRadioGroup API has also been updated accordingly. (78792)
Web: Adds Passkeys / WebAuthn support for Web projects. (79776)
Web: Updated jQuery UI to 1.14.1 and Moment.js to 2.30.1. (79443)
Web: The Web Framework will be downloading just the frontend libraries it needs to render the controls. It will lazy load more libraries later, at runtime, if needed. (79529)
Web: Added a new event, LazyLoadDependencies As Boolean, to WebSDKControl and WebSDKUIControl. (79532)
Web: Added WebListBox.FrozenColumns, allowing to stick some columns to the left and/or right of the control while scrolling. (33943)
Web: Added Indicator and Outlined properties to WebMessageDialogButton. (79999)
Web: Added WebListBoxCellRenderer.ToString method that subclasses can override. WebListBox.CellTextAt uses the new WebListBoxCellRenderer.ToString method, to avoid having to cast a Cell Renderer manually. (79370)
Web: Added WebDatePicker.DisplayFormat to allow developers displaying the selected date in SQLDate format. (79493)
Web: Added CellFocusReceived and CellFocusLost events to WebListBox. (79956)
Web: Added support for having Hints on editable WebListBox cells. (79957)
Web: Updated the underlying library for WebDatePicker, bootstrap-datepicker, from v1.9 to v1.10. (79919)
Web: SameSiteStrength.Off is called None now. SameSiteStrength.Lax will be the default now, instead of None, when using WebCookieManager Set and Remove or WebResponse SetCookie and ClearCookie. (79652)
Web: Added WebSession.Title property. If it isn't empty, it will override the current WebPage.Title property. (71444)
Web: Added secure, httpOnly and sameSite parameters to WebCookieManager.Remove method. (79663)
Web: Added sameSite parameter to WebResponse.ClearCookie method (79661)
Web: Deprecated WebSegment.Title in favor of Caption, for consistency. (62195)
Web: Updated Bootstrap to version 5.3.7 and Bootstrap Icons to version 1.13.1. (79487)
Windows: DesktopXAMLContainer: added support for the MediaPlayerElement control. (77294)
Windows: DesktopWindow/DesktopContainer.ShowPopover: The Popover window's appearance has been refreshed to better match the overall UI on Windows. For the best results on Windows, we recommend using DesktopContainer.ShowPopover. (77981)
Windows: DesktopXAMLContainer: Added support for the ToggleButton control, which shares similar properties and events with the XAML CheckBox control. (79686)
Windows: DesktopXAMLContainer: you can now explicitly trigger a visual state change by invoking the GotoState method and passing the name of the state to trigger with an optional parameter to use transitions or not. (79684)
Windows: SpecialFolder.Printers now returns the virtual printer folder instead of the legacy printer shortcut folder. (72449)
Windows: Plugins SDK: Undeprecated REALDrawPicturePrimitive for Windows. (24148)
Resolved Issues
A subclassed DatabaseRow or DatabaseColumn no longer crashes based on which methods are overridden. (80256)
Passing a negative index value to DesktopToolbar.AddButtonAt raises an OutOfBoundsException instead of crashing the app. (80248)
Fixed an issue so instances created from Window (or descendant of Window) can draw the assigned Frame type in the Layout Editor. (80226)
Graphics.DrawObject now throws a NilObjectException instead of crashing when passed a Nil Object2D. (80005)
Preemptive threads can now be stopped even while sleeping. (79988)
SMTPSocket/SMTPSecureSocket: Zero GMT offsets now correctly include a + prefix, preventing certain email servers from rejecting messages. (78759)
Updated RuntimeException.Constructor parameter name for consistency. (79884)
Assigning a Nil value to DatabaseColumn.PictureValue now works properly. (79742)
Fixed a potential race condition, which would cause unexpected NilObjectExceptions, when constructing specific objects (such as Pictures) for the first time in preemptive threads. (79671)
URLConnection: The received content is now cleared immediately after a successful URLConnection Send or SendSync, rather than being retained until the object is destroyed or another request is made. This appeared to some as being a memory leak. (59626)
Operator_Convert on Rect and Size now properly use Integer instead of Double for the return type. (79594)
Calling SQLiteDatabase.EditRow when no records exist in the table now raises a DatabaseException, consistent with the behavior of the other supported databases. (25198)
Android: Properly scale MobileCanvas touch event points when system font size has been changed. (80418)
Android: Fix an incorrect TypeMismatchException that would occur when getting the IntegerValue of an Variant that contained an Enum. (80262)
Android: Using introspection to get the TypeInfo.ElementType of an array in a Variant no longer returns a Nil value. (80019)
Android: Avoid an internal framework exception that could occur in some situations when changing MobileContainer.Visible. (79935)
Android: Thread.UserInterfaceUpdate event is now called for threads that are created in code. (79214)
Android: Fixed wrong Return type of ConstructorInfo.Invoke() for introspection. (73757)
Android: AttributeInfo should not have a Super. (79959)
Android: MobileSegmentedButton.ResizeSegmentsToFit() now takes into account the system font scaling. (79781)
Android: JSONItem.Lookup now properly returns the default value. (79400)
Android: Prevent an InvalidArgumentException when processing Inf, -Inf and NaN using Double.FromString() or Parse(). (79850)
Android: MobileImageViewer.DisplayModes.ScaleAspectFit now better matches expected scaling behavior. (79892)
Android: Pre-defined MobileToolbarButton.Types are now Dark Mode ready. (79809)
Android: MobileSegmentedButton.ResizeSegmentsToFit method now better adjusts sizes so the rightmost button is not cut off slightly. (79747)
Android: Added TargetWinUI constant, which is always False with Android. (79771)
Android: MobileMapViewer now properly returns MobileUIControl as its base type with introspection. (79764)
Android: AndroidMobileUserControl now properly returns MobileUIControl as its base type with introspection. (79765)
Android: Updated Android SQLite to 3.50.4 and re-enabled encryption support. (79758)
Android: Allow DatabaseColumn.PictureValue() to set a Nil picture. (79749)
Android: Cooperative threads now stop when Thread.Stop is called. (79724)
Android: Using Me in a computed property no longer causes an Android compile error. (79752)
Android: To match other platforms, DateTime.FromString() now raises InvalidArgumentException instead of UnsupportedOperationException when an invalid format is specified. (79705)
Android: When True is stored in an INTEGER SQLite column, True is now returned for DatabaseColumn.BooleanValue (to match other platforms). (79439)
Android: Added missing encoding parameter to DecodeURLComponent() global method. (79647)
Android: SQLiteDatabase.Tables() method now returns a RowSet with just a single column called TableName to match other platforms. (79604)
Android: MobileMapViewer can only be used once its Opening event is called. If it is used when not yet ready, an UnsupportedOperationException with an explanation is raised instead of a generic NilObjectException. (79520)
Android: Ensure status bar and nav bar buttons (if enabled) are visible in light mode. (79641)
Android: MobileMotion no longer causes an internal framework crash when used. (79601)
Android: Added DateTime Operator_Compare. (79593)
Android: PropertyInfo.IsComputed results for Graphics properties now matches other platforms. (79774)
Desktop: DesktopListBox.RemoveRowAt no longer crashes when dynamically created and the ListBox has not yet been added to a Window. (80393)
Desktop: Group2D.AddObject: Fixed a potential stack overflow when attempting to add an Object2D to itself. This now raises an InvalidArgumentException. (78797)
Desktop: DesktopListBox: Added support for retrieving the entire row or column with CellTextAt (instead of it throwing an exception), matching the existing ability to set an entire row or column. (79709)
Desktop: DesktopListBox: SelectionChanged now fires correctly instead of the DoublePressed event especially in cases where a quick second click actually changed the selection. (79625)
Desktop: DesktopMoviePlayer.Volume now accepts a range from 0..100 and will throw an OutOfBoundsException if the volume falls outside that range. (79421)
Every OS: JSONItem.ValueAt no longer raises a TypeMismatchException, for valid data, when the JSON was not created from a JSON string. (79777)
iOS: Fixed getting localized values from string constants when the the localeID is provided as String instead of deprecated Text data type. (75130)
iOS: Fixed an issue related with the Pressed implementation on MobileImageViewer and iOSImageView on iOS. (79445)
iOS: Fixed setting MobileScreen.TabBarVisible to false (making it not visible) when the app is run on iOS 18+. (79361)
Linux: DesktopWindow.Resizing event is now triggered correctly. (79674)
Linux: DesktopMoviePlayer: movie no longer plays in a detached window when running on Wayland. This requires the gstreamer1.0-gtk3 package to be installed. (77939)
Linux: A hidden GroupBox with controls no longer prevents the Window from closing correctly on Linux. (79878)
Linux: Keyboard.AsyncKeyDown now properly detects presses of the W key. (79805)
Linux: DesktopComboBox: Adding new items no longer changes the current text or selected item. (79769)
Linux: DesktopListBox: the contents are no longer incorrectly offset when the ListBox is placed in a TabPanel that is on a non-Transparent DesktopContainer. (79417)
Linux: DesktopImageViewer: Image is now scaled to fit the bounds of the ImageViewer on Linux, matching the behavior on macOS and Windows. This also fixes an incorrectly calculated aspect ratio for portrait-style images on Windows. (79679)
Linux: DesktopWindow.Resized event is now raised when the window is resized programmatically. (65436)
Linux: ConstructContextualMenu is now correctly triggered for controls on a window that includes a Toolbar, even if the Toolbar was created (or ordered) after the control that fires the ConstructContextualMenu event. (79453)
macOS: Now Graphics.DrawPicture is faster under Tahoe and also on previous macOS releases. (79991)
macOS: Quitting the app on GroupBox.MouseDown no longer crashes. (72364)
macOS: Picture.Depth now correctly reports the actual depth when the Picture comes from an ImageViewer or from an image dragged into the project, instead of always returning 0. (79788)
macOS: DesktopTextField: Disabling a TextField's Password property no longer incorrectly switches it to multiline mode. (79708)
macOS: Customizing Toolbars no longer raises a failed assertion in certain edge cases. (75609)
macOS: DesktopTextField: certain validation masks were not honoring the MaximumCharactersAllowed, this has been fixed on macOS. (79620)
macOS: Fixed the color of the lines drawn for columns and rows on DesktopListBox when macOS is set to DarkMode. (79367)
Web: Fixed an issue causing WebListBox.RemoveRowAt to not always break on the debugger when using an invalid index. (80365)
Web: Fixed a WebToolbar issue causing the dropdown menu to be shown above the link, instead of below, when collapsed. (80286)
Web: Fixed some WebDatePicker timezone issues. (80269)
Web: Fixed an issue causing re-positioning or changing the dimensions of a control at runtime to do wrong calculations in the browser, resulting in a wrong position. (79541)
Web: Fixed a WebListBox issue causing editable cell fields to exceed their boundaries unless the column width has been specified. (80094)
Web: Fixed a WebListBox issue causing pressing on the first row to raise the Pressed event with a -1 row value, instead of 0, when using a DataSource. (80070)
Web: Updating WebMapLocation properties like Visible, Title or Icon will now refresh the maps this location belongs to. (80069)
Web: Fixed an WebDialog issue not reporting correctly to their children that they were being shown, when attached to views that weren't visible. (80063)
Web: Improved WebCombobox performance when displaying and filtering a large amount of rows. (80049)
Web: Fixed an issue causing the web framework to remove quotes from header values. (80040)
Web: Fixed a WebDialog issue causing the control to remain visible when calling Shown and Hide quickly. (75975)
Web: Fixed a WebListBox issue causing SelectedRowCount to not be reliably up to date inside Pressed or DoublePressed events. (78186)
Web: WebSession instances will be cleaned up automatically if they are not usable, for example when receiving a HEAD request to the root path. (79870)
Web: Fixed a WebToolbar issue causing setting Enabled to False not having any effect. (77724)
Web: Fixed a WebListBox issue causing editable cells to not be properly encoding their updated content. (79344)
Web: Fixed a WebContainer issue causing the Browser to send the Pressed event, even when it wasn't implemented by the user. (79914)
Web: Fixed a WebCheckBox issue causing the control to flicker/wiggle a few pixels, when updating the control. (79867)
Web: Fixed internal OutOfBoundsException that could happen in WebApplication._HandleHTTPRequest. (79780)
Web: Fixed a WebFileUploader issue causing upload timeouts to not raise its Error event. (79645)
Web: Fixed a WebListBox issue causing LastAddedRowIndex to report a wrong value, when the listbox was sorted. (79681)
Web: Fixed an issue causing WebPopupMenu to ignore the CSS Classes property in the Inspector. (79717)
Web: Fixed an issue causing the WebDialog control to hijack the focus, when displaying nested dialogs. (79775)
Web: WebTabPanel will raise the PanelChanged event when changing the panel programmatically. (79680)
Web: Fixed a bug causing web controls to not be disabled when disabling their view. (79672)
Web: Fixed an issue causing children of WebTabPanel and WebPagePanel to not fire Shown and Hidden events when switching between tabs. (79699)
Web: Fixed a WebListBox issue causing RowTagAt to report a wrong tag after removing rows. (79659)
Web: Fixed an issue causing some exceptions to not be sent to WebApplication.UnhandledException event, even when they weren't being handled in WebSession.UnhandledException. (79492)
Web: Fixed an issue causing changing the dimensions or position of controls during the Opening event to be partially ignored. (79578)
Web: Fixed a WebDatePicker issue causing the DateChanged event to be fired even if the date was the same as the previous one. (79575)
Web: Fixed a WebListBox issue causing the SelectedRowIndex to report a wrong value after reordering rows, when not using a WebDataSource. (79503)
Web: Fixed a WebComboBox issue that was raising an OutOfBoundsException at runtime, when SelectedRowIndex property wasn't -1, even with a valid index. (79519)
Web: The web framework will attempt now to hint the browser to update favicon.ico file, when the app restarts. (79488)
Web: Fixed an issue causing Bootstrap Icon font files to return a 404 (not found) in the browser. (79481)
Web: Fixed a WebHTMLViewer causing the control to ignore its WebStyle when the URL property was empty. (79425)
Windows: Using named ColorGroups no longer throws an OutOfBoundsException when running in dark mode on Linux. This issue could also occur on Windows, depending on the specific named color used. (80281)
Windows: GraphicsPath.AddRoundRectangle now correctly uses the PenSize to draw the round rectangle. (80163)
Windows: Clicking on a DateTimePicker/DesktopDateTimePicker control now correctly raises the GotFocus/FocusReceived event. (65769)
Windows: Fixed a cooperative thread slowdown on Windows, especially at lower priorities. (79941)
Windows: Moving a DesktopCanvas, that is embedded within another control, no longer leaves artifacts behind. (79854)
Windows: URLConnection.ContentReceived now fires with the correct content and status code after a successful authentication. (79843)
Windows: Controls no longer disappear after the PC wakes from sleep. (78315)
Windows: Windows apps no longer triggers the MenuBarSelected/EnableMenuItems event when a window is activated or deactivated, matching the behavior on macOS and Linux. (72418)
Windows: Loading locale strings for certain language and region settings that were encoded with a dash instead of an underscore like Portuguese Brazil, now works correctly. (79660)
Windows: ComboBox: updating the Text in the SelectionChanged event now works. (69904)
Windows: Windows/Linux: String.Codepoints now correctly returns the code point for emojis in the upper 1F004..1FAD6 range. (79304)
Windows: Barcode: generating an image with non-ASCII text no longer crashes on Windows/Linux. (79403)
Windows: Windows/Linux: assigning an empty string to Clipboard.RawData no longer crashes. (79435)
Windows: Fixed an intermittent issue where the window bounds were incorrectly stored when the computer wakes from sleep or when the window is restored from a Remote Desktop session. (78642)
Windows: Disconnecting a secondary monitor no longer causes controls from an app running on it to vanish. (79844)
Windows: WinUI controls are now correctly themed in light mode if dark mode support is disabled. (80419)
Compiler
New Features
The compiler now properly supports diamond-shaped interface hierarchies, where two interfaces inherit from a common base interface and a third interface inherits from both. Previously, this type of aggregate would trigger a compile-time error. (79667)
Android: Moved to Kotlin 2.2.20 and updated internal libraries used by the Android framework. (79868)
Resolved Issues
Android: If a sound file in the project is unable to be initialized, raise an UnsupportedOperationException with its name. (80234)
Android: Fixed a compile error when using ByRef with parameters in shared methods. (80109)
Android: Display a method too large error message in Xojo when the Android compiler reports a method exceeds the 64K JVM method size limit. (80034)
Android: Fixed several Android compilation errors: enum used with Constructor via New, constant as default value in constructor, property array usage as a return value of a method, property usage with unnecessary trailing parenthesis. (80033)
Android: Fixed an Android compile error that could occur when referencing an enum using a subclass name when the enum was actually defined on a superclass. (80025)
Android: Fixed a compile error that could occur when overriding events on MobileContainer subclasses. (79960)
Android: A better compile error is now shown when a property has the same name as an enumeration. (78806)
Android: Operator_Convert from a type now works with classes that are in namespaces. (79176)
Android: Using Self/Me with MobileScreen/MobileContainer constants no longer causes an Android compile error. (79944)
Android: Fixed a compile error that would occur with a Delegate that has an array parameter. (79902)
Android: Fixed a compile error that would occur when assigning a Variant containing an enum back to an enum type. (79186)
Android: Compatibility flags on interface methods in Android projects are no longer ignored. (79861)
Android: Fixed a compile error that could occur when using a Delegate without a parameter. (79893)
Android: Using an Exception block within computed properties no longer causes a Kotlin compile error. (79794)
Android: Fixed a problem where usage of Call to call a method without also using parenthesis could cause a compile error in some situations. (79796)
Android: Fixed a compile error that could occur with the usage of the deprecated Ubound array method. (79795)
Android: Fixed a compile error that can occur with shared methods on classes that share a name with a non-Android framework class. (79727)
Android: Fixed an IDE exception that could occur when translating a Try/Catch block that had a Declare in it. (79713)
Android: Increased maximum memory allocated to Kotlin compiler to avoid errors when compiling large projects. (79745)
Android: Using 'inf' as an identifier no longer causes a compile error. Using 'params' as a global identifier now displays a clear compile error message indicating it is not allowed. (79616)
Android: Line breaks set in the Inspector for TextArea.Text are now converted correctly. (79484)
Android: Fixed a compile error when using Ptr value methods to set values. However, these methods are not supported on Android so will raise a PlatformNotSupportedException when used. (79648)
Android: Fixed a compile error that could occur with some expressions that used bitwise And and Or operators. (79651)
Android: Fixed a compile error that could occur when using an extension method on a Ptr type, such as myPtr.Int64.ToString. (79564)
Android: Fixed a compile error that could occur when subclassing some framework classes and providing your own constructor. (79576)
Android: Fixed some compile errors that could occur when using CType with an enumeration. (79613)
Linux: Linux ARM64 IDE: compiler no longer fails to link builds because of missing dependencies in newer distros of Linux, such as Ubuntu 25.10. (80100)
Documentation
Resolved Issues
The ED25519 crypto functions are now documented. (79644)
Added to the crypto page missing information about the CTR block mode. (80012)
FileTypeGroup.All and FileTypeGroup.AllFileTypes are now documented. Because FileTypeGroups are not instances per se, these methods are documented on the page that explains the FileTypeGroup Editor. (80384)