Xojo 2026r1 Release Notes

Release Date: 2026-03-31

Highlights

  • Debugger now supports watchpoints

  • Greatly improved macOS app code signing process

  • New Web controls: WebColorPicker, WebSwitch, WebBarcode

  • Android now supports MobileChart, MobileColorPicker, MobilePDFViewer, FolderItem.Zip/Unzip

  • Windows: WinUI now supports DesktopTabPanel, DesktopGroupBox

  • Jade has improved output and lower token costs

Statistics

  • Bugs fixed: 124

  • Features added: 56

IDE

New Features

  • The Choose A Project window applies the user selected Accent Color to the icons on macOS. (80995)

  • You can now set watchpoints in the debugger, see documentation for usage. (1095)

  • Added support for additional watchpoint expression matching options: (≥) greater than or equal to and (≤) less than or equal to. (81008)

  • The Watchpoints debugger list now displays the previous value alongside the current value. (80967)

  • When Jade displays a response, it is now shown at the start of the response instead of scrolling to the end of the response. (80955)

  • Jade now compacts long conversations to reduce token usage and API costs. (80951)

  • Update Jade to default to using Claude 4.6 (from 4.0). (80812)

  • Added DrawControlInLayoutEditor event to DesktopUIControl and MobileUIControl so custom controls can be drawn in the layout editor, similar to WebSDKUIControls. (80314)

  • Obfuscate private property, computed property and private shared method names in the generated Library API output so that their details are not needlessly exposed. (80382)

  • Added option to enable/disable live custom control previews in the layout editor. (80339)

  • iOS: Raised minimum iOS Deployment version to iOS 15.0. (80892)

  • macOS: Improved handling of Entitlements and Provisioning Profiles for macOS apps, so these are properly processed and applied to builds other than those meant to direct distribution and/or publishing to the Mac App Store. In addition, now it does a better job when Run/Debug macOS apps from the IDE, specially if these have Sandbox enabled. In this regard, entitlements and provisioning profiles are also applied to apps debugged from the IDE. (80962)

  • macOS: Now App Store Connect publishing confirmation dialog is presented first when the Publish button (or equivalent menu option) is selected; avoiding processing the checklist when such button has clicked unintentionally. In addition, now the confirmation dialog can be overpassed doing Option-Click on the Publish button or if the Option key is pressed when the equivalent option is selected from the Project menu. (80933)

  • macOS: Improved Developer ID field on Build > macOS > Sign Inspector panel, so it detects the available Teams and build options for signing macOS apps. (80894)

  • macOS: Added the com.apple.security.get-task-allow entitlement by default to macOS apps run/debug from the IDE, so apps like Instruments can attach to them to inspect leaks and other potential issues. (78169)

  • Web: SendEventsInBatches and LazyLoadDependencies WebSession properties will be True now by default on new projects. (80411)

