Xojo 2025r1 Release Notes

Release Date: 2025-03-25

Highlights

  • Linux ARM IDE Support: Now available, including Raspberry Pi.

  • App Store Publishing: Directly publish macOS Desktop and iOS projects to App Store Connect from the IDE.

  • Web Drag and Drop Support: Any visual control can now be dragged or accept drops.

  • WebListBox: Now supports editable cells and checkboxes, and row reordering via dragging.

  • Windows built-in ICU Libraries: Eliminates manual ICU updates and reduces app file sizes.

  • Android Support: Initial ColorGroup and Dark Mode support.

  • TLS 1.3 Support: Now available with SSLSocket and URLConnection.

  • IDE Toolbars: Option to hide captions. Windows now features a smaller toolbar, and both Windows and Linux use modern Bootstrap icons. The Documentation window toolbar is now more compact.

  • IDE Code Editor: Cmd/Ctrl + Double-clicking on a local variable name now jumps to its declaration, similar to the "Go To var" command.

  • IDE Layout Editor: Improved performance for complex container layouts.

Statistics

  • Bugs fixed: 136

  • Features added: 51

  • Documentation changes: 5

IDE

New Features

  • Added Xojo IDE for Linux ARM64. Building macOS apps using the Linux ARM64 IDE is not supported. (76037)

  • On the documentation window, now use more modern icons and the captions are no longer shown. (67896)

  • The debugger now shows a fatal error popover when the app crashes, making it easier to distinguish from caught Xojo exceptions. (78001)

  • Changed Open... and Save... buttons captions from the Property List Editor to Load... and Export... (78468)

  • Now 0 is the default value for Number entries added to the Property List Editor. (78465)

  • macOS builds creates now log files for the build process, so users can inspect the applied codesign command (among other data), plus a log file that includes all the steps done during the Notarization (including the received ticket data). (78239)

  • IDE: The multiline string property editor no longer provides spell checking or auto-correction. (78419)

  • Add the ability to use the larger multiline editor for individual String property default values. (78420)

  • Added Publishing to App Store Connect from the IDE for Desktop (macOS) and iOS projects. (15506)

  • View->Show/Hide Toolbar Captions now allows captions to be turned off to reduce toolbar size. The Windows toolbar now uses smaller icons to use space in general. Build shortcut has been changed to Shift+Ctrl/Cmd+B due to its proximity to Ctrl/Cmd+V. (61854)

  • Added the top-level Window menu to the MainMenuBar created for Desktop projects. (78367)

  • Added Show in Browser button to documentation window toolbar. (68310)

  • Removed the Windows 7 and Windows 8.1 selection from the build settings since we now only support Windows Server 2019 (build 1809) or Windows 10/11. (78058)

  • The layout editor now renders complex DesktopContainer layouts significantly faster. (75614)

  • Cmd/Ctrl + Double-clicking on a local variable name in the Code Editor now takes you to the variable declaration line, the same as the contextual Go To var command does. (78240)

  • Added the ability to view/change custom properties on the inspector for DesktopWindow/WebPage/MobileScreen subclasses. (76101)

  • Android: Added ColorGroups and dark mode support. (77425)

  • iOS: Now use a larger default MobileScreen size on iOS. (77467)

  • Web: The Web Application launch timeout dialog will be shown after 1 minute now, instead of 10 seconds. (77551)

  • Windows: Windows IDE: reduced the text size of the splash screen loading text for better consistency. (78461)

  • Windows: Updated toolbar icons on Windows/Linux to use more modern Bootstrap icons and changed toolbar and Navigator backgrounds (on Windows) to better match modern UI. (69299)

