Objo Studio v26.9.4 Released

I’m very happy to announce the immediate availability of Objo Studio 26.9.4.

There’s plenty in this release, from new controls and standard-library additions to fixes across the compiler, debugger and visual designer. But the part I’m particularly proud of is Web.

Web projects are no longer in beta.

You can read about everything in the full changelog, but here are some of my favourite improvements.

Web leaves beta

Web projects arrived earlier this month, bringing responsive browser applications to the same IDE and language we already use for desktop and command line development.

Since then, there’s been a substantial amount of work on the controls, designer and runtime. Community feedback has helped identify the awkward interactions and small inconsistencies that become apparent when people start building their own applications.

With 26.9.4, we’re removing the public beta label.

You can design responsive pages visually, write their behaviour in Objo, debug server-side events from Studio and publish a self-contained server application. Desktop, Web and Command Line projects can live together in one solution and share their common code.

I’m really pleased with how this is coming together. Making useful web applications should be approachable, and this release takes another substantial step towards that.

More controls for Web applications

Four new controls give Web projects some useful additional building blocks:

  • TreeView presents hierarchical information such as categories, navigation and document trees. It supports icons, single or multiple selection, in-place editing and optional drag reordering.
  • TagField brings the desktop tag-entry control to Web projects. It’s useful for keywords, recipients and filters, with removable tags, autocomplete suggestions, duplicate handling and validation.
  • PagePanel lets you design several pages inside one container and choose which is visible from code. It’s particularly handy for wizards, stepped forms and setup flows, where the application controls progression.
  • Link adds proper clickable links to both Web and Desktop projects. On the Web, it uses a real browser link, preserving familiar behaviour such as opening in another tab, copying the address and using the context menu.

These controls are integrated into Studio’s visual designer and Inspector, so you can place and configure them alongside the existing Web controls.

Web applications also gain MessageDialog for confirmations, warnings and other decisions. Showing a dialog leaves the server free to continue; your application receives the user’s choice through its Dismissed event.

For lighter feedback, there are new in-app notifications. These appear inside the application without requiring browser notification permission—useful for messages such as “Changes saved”, validation warnings or progress updates.

A smoother Web experience

New controls are lovely, but getting the existing ones right matters just as much.

This release fixes a collection of everyday Web issues:

  • ListBox columns now resize correctly when dragging their header dividers, and column separators remain visible when row grid lines are disabled.
  • NumericTextField no longer unexpectedly snaps an assigned value to its increment.
  • Placeholder text uses an appropriate placeholder colour and remains readable in dark themes.
  • An ImageViewer without an image no longer displays an unwanted placeholder border.
  • The designer’s Hierarchy follows the selected control, and nested controls stay within their container’s layout space.
  • Deleting a Web control or Timer also removes its associated event handlers.

Adding event handlers to pages with lots of controls has also been improved, addressing a freeze in the designer.

Timers now appear in the Web page hierarchy and have Cut, Copy, Paste and Duplicate commands. Bundled Web examples have their own Web Apps category too, making them easier to find when you want to explore a control or start from a working example.

Plenty more beyond Web

There are some useful additions elsewhere in Studio:

  • QR code generation lets applications turn text into pictures or PNG data without using an online service. A new bundled example demonstrates it.
  • HTMLDocument and HTMLElement provide HTML parsing, element navigation and CSS selector queries for extracting information from real-world HTML.
  • DatabaseRow makes database inserts more convenient: assign typed values to named columns, then pass the row to AddRow.
  • PDF/A-3 output with embedded files provides building blocks for ZUGFeRD e-invoicing.
  • ListBox gains configurable header height and column resizing, plus the ability to clear column sorting.

Native Linux packages

Linux users can now install Studio using first-party Debian and RPM packages.

These integrate with the system package manager, register Studio in the application menu and make the objo and objo-studio commands available on your path. Uninstalling through the package manager removes that integration cleanly too.

A small reminder about pricing