Resolved Issues

  • The database schema viewer now displays the correct precision for Decimal columns. (81001)

  • Fixed an issue where older Window frame types might not be loaded correctly. (80685)

  • Image Sets from a Library no longer cause compiler errors and can be used outside the Library. (80887)

  • The minimum iOS deployment target in plugin Info.plist files is now setup correctly for release builds in addition to debug builds. (80985)

  • Libraries are now properly saved into XML projects. (80953)

  • Allow the keyboard shortcut to be used to delete a Library project item. (80208)

  • Avoid a possible NilObjectException that might occur when Jade inserts code into a Xojo editor. (80595)

  • Fixed CamelCase definition on some DesktopChart properties. (80752)

  • Fixed an issue with Jade improperly truncating some of its answers. (80145)

  • If the internet connection is offline when asking Jade a question, it now displays a message instead of crashing the IDE with a NetworkException. (80922)

  • The Auto Adjust Tab Order dialog now closes correctly, preventing multiple instances from being opened. (80888)

  • The first time the user fills the App Specific Password settings a Global password entry is created in the Keychain, so it can be used for Notarization of macOS apps when there is not a specific password attached to the project. (80896)

  • Loading a project that has an editor open no longer randomly fails to save changes made to Description fields, Attributes, and Compatibility flags. (80836)

  • Improved readability of Debugger current code line highlight when in dark mode. (80817)

  • Fixed reading a binary format project containing a property with a malformed default value assigned to it; so instead of crashing the IDE it informs the user about it and keeps opening the project as expected. (80681)

  • Fixed an issue when it is about parsing nested array entries in a plist file using the included Plist Editor. (80602)

  • Fixed importing a file whose name conflicts with an existing object name; so now it assigns a unique name to the imported item. (80630)

  • Fixed an issue where the Scope indicator badge was missing from the Autocomplete list for certain items, including Constants and Properties. (64614)

  • When the plist file is created for a compiled macOS app, the Icon File Name entry is only added for a registered Document Type if there is, in fact, some icon image in the associated Icon Family for such entry. (80437)

  • The Database Table Viewer now correctly shows the appropriate column types for the database it's connected to. (79416)

  • Fixed a bug related with Xojo Web projects when these share the Build Automation item with a Desktop project (both of them saved in text format). (78664)

  • Android: MobileTabPanel now properly shows Unicode tab titles in Layout Editor and at runtime. (70324)

  • iOS: Prevent MobileScreen and MobileContainer from being added to a module. (80359)

  • Linux: Navigator background and source code hint area now respect the system theme colors. (81066)

  • Linux: Linux IDE: The method parameter and return type fields no longer change font size when they gain focus. (80693)

  • Linux: When editing methods in dark mode, the Parameters and Return Type fields no longer intermittently switch from black to white text. (80624)

  • macOS: Debugger popup menu text no longer appears fuzzy or difficult to read. (80899)

  • macOS: The debugger value column text now uses an appropriate text color when selected. (80770)

  • macOS: When a project item is imported from a text-based project into another text-based text project (for example dragging the source text file and dropping it into the target project Browser), and the target project is saved, it generates now the expected files for the imported items and adds the right paths to the target project manifest file. (78891)

  • Web: Fixed an IDe issue causing Web text controls to preview the Hint using the same color as when the control is filled with text. (81044)

  • Web: WebThread.Type will appear as Cooperative now by default on new instances. (80539)

  • Web: The IDE will show the WebDatePicker preview differently when using SQLDate as Display Format. (80455)

  • Web: Fixed an IDE issue causing some properties to be forced to appear under the Behavior group, on Web projects. (76204)

  • Web: DrawControlInLayoutEditor now respects the layout editor's dark mode preview toggle. (76382)

  • Windows: Debugging WinUI apps now properly deletes the debug folder when the debug app terminates. (80521)

  • Windows: Closing the IDE no longer crashes with an Unknown Hard Error. (80944)

  • Windows: It is now possible to add new group headers in the Inspector Behavior dialog in the Windows and Linux IDEs, matching the long-standing behavior of the macOS IDE. (64649)

Framework

New Features

  • Added MetaData property to Database class as an additional way to store custom string data that doesn't go into the existing properties. (81007)

  • Android: Added MobileChart control and related classes. (80740)

  • Android: Added MobilePDFViewer. (79873)

  • Android: Added Locale support to String.Titlecase(). (73663)

  • Android: MobileTabPanel captions now display in any case instead of always being in uppercase. (72924)

  • Android: Added MobileTextArea.BorderStyles enum and BorderStyle property. (80315)

  • Android: Added Locale support to String.Uppercase(). (73664)

  • Android: Added Locale support to String.Lowercase(). (73662)

  • Android: Added MobileTextArea and MobileTextField KeyDown event. (74244)

  • Android: Added MobileColorPicker. (80766)

  • Android: Added FolderItem.Zip/Unzip. (79770)

  • Android: MobileSlider now uses modern Material Slider. Value, MinimumValue & MaximumValue are now of type Double to match iOS. (80789)

  • Android: Added Iterator to MobileSegmentedButton. (79768)

  • Android: Added MobileScrollableArea.Scrolled event. (76951)

  • Android: Added Barcode.FromImage and Image methods. (79845)

  • Desktop: Deprecated DesktopGrid.Reload method in favor of ReloadFromDataSource, for consistency. (80721)

  • Desktop: Added CellFocusReceived and CellFocusLost events to DesktopGrid. (80358)

  • Desktop: DesktopGrid applies now the locks set to the received ContainerControl instance for the cell. (80130)

  • iOS: Added MobileMapViewer.HasScaleIndicator property for iOS projects, allowing to show or hide a visual element with the scale representation. (80682)

  • iOS: Added the Scrolled event to MobileScrollableArea and iOSMobileTable for iOS projects. (79457)

  • Mobile: For consistency, deprecated iOSMobileTable.ReloadDataSource in favor of ReloadFromDataSource; deprecated iOSMobileTable.ReloadDataInSection in favor of ReloadSectionFromDataSource and deprecated iOSMobileTable.ReloadRow in favor of ReloadRowFromDataSource. (80722)

  • Web: Added WebSwitch control for Xojo Web apps. (20385)

  • Web: Added Barcode reading support for Web projects. (76117)

  • Web: Added a new non-visual control for Web projects, WebColorPicker, similar to DesktopColorPicker. (80774)

  • Web: Added WebUserAuthentication.IsAvailable As Boolean to check wether the browser supports the feature or not. (80696)

  • Web: Updated Bootstrap to the latest version available, v5.3.8. (80484)

  • Web: Deprecated WebListBox.ReloadData method in favor of ReloadFromDataSource, for consistency. (80720)

  • Web: WebListBox editable fields will have a unique ID now and will inherit Bootstrap styles, to make it consistent with other text field controls, and to make it easier to style them with CSS. (80651)

  • Web: Updated TypeScript compiler from v5.7.2 to v5.9.3. (80679)

  • Web: Updated the TypeScript target that Xojo Web uses to compile the frontend code, from ES6 to ES2020. (80678)

  • Web: Cleaned up the unused code in the Web Framework, to reduce the compiled bundle size. (80677)

  • Web: Added WebMapViewer.HasScaleIndicator property allowing to show or hide a visual element with the distance representation. (80666)

  • Web: Added WebLabel support for changing the element type it uses, for helping with accessibility, SEO and also to make it easier to design pages with titles. (78376)

  • Web: Added WebTextArea.AddText method to make the control more consistent with the other project types. (80481)

  • Web: Removed Xojo Web dependency on Modernizr third party library. Deprecated WebSDKControl.BrowserCompatibility so the library can be removed in the future. (80412)

  • Web: Added support for WebButton.Icon, compatible with arbitrary WebPicture and WebPicture.BootstrapIcon. (80353)

  • Windows: DesktopXAMLContainer: can now Begin/Pause/Resume/Stop Storyboards. (80965)

  • Windows: WinUI: added support for the DesktopTabPanel control. (80549)

  • Windows: DesktopXAMLContainer now supports the ContextRequested event, which will be raised in EventTriggered. Also, WinUI controls now fire the ConstructContextualMenu event. (80646)

  • Windows: WinUI: added support for the DesktopGroupBox control. (80563)