Resolved Issues

  • App-Specific password setup is not shown now in the Inspector Panel for Web and Console projects when Build Settings > macOS is selected in the Navigator. (78753)

  • Debugger: Inspecting a selected property of an Object, within an Array, now works again. (77683)

  • Fixed a bug where selecting a Folder in the Navigator was not enabling the Copy and related menu items in the IDE's main menu bar. (78512)

  • Fixed a problem with iOS toolbar buttons that are on the bottom of the layout sometimes getting moved to the top of the layout when the project is loaded. (78288)

  • Fixed using Search and Replace in the IDE so it doesn't stripes spaces from Notes names. (78434)

  • Added Copy & Paste suport to ToolbarEditor in the IDE. (9548)

  • Autocomplete now correctly offers suggestions for multi-dimensional arrays. (78005)

  • Minimum iOS version is now set to iOS 14.0 for iOS projects. (78328)

  • The default value of the Transparent property on DesktopCanvas/DesktopContainer is now set to False. (78321)

  • Projects in the File->Recent Items menu will now show the appropriate file icon even when the Finder Hide Extension setting is enabled for the file. (77906)

  • The Alias keyword is now handled by Standardize Format. (78027)

  • Fixed a KeyNotFoundException when reseting the Coding colors in the IDE preferences window. (78099)

  • Now the build process is cancelled (and the user informed about it) when there is a CopyFile Build Step whose file is missing. (78123)

  • Using the Database Connection SQL editor dialog to execute SQL no longer causes the IDE to crash. (78013)

  • Autocomplete now suggests LastIndex, Count, and RemoveAll for multi-dimensional arrays as well. (64026)

  • Attempt to avoid a possible IDE hang when matching lines when pressing Shift+Return on a line to autocomplete a block. (77123)

  • Android: Hide MaximumCharactersAllowed from the Inspector for MobileLabel since its not useful with that control. (78452)

  • Android: Improved drawing of the Android Layout Editor and controls when the IDE is in dark mode. (78389)

  • Android: Improved error message that appears when Xojo cannot connect to the Android debugger (adb). (78354)

  • Android: Do not add the Insert->OLE Component menu for Android projects. (78317)

  • Every OS: SelectedText now works when used in IDE scripts. (67582)

  • iOS: When the IDE is in dark mode, Android/iOS HTMLViewer is now drawn in a darker version in the Layout Editor. Also updated MobileScrollableArea, MobileContainer and MobileTabPanel to draw in dark mode for Android. (78545)

  • iOS: Fixed _ClosingFired property showing under the Behavior section of the Inspector Panel for MobileCustomTableCell on iOS projects. (78037)

  • Linux: DesktopHTMLViewer: hardware acceleration is now disabled by default when running on Wayland, this is the address the myriad of Wayland compositors that do not support proper hardware acceleration with WebKit2. Note: You can still use the WEBKIT_HARDWARE_ACCELERATION environment variable to override this. (78636)

  • Linux: Linux IDE: Clicking the Insert toolbar button, and not just the dropdown widget beside it, now opens the Insert menu as well. (78445)

  • Linux: Linux IDE: the Previous button in the Messages Pane is now correctly resized so that it matches the height of the other buttons. (78251)

  • Web: Fixed a WebListBox issue causing the control to raise an uncatchable framework exception, when adding rows with a wrong encoding. (74312)

  • Web: WebSession's Interrupt Message, Disconnect Message and Confirm Message can use localized constants now. (76550)

  • Web: Fixed a WebCombobox issue causing the IDE to ignore the Text property, causing the IDE to not preview it, and the property to be ignored at runtime when being set in the IDE. (77944)

  • Windows: Windows IDE: optimized Library list scrolling to reduce lag. (78441)

  • Windows: File Open dialog on Windows/Linux now has an entry in the filter list to show Xojo code assistant files. Moved XojoScript entry to the top group of Xojo files, instead of having it after the older REALbasic/Studio file types. The filter entry for All Files never actually did anything before, now it will show all files. (78403)

  • Windows: Windows IDE: Resizing the navigator sidebar with the gripper now updates the contents live rather than with a delay. (76912)

  • Windows: Updated the transparency of the labels in the Updates Available Window to better match its background. (78115)

  • Windows: Build window now displays on the same screen as the active IDE window instead of always appearing on the main screen monitor. (77864)

Framework