As previously announced, the price of an Objo Studio licence will increase from £99 to £129, plus applicable taxes, on 1 October 2026.

The current price remains available through 30 September, so there are still a few days to purchase at £99 if you’ve been considering it.

One licence covers desktop, web and command line applications, including 12 months of updates. Versions released during your licence period remain usable after it expires. Existing licences that cover this release already include Web publishing.

You can find the details on the pricing page. Designing, coding, running and debugging remain free.

Download Objo Studio 26.9.4, try the new Web controls and let us know what you’re building on the forums.

I hope you enjoy this release. Thank you to everyone who has tried Web projects, reported problems and helped make them better.

Thank you Garry for this excellent update. Objo Studio is getting more powerfull with a lot of usefull improvements with every new version.

Keep up the good work!

Kind regards,

Chris

Today, 30. September - last day of 99 Pound price - I ordered Objo. Even I will use it under Mac OS Intel - running Objo in VM Win11 - I I don’t have an Apple Silicon Mac :wink:

I just bought a license too, even though I’m leaning more toward Buoy. It’s mainly to support alternatives to, you know :slight_smile:

Thank you very much indeed.

I appreciate the support but hopefully as I continue to work on Studio, polish it and support more targets easily for you, I can tempt you to lean on Objo rather than Buoy.

Don’t get me wrong, Garry. I’m not saying Buoy is better than Objo at least not when it comes to the IDE itself. I can’t stand VSC. I’m looking for pure performance, and Buoy seems a bit superior in that specific regard. Anyway, I would have done exactly the same thing if the situation were reversed.

I have trouble liking VS Code also. It rubs me the wrong way for some reason.

My take on performance is that the design, language and IDE experience in general is part of the performance story. Now that we are on the cusp of a C# bridge I can cross that bridge to get the performance when I need it. Later if you really need your hair blown back we will be able to do C / C++.

Deserved or not, people have similar performance concerns for Python (and until very recently, Python was a lot worse in the multithreading department than Objo is out of the gate) but so much of the performance critical stuff has been put into widely-used C libs that it’s not necessarily an issue. And now you can resort to Mojo if you want for most native Python, too.

I guess that what it boils down to is that VMs, garbage collectors, JITters and the like have gotten so good (and modern hardware has continued to advance too of course) that the performance gap is far less substantive than it was, say, a decade ago. So even though I started doing this stuff in the early 1980s and am not immune to the siren song of bare-metal native code, I’m evolving now in the same way that I haven’t written assembler since about 1988. It’s virtually never worth it anymore.

On the topic of performance, there were a few things that i did up front with Buoy to make sure performance was a priority:

  1. No method level exception blocks. That whole thing where you can just catch exceptions at the end of a method is very expensive performance wise. If you want this, just wrap the whole method in a try-catch… but seriously, just use exception blocks for targeted things.
  2. No way to “handle” an exception at the app level. This effectively means that every statement needs a tiny try-catch block around it so you can return true and just continue. Buoy does let you show a message there, but the app is going to close no matter what.
  3. Exposed all LLVM compile options. I get why Xojo doesn’t do this. When your customers don’t want to know anything about compilers, it sucks to have to say, “here’s the simple explanation, otherwise go look at the LLVM docs.” It also means that they’re missing out on options that could really help performance.

As for VSC, I use it every day at my real job and while I wanted to do a layout editor in Buoy (may still later), I am absolutely amazed at what I’ve been able to do using typescript. Getting to a view editor that supports locks was downright simple. Adding constraints has been a little challenging (still in progress) but I have confidence that it’s going to work as expected and make sense in the end. All while maintaining the ability to construct views by hand, that’s saying something.

I don’t dispute that even I like the separation that an IDE provides, but I don’t find this way impossible. It just requires a little more mental memory… and to be honest, with the buoy ai init command that initializes a workspace for use with AI, I’m pleasantly surprised at how well it can do with a language that, for all intents and purposes, didn’t exist 8 months ago.

Now back to your regularly scheduled programming…