Article Type: Release Notes Audience: All Users Module: Platform Releases
Here are some of the major highlights from this month's release. There's a lot here to kick off 2023!
The January 2023 release is the first under our new versioning scheme and release calendar. This new calendar should provide better predictability for customers, and allow us to better communicate new features with more detailed release notes like these.
Going forward, releases will versioned with the year and month of their deployment, plus a patch number. For example, this release will be versioned 2023.1.0. This version number is also now displayed on the Enterprise form, so you can always check what version of Fuuz you're using.
In addition to new version numbers, releases will now happen on a regular schedule. This schedule varies by the type of environment, as outlined below; the frequency or exact dates may vary in the future, but the approach of a consistent month-oriented release schedule is here to stay!

Among the many new features, two major new UI components have made their debut: a rich text editor, and a PDF renderer!
With this new "what you see is what you get" (WYSIWYG) component comes the ability to write and display rich text in Fuuz, including fonts, colors, sizes, alignment, and - of course - emoji. This expands the capabilities previously offered through the markdown editor. To accompany the UI component, there's a new RichText field type in the schema designer and a set of conversion bindings in the scripting system to let you convert between rich text, markdown, HTML, and plain text!

Frequently, users building applications wish to display PDF documentation to the end users of those apps. Fuuz now offers a powerful and fully-integrated option through a new PDF display component! In addition to being able to display a static PDF selected while building a screen, the component allows app builders to programmatically change the PDF source, zoom level, and page - meaning your app can automatically page through the documentation as users complete a process. For example, in the demonstration below, Fuuz automatically navigates through a PDF of instructions as users complete scans in an assembly process!

Among the many enhancements to the screen designer in this release are a set of exciting new features for tables. Columns can now render an input, enabling applications wanting to utilize inline editing; they support color and font formatting, improving at-a-glance display of information and usability on small devices; and they support rendering action buttons in table rows, allowing app builders to support row-level actions on table data!

After a series of performance optimization passes, the runtime of create, update, and delete operations - called "mutations" in GraphQL - in the Fuuz API has been improved significantly for operations affecting large numbers of records. First, the top-line number: Fuuz APIs are now up to 95% faster. As a result, the API can now process larger batches of records than ever - depending on the data model, up to or exceeding 50,000 operations in a single request.
If you're a data lover like me, I've included a table below outlining the runtimes comparing the 2023.1 release with the prior production version, 3.107.1, for varying payload sizes.
| Payload Size (ops) | 3.107.1 Runtime (s) | 2023.1 Runtime (s) | % Improvement |
|---|---|---|---|
| 1 | 0.045 | 0.036 | 20% |
| 100 | 0.343 | 0.091 | 73% |
| 1,000 | 2.867 | 0.467 | 84% |
| 10,000 | 91.712 | 4.008 | 96% |
| 50,000 | Timeout | 21.208 | ∞? |
The data tells an interesting story: for small numbers of operations, the API has always been fast; but previously, it slowed down quickly as payload size increased. After our optimization passes, the runtime increase is roughly linear, which makes runtime and performance changes predictable based on data volume growth.
This optimization pass reflects one of our major goals of the Fuuz platform: to get our software out of the way of end users. Building business applications is challenging enough without having to think about the software platform you're building them on - if we can make Fuuz transparent in the process, it lets users focus on the business requirements rather than the technology!
This release includes quite a few new features for data flows, including new nodes, a new integrated transform editor, and a metrics dashboard for monitoring system health.
Several new nodes make their debut in this month's release, including Throw Error and Filter Array. This release also includes new Mutex Lock and Unlock flow control nodes; however, those require a bit too much explanation for release notes!
The first of the new nodes with this release allows flow builders to easily throw errors during flow execution, which stops execution on that branch and returns the error to the requester. The screenshot below illustrates its use with an If Else node in a Request/Response flow, and it can also be combined with the Try Catch node for greater control over flow error behavior.

The other new node to highlight this release is the Filter Array node, which provides an easy mechanism for filtering arrays of data passing through flows. The example below shows its use in a scheduled flow reading PLC tag data.
Note that along with this new node, the node previously named Filter has been renamed to Accept, which matches the verbiage used in its twin (the Reject node) and which should be less confusing. Those nodes either accept or reject an entire flow message, whereas the new node filters out array entries in the payload.

This month's release includes a much-anticipated new feature for the flow designer: an integrated transform editor. This editor pulls many of the features available in the standalone Script Editor into the flow designer, so "pro-code" users can seamlessly edit and test scripts embedded in data flows without switching tabs or copying and pasting between editors.

This new editor can be accessed on any script or transform input in the flow designer by clicking the "expand" icon in the upper right:
![]()
In addition to new nodes and improvements to the flow designer, the 2023.1.0 release also includes a new dashboard for monitoring system health. This dashboard - the Data Flow Metrics Dashboard - displays a number of useful system metrics: the number of flow executions over time, the success rate of running flows, the estimated runtime of running flows, and the average runtime of any nodes with metric collection enabled.
Together, these data points give an overall picture of system health: for example, if an external system goes offline and integration data flows start failing, the success rate for those flows will drop, signaling an issue. Similarly, if a data flow seems to be running slowly, metrics can help pinpoint the problem nodes. Currently, metric collection for nodes is opt-in, but there is work planned to make metrics opt-out instead, so metrics are collected by default for all nodes.

_all and _none predicates for list relations_some predicate to correctly combine nested predicatesfalse as a default value for Boolean fieldsstart and length parameters to Read File device driver function to allow partial reads of large files$urlStringify binding$urlJoin binding$startsWith, $endsWith, $removeLeadingValues, and $replaceLeadingValues$getCalendar binding error when providing only ID or name but not both