New Features

  • Added new JSONOptions class that can be passed as a parameter to JSONItem.ToString and GenerateJSON. The new JSONOptions class contains properties to setup the Compact, DecimalPlaces, and IndentSpacing options. (74489)

  • Using the HTMLViewer on any macOS compiled app doesn't couples the RegEx lib when it is not really required. (78495)

  • Thread: added new Tag As Variant property. (73282)

  • Android: Added AndroidMobileUserControl that makes it possible to add native Android controls using Declares or Libraries. (77499)

  • Android: Added MobileImageViewer.Pressed event. (78539)

  • Android: Allow Declares to convert the Char type to a CString and thus a Xojo string. (76795)

  • Android: Added SSLSocket.SSLConnectionTypes.TLSv13 support, which also now appears in autocomplete everywhere. (78212)

  • Desktop: Added DesktopWindow.HasTitleBar as a way to remove the title bar from a window. (78546)

  • iOS: Refactorization on iOS controls so they don't require an internal conversion from the received String data type parameters to Text data type. (78550)

  • iOS: Color.AccentThemeColor now works for Desktop and iOS projects. (78361)

  • iOS: Added SelectionChanged event handler to MobileTextField on iOS. (70112)

  • iOS: Added MobileColorPicker control for iOS projects. (78381)

  • Linux: XojoScript.Compile now works for Linux ARM64. (78570)

  • Linux: URLConnection has been updated to libsoup3, with a fallback to libsoup2-4. This update adds support for TLS 1.3 (77706)

  • macOS: Now macOS apps add the by default menu options to the Window menu, if there is such entry among the ones in the menubar. (77999)

  • macOS: Added KeychainItem.UpdatePassword method, so now it is possible to update the password previously added to the by default keychain on macOS. (77890)

  • Web: Added support for editable cells in WebListBox. (15427)

  • Web: Added support for Drag & Drop, equivalent to the feature present in Web 1. (78059)

  • Web: WebPopupMenu.Count has been deprecated. Please use WebPopupMenu.RowCount instead. (78413)

  • Web: Added support for having checkboxes in WebListBox. (18480)

  • Web: Deprecated WebCombobox.AddAllRows, use WebCombobox.AddRow instead. (72292)

  • Web: WebListBox.CellTextAt will only be able to get and set String now, instead of Variant. Also added CellRendererAt to get and set WebListBoxCellRenderer values on cells. (73946)

  • Web: Added support for WebListBox.AllowRowReordering, which will also fire the DragReorderRows event when needed. (77913)

  • Windows: Updated the Windows menubar background color in dark mode so that it matches the window background color. (78498)

  • Windows: DesktopWindow: Shadowed box window type no longer leaves a narrow strip of the title area on the window. Assigning a MenuBar to a DesktopWindow, that is a Shadowed box window type, will now raise an UnsupportedOperationException on Windows. (78368)

  • Windows: We now use the built-in ICU libraries on Windows. The updated build requirements are now: Windows Server 2019 (build 1809 or later), Windows 10 (version 1703 or later), or Windows 11. (73190)

  • Windows: DesktopXAMLContainer: added additional properties/methods/events for the WebView2 control. Now you can go back/forward, reload/stop pages, load html from a string, change the user-agent, execute javascript and print to PDF. Refer to the WebView2 control in the Choose XAML Control dialog for more details. (78040)