Resolved Issues

  • ColorGroup now works with a Library. (80869)

  • Fixed a NilObjectException that happened under certain circumstances when drawing a Picture on PDFDocument Graphics context. (80991)

  • Fixed an issue where DesktopGrid was drawing a vertical line for the last column even when the Grid Line Style property is set to None. (80893)

  • MySQLCommunityServer: binding currency values to a ExecuteSQL/SelectSQL statements no longer fails with a data truncation error. (80865)

  • Assigning a double to a DatabaseRow.Column now matches the same precision as assigning a double to a DatabaseColumn.Value (80510)

  • Fixed setting properly the Parent property of DesktopGrid instances at runtime, mostly when these are added as childs to DesktopTabPanel or DesktopPagePanel. (80724)

  • Picture.FromScaleFactor now rounds to the nearest pixel. (80694)

  • Fixed a low-res output for PDFGraphics.DrawPicture when all parameters are provided. (79879)

  • Fixed HTMLViewer.PrintToPDF behaviour on macOS, so it generates now paginated PDF files. The output is equivalent to the one got using Print > PDF from a macOS browser, for example. (80317)

  • Getting the number of dimensions of an array (by passing -1 to UBound) no longer causes an OutOfBoundsException. (54526)

  • Subclassing Rect and calling the Constructor(x, y, width, height) no longer raises a StackoverflowException. (80505)

  • Undeprecated REALGetControlEnabled as it remains the only reliable way to determine a control's true enabled state, particularly when the control is parented to another control that may have a different enabled state. (77545)

  • DesktopToolbar.ButtonAt and DesktopToolbar.RemoveButtonAt now raises an OutOfBounds exception instead of silently returning Nil when the received index is less than 0 or greater than the number of items in the bar itself. (80448)

  • DatabaseColumn: Assigning values to a column in a non-editable row now correctly raises a DatabaseException. This behavior previously applied only to the generic Value setter and has now been extended to all type-specific setters (e.g. IntegerValue, StringValue, etc.) (79631)

  • Fixed extra spaces added to the text of annotations on PDFDocument. (79790)

  • XojoScript can now access all the Color constants like Color.Red, Color.White, etc. (61557)

  • Android: Type-specific Integer methods (e.g. Int32.FromHex) no longer cause compilation errors. (80084)

  • Android: To match other platform behavior, DateTime values in a Dictionary are now converted to Strings when the Dictionary is converted to JSON. (80421)

  • Android: Fixed an issue where Introspection.ParameterInfo incorrectly returned the name of array parameters. (76114)

  • Android: Fixed a compiler error that occurred when using ReDim/ResizeTo with multidimensional arrays.Issue #76680 (76680)

  • Desktop: Fixed DesktopChart.PaintBefore and DesktopChart.PaintAfter receiving a Graphics context with its width set to 0 when the chart type is set to Scatter. (80796)

  • Desktop: Closing a modal window before its event loop begins no longer causes a crash. (80759)

  • Desktop: Contextual clicking on a DesktopContainer, that's hosted on a deprecated Window, no longer crashes. (80632)

  • iOS: Fixed Desktop/MobileChart (iOS) not displaying prefix-suffix when the dataset that has the Prefix-suffix assigned is set as hidden at runtime. (81074)

  • iOS: Now MobileSegmentedButton on iOS properly sets at runtime the selected segment from the Inspector Panel. (81053)

  • iOS: Fixed a NilObjectException when labels are not provided to draw a ChartCircularDataset (Pie chart) on DesktopChart / MobileChart (iOS). In addition, now the user gets feedback about dataset(s) enabled/disabled also in these cases. (81026)

  • iOS: Fixed a bug on DesktopChart/MobileChart (iOS) where pressing the legends were not reacting when more than one dataset was involved in a Pie type chart. (81019)

  • iOS: Fixed MobileSegmentedButton.Iterator skipping the first segment at first run. (80754)

  • Linux: Fixed an issue where resizing a window programmatically could ignore the new width or height and raise the Resize event before the window had resized to its final bounds. (80786)

  • Linux: Updating values on a ScrollBar or Slider while its window is being destroyed no longer triggers a failed assertion. (80760)

  • Linux: Fixed an issue where ListBox content could be incorrectly offset when placed inside a GroupBox within a non-transparent Container. (80762)

  • Linux: FolderItem.MoveTo no longer raises an exception when moving a file to a different volume. (80715)

  • Linux: DesktopTextField/TextArea: setting a BackgroundColor no longer affects the text selection color. (80714)

  • Linux: Setting Graphics.LineDash to Nil now correctly resets the dash pattern, so lines are drawn solid rather than dashed. (80653)

  • Linux: Obtaining the Resources folder when the app name contains periods now works correctly. (80627)

  • Linux: We now enforce an initial minimum control height on Linux for controls that require it. This helps to prevent controls from being clipped. (80387)

  • Linux: App.ExecutableFile now returns a more reliable path/name, especially if the app was launched via a symlink. (78104)

  • macOS: Fixed a regression where DesktopListbox stopped raising MouseDown when the click happened on scrollbars. That also applies to DesktopScrollbar itself. (80797)

  • macOS: Graphics.Outline now works on macOS Tahoe, however, brushes will not be applied when drawing the Outline on Tahoe. (80701)

  • macOS: Fixed a DateTimePicker control bug under macOS, where it was using a different control height in the Layout Editor and at runtime, making it difficult to align it correctly with other controls. (80570)

  • macOS: A DesktopTextArea hosted on a disabled parent control within a DesktopContainer is now correctly disabled when the DesktopContainer is added to the layout. (80628)

  • Web: Fixed a WebChart issue causing using a prefix or suffix on some charts to throw errors at runtime. (81062)

  • Web: Fixed a bug where the image-cache system for PDFDocument was returning the wrong PDF XObject for a given image on web projects. (81046)

  • Web: Fixed a WebToolbar issue causing the Height property to not be fully represented at runtime. (80947)

  • Web: Fixed a WebToolbar issue causing menus in toolbars to be shown behind other toolbars. (80999)

  • Web: Fixed a WebListBox issue causing the header borders to be a pixel or two off. (80911)

  • Web: Fixed a WebChart issue causing the ScatterChartDataset.Fill property to be ignored. (80960)

  • Web: Fixed a WebListBox issue causing the EditCellAt method call to be ignored sometimes, when the cell text was empty. (80876)

  • Web: Fixed a WebPicture issue causing the constructor to throw an UnsupportedFormatException with some kind of JPEG files. (50612)

  • Web: Fixed a WebListBox issue causing styles to not be completely replaced after using style cell renderers multiple times. (80815)

  • Web: Fixed a few issues when setting a WebStyle value to Nil. It will reset the value to its default value now. (80811)

  • Web: Fixed a potential issue in Web projects causing a NilObjectException to be raised while trying to create a temporary file. (80773)

  • Web: Fixed an issue causing Web controls added at runtime to not fire events registered at design time. (80756)

  • Web: Deprecated WebApplication.AutoQuit in favor of AllowAutoQuit, for consistency with the other targets. (74147)

  • Web: Deprecated WebRadioGroup.RemoveAllRows method in favor of RemoveAll and RemoveRowAt in favor of RemoveAt, for consistency. (78807)

  • Web: Fixed a WebListBox issue causing editing fields to edit its HTML, instead of the text value. (80652)

  • Web: Fixed a WebListBox issue causing to show ellipsis on empty checkbox cells, when the column was too narrow. (80585)

  • Web: Fixed a WebListBox issue causing touch devices to not be able to select rows, when AllowRowReordering was set to True. (80545)

  • Web: Fixed an issue causing web controls to not be able to show a Tooltip, after removing it. (80532)

  • Web: WebLabel won't be using the label HTML element anymore, as it's meant to be used to label form controls, not generic captions. (79841)

  • Web: Fixed a WebPopupMenu issue causing the dropdown menu to continue being shown after clicking outside, when having a Tooltip. (80461)

  • Web: Fixed a WebChart issue causing some ChartDataset properties, like AllowInteraction, IsLegendVisible and AllowPopover to be incompatible with the deprecated web chart datasets (e.g. WebChartLinearDataset). (80402)

  • Web: Fixed an issue causing some browsers to display a Permissions policy violation complain on the developer tools. (80413)

  • Web: Fixed a WebButton issue causing the control to ignore multiple Pressed events, when pressing on it quickly enough. (80305)

  • Web: WebComboBox dividers won't be shown anymore when filtering results, as it causes accessibility issues when trying to navigate using the keyboard. (79315)

  • Web: Fixed a WebButton issue when using Safari with a mix of input devices. We will ensure this browser shows the focus ring when navigating through the controls without a pointer device. (80175)

  • Web: Fixed a WebPopupMenu causing the control to hijack the focus after closing its menu. (80469)

  • Windows: We now override the default system settings and instead honor the user dark mode settings (whether through our custom XOJO_WIN32_DARKMODE_DISABLED environment variable or build settings) to theme WinUI controls. (81031)

  • Windows: SearchField control no longer leaks GDI objects. (80990)

  • Windows: WinUI controls are now correctly themed when switching between light and dark mode. (80977)

  • Windows: WinUI: PopupMenu/ComboBox dropdown list is now dismissed when clicking outside them. (80522)

  • Windows: Controls on a window no longer move completely offscreen, leaving the window seemingly blank, when the PC wakes from sleep, or when turning off/on the monitors in a multiple monitor setup. (80926)

  • Windows: The WinUI Label control no longer incorrectly triggers the MouseDown event twice. (80793)

  • Windows: ProgressBar in dark mode now looks more like its equivalent in light mode. This works around a recent version of Windows 11 that updated the appearance of the Win32 ProgressBar in dark mode. Unfortunately the result looks unpolished and does not match the themed drawing we use for DrawInto, leading to visual inconsistencies. So to avoid this we now prefer the light mode version, which is also the behavior Windows used prior to this change. (80712)

  • Windows: Enabling a WinUI control no longer causes focus to shift to that control, unless it already has focus. (80649)

  • Windows: The Edit->Undo menu item is now correctly enabled when changes are made in TextArea and TextField controls. (31346)

  • Windows: Pressing Ctrl+H, while the DesktopWindow has keyboard focus, now triggers the KeyDown event. (80567)

  • Windows: Display the classic Win32 printer dialog because the newer WinUI version has issues when connecting to printers. (80283)

Compiler

Resolved Issues

  • iOS plugin Info.plist files now correctly use the minimum OS version specified in the build settings. (80775)

  • Android: Fixed an issue where the type of some Color methods were not being detected properly when used within the Array() method, which caused an Android compilation error. (80829)

  • Android: Fixed an exception that would occur when casting a variant containing an interface to the interface. (80622)

  • Android: Fixed a compile error that could occur in the Return of the Get section of a hidden computed ColorGroup property. (80807)

  • Android: Fixed a compile error that would occur with a string property whose value starts with #. (80661)

  • Android: Using Me or Self as the In variable (because it is an iterator) in a For Each is now properly cast to the correct type, fixing a compile error. (80853)

  • Android: Fixed a compile error that could occur when using a For Each with a function call as the In variable. (80830)

  • Android: Fixed a compile error that would occur when using a control subclass from a module on a screen. (80852)

  • Android: Fixed a compile error that would occur when comparing an enum with a class property of the same name. (80623)