Resolved Issues

  • JSONItem values of 0.0 now produce valid JSON when the DecimalPlaces option is specified. (78637)

  • XMLReader.Reset now raises an Exception upon error instead of causing a hard crash. (71954)

  • Fixed an edge case when drawing long strings with a wrap width applied on PDFGraphics for Desktop. (78568)

  • Fixed receiving the expected Dataset index value for the DrawPointAt event on DesktopChart. (78440)

  • DesktopListBox: Connecting a ListSelectionNotificationReceiver interface (via AddListSelectionNotificationReceiver) now correctly triggers the selection changed interface methods. (78491)

  • More entities added to the Clean Invisible ASCII characters options in the IDE. (78224)

  • Fixed an StackOverFlow on SliderMobile for iOS, caused when setting the Slider value from the ValueChanged event. (78254)

  • Added missing overloaded DateTime.SubtractInterval that takes a DateInterval. (78189)

  • SQLiteException is now deprecated, prefer DatabaseException instead. (78203)

  • ReportOvalShapes now render correctly when the report's units are set to Inches or Millimeters. (78080)

  • SQLiteDatabase: no longer limited to fetching larger RowSets that are over 1 GB in size. (77828)

  • Android: Fixed a compile error that would occur when calling Picture.Save with the format enum in a variable instead of using the enum directly. (78613)

  • Android: Fixed an issue with nil checks with JSONItem.Lookup. (78510)

  • Android: Fixed an problem when comparing a Currency value to another Currency value. (78422)

  • Android: Fixed a NilObjectException that could occur when setting some of the locking properties on nested containers. (78143)

  • Android: MobileTextField.ReadOnly now prevents typing into the field when set to True. (78423)

  • Android: Updated some framework enums so that they work with the index lookup syntax. (77901)

  • Android: Fixed an internal exception that could occur when parsing out the error code for some SQLite error messages. (78377)

  • Android: Fixed an exception that could occur with JSON that had embedded arrays of objects. (78359)

  • Android: When assigning a variant to an array and the variant contains an array, raise a TypeMismatchException if the array types do not match. Added unit test. (78313)

  • Android: The Graphics constructor is now private to match behavior on other platforms. (78295)

  • Android: Fixed a compile error that could occur in some situations when a local variable has the same name as a framework class. (77820)

  • Android: BinaryStream.Write() now works with MemoryBlock. (77957)

  • Android: Adding an empty JSONItem into a JSONItem now adds an empty object instead of adding the text null. (77959)

  • Android: Prevent an internal exception when calling URLConnection.Disconnect before calling Send. (78009)

  • Android: Infinite symbol is now 'inf' to match other platforms. (78190)

  • Desktop: The default width of a DesktopUpDownArrow control is now a little bigger so the control is no longer clipped (especially on macOS). (78528)

  • Desktop: DesktopListbox control raise now an OutOfBoundsException when setting SelectedRowIndex to a value greater than the last available index, instead of failing silently. (78107)

  • Desktop: The DesktopBevelButton.MouseUp event signature has been updated to remove the Boolean return value, as it has no relevance there. (78048)

  • Desktop: Accessing the ListBox RowTags now long triggers a ThreadAccessingUIException when called from a thread. (78000)

  • Every OS: Closing a window while a ListBox cell is being actively edited no longer triggers a NilObjectException. (56261)

  • iOS: #78709 - The SearchChanged event is called the user taps on the Cancel button for the SearchBar on iOSMobileTable. (78709)

  • iOS: Fix so both MobileTextArea and MobileTextField doesn't use the Text datatype internally on iOS, avoiding thus the extra conversion from String to Text and the other way around. (70980)

  • iOS: Fixed an issue with String to Text conversion on iOS when there are emojis involved. (78092)

  • iOS: Drawing scaled images on iOS whose underlying object is a Symbol (those created using Picture.SystemImage) do preserve now they color. (73447)

  • iOS: Reinstated the behavior for the deprecated iOSMessageBox so it can show again more than one button, as we do with MobileMessageBox. (78039)

  • iOS: PDFGraphics.DrawTextBlock raises now an UnsupportedOperation Exception on iOS. (77898)

  • Linux: Graphics.Rotate and Scale are no longer incorrectly offset when drawing to a Canvas. (78585)

  • Linux: MouseCursor now updates immediately when assigned, without waiting for a mouse movement. (78485)

  • Linux: The MouseWheel event no longer triggers if the deltas remain unchanged. (78410)

  • Linux: Color.IsDarkMode is now correctly reported when the default Adwaita theme is not in use, such as on Raspberry Pi with the Pixnoir theme. (76443)

  • Linux: When the display scale is greater than 100%, the System.MouseX/MouseY now return the correct values, and DesktopMenuItem.Popup(x, y) now pops up the contextual menu at the correct x,y location. (78404)

  • Linux: Popovers are no longer incorrectly resized, especially when a multiline Label is on the layout. (78338)

  • Linux: Crypto.SHA3_256 no longer returns incorrect results on Linux x86_64 builds. (78133)

  • Linux: Object2D Rotation now correctly rotates even on a Transparent Canvas/Container. (77880)

  • macOS: Mouse cursor is now updated to a copy cursor when performing the newly described FolderItem drags on macOS. (78591)

  • macOS: DragItem.Destination now correctly returns the destination of a FolderItem drag-and-drop operation. Note: To retrieve this destination, an additional RawData(public.file-url) drag item is required. You can also include the file's contents and assign them to this RawData. (71193)

  • macOS: Fixed a bug in DesktopSearchField on macOS, where trying to retrieve the text, once it has been set with a new value, was getting the old value instead. (78541)

  • Web: Fixed a WebContainer issue causing removing the element from the DOM, to be delayed for 1 second. (78552)

  • Web: WebListBox.DragReorderRows event has been renamed to RowsReordered. (60616)

  • Web: Fixed an issue causing opening a WebPage from the Opening event of the Default WebPage to be ignored. (69737)

  • Web: Fixed a Web issue causing Popovers to not be shown in WebDialog instances created at runtime. (77963)

  • Web: Fixed a WebComboBox issue causing part of the control to be always on top of other controls. (78003)

  • Web: Fixed a WebToolbar issue causing its items to not display any Tooltip. (78492)

  • Web: Fixed a positioning and sizing issue when embedding controls inside WebContainer views. (77894)

  • Web: Fixed an issue where Web Popovers controls couldn't receive the focus, when presented inside a WebDialog. (78418)

  • Web: WebCombobox now supports keyboard navigation. (76553)

  • Web: Fixed an issue causing writing some characters in a WebComboBox to report a wrong value in TextChanged event and Text property. (78366)

  • Web: Fixed visual issues when displaying controls without horizontal locking, or small WebButtons, inside a WebDialog. (78330)

  • Web: Fixed an issue causing WebFileUploader failing to receive files, when using a different BaseURL parameter. (78324)

  • Web: Sorting a WebListBox column will be case insensitive now, like in Desktop projects. (78294)

  • Web: Fixed a WebLink issue causing its contents to be vertically misaligned. (78310)

  • Web: Fixed an issue causing WebListBox to not fire the SelectionChanged event after calling RemoveAllRows, when there were selected rows. (78279)

  • Web: Fixed a Web Framework issue that was affecting the ability to debug an app, causing requests to timeout earlier than they should. (78256)

  • Web: Fixed an issue causing WebTabPanel to lose the updated caption value after being refreshed. (78249)

  • Web: Fixed a WebListBox issue causing the WebDataSource.RowData method to be called on every WebListBox.Selected call, when using a WebDataSource. (78127)

  • Web: Fixed a WebButton issue causing the control to not have enough contrast in Light Color Mode, when using the Outlined property with the Default Indicator. (78124)

  • Web: Fixed a race condition that could cause a NilObjectException to be raised internally in the framework. (78042)

  • Web: Fixed a WebPage issue causing the background to not cover the page, when the content was taller than the browser window and scrolling down. (77522)

  • Web: WebComboBox.SelectedRowIndex will throw an OutOfBoundsException now, when the value is out of bounds. (78111)

  • Web: WebListBox.SelectedRowIndex will throw an OutOfBoundsException now, when the value is out of bounds. (78110)

  • Web: Fixed a WebAudioPlayer issue causing setting the Enabled property to False to have no effect. It will be disabled now. (78018)

  • Web: Fixed a WebAudioPlayer issue causing setting some properties to False to be ignored if they were True before. (78114)

  • Web: WebAudioPlayer won't reset the audio anymore, when changing properties. (78112)

  • Web: Fixed an issue when using WebView.AddControl causing the framework to be able to store multiple references of a child control or in different parents. (78041)

  • Web: Added support for using Indicators programmatically in WebCombobox, WebDatePicker, WebSearchField and WebFileUploader. (77962)

  • Web: Fixed a visual issue at runtime causing the WebCombobox dropdown button to be wider than it should, causing the arrow to not be centered. (77946)

  • Web: Added support for using Indicators programmatically in WebTextField and WebTextArea. (70893)

  • Windows: Key presses while a Popover is displayed no longer trigger a failed assertion. (78547)

  • Windows: Window contents no longer disappear when the computer wakes from sleep. (78315)

  • Windows: AppearanceChanged event now fires when the accent color changes on Windows. (56451)

  • Windows: DesktopXAMLContainer: layout controls such as StackPanels, Grids, etc. now resize to fit the entire control bounds. (78395)

  • Windows: Moving windows to another monitor with a different scale factor no longer causes incorrect resizing, even when the Show window contents while dragging OS option is disabled. (78344)

  • Windows: DesktopTextArea: assigning a FontName that exceeds 32 characters in length no longer crashes but instead raises an InvalidArgumentException. (71445)

  • Windows: Combination of Graphics.ShadowBrush with Scale/Translate no longer draws incorrectly on Windows and Linux (if drawing directly on a Canvas make sure the Canvas is not transparent on Linux). (78302)

  • Windows: Adding HTML Format data to the DragItem's RawData now works. (75936)

  • Windows: Assigning a value to a Double/Single multi-dimensional array (one that has 3 or more dimensions) now works correctly instead of raising an OutOfBoundsException or crashing occasionally. (78066)

Compiler

New Features

  • Android: Android apps are now compiled against Sdk 35 (Android 15) for best compatibility. Also updated several internal tool and library versions. (77702)

  • Android: Allow and ignore the use of Soft in Declare statements. (78380)

  • iOS: Updated to iOS SDK 18.2 to meet Apple requirements. (78580)

Resolved Issues

  • A function with optional parameters, including a ParamArray, now properly initializes default values for those parameters. (78172)

  • When a plugin uses a bad default constant value, we now raise a build error instead of crashing with a failed assertion. (64584)

  • Android: Fixed a compile error that could occur when calling Continue in a For loop after another nested loop had completed. (78589)

  • Android: Fixed a compile error when using a class that has implemented operator_add, compare and convert as a For loop variable. (78525)

  • Android: Fixed an OutOfBoundsException that could occur during code translation of some array expressions. (78519)

  • Android: Fixed a compile error with a shared method that has an attribute. (78488)

  • Android: Fixed a compile error that could occur with a Pair variable declaration. (78034)

  • Android: Fixed an Android compile error when using the Array() method to add pair elements using New Pair. (77178)

  • Android: Fixed an Android compile error that would occur with a variable declared with New, followed by a Pair declaration on the same line that also used New. (75483)

  • Android: Fixed a compile error that would occur when declaring a Pair variable that assigned a value using the :' syntax and was followed by other variable declarations on the same line. (75484)

  • Android: Binary enums are not yet supported in Android but at least for now will generate a proper compile error. (77824)

  • Android: Fixed compile error that would occur if there was a class called RenderedGlobals. (77917)

  • Android: Fixed a compile error that could occur when using array methods in some situations. (78032)

  • Android: Control properties that start with # and are not referring to constants/localized strings no longer cause an Android compile error. (78084)

  • Android: Fixed a compile error that would occur when using Select Case True followed by a Case statement that contained commas separating the tests, such as Case i = 10, x = 5. (78106)

Documentation

New Features

  • The compatibility section in the documentation has been updated for all API classes and provided with the correct information on project types and supported OS. (73842)

Resolved Issues

  • Added missing MemoryBlock Operator signatures to the docs. (57468)

  • Updated description for Communication with Serial Devices at the docs. (77293)

  • Fixed wrong StyledText.ParagraphTextAlignment Signature at the docs. (78660)

  • Web: Fixed a WebSDK Docs PDF typo displaying IsDarkMode() as Color, instead of Boolean. (78632)