Article Type: Release Notes Audience: All Users Module: Platform Releases
The 2023.4 Fuuz platform release is a big one, with a lot of changes and several significant, multi-month projects rolling out. Here are the major highlights.
This month's release includes a long-awaited new feature for the screen designer: web flows! Web flows are exactly what they sound like: data flows that run on the web. These are data flows that can interact directly with users and screens: prompting users for input, displaying notifications, changing form values, hiding and showing containers, and more. This system is designed to be a powerful, flexible, and easy-to-use replacement for the action system currently available on screens.
When creating a flow, users will now be presented with a new choice: the flow environment. The flow types previously available fall under the "Backend" environment; the new flow types fall under the "Web" environment. Once an environment is selected, users can select a flow type like they're used to.

Once a user creates a web flow, new web flow-specific nodes become available in the toolbox, in addition to the core flow nodes you're used to.






Once a web flow is saved, it can be used with the new Flow Button element in the Screen Designer; after dragging in the element, simply select the web flow to execute and (optionally) provide a payload. Flows can also be set up to run on page load at the screen level, or simply loaded in if they have schedule or event source nodes.



Combined with the flexibility of the screen designer, web flows allow app builders to create dynamic interfaces using the same visual programming system used for business logic, integrations, system events, and more. Here are a few quick snippets of flows to demonstrate possibilities:



As they're being developed, web flows can be tested in both the flow designer and in screens in which they're linked. Since they lack the context of a screen, any screen component nodes won't have an effect in the designer, but dialog and all core nodes can be quickly tested in the designer.

When a web flow linked to a screen is saved and that screen is open in another tab, Fuuz synchronizes the screen state in that other tab to allow flows to be tested during development in the context of the screen they'll be used in.

Web flows represent a significant and very powerful enhancement to the capabilities of the Fuuz UI system; we're looking forward to seeing what our users do with them!
The 2023.4 release also includes another generational leap forward: this time in the realm of packages. Our existing package management system has performed well since its release several years ago, but as our platform grew, it became apparent that there were several fundamental shortcomings we wouldn't just be able to patch over. Among these were the system's ability to handle very large packages, the level of attention required to build a package, and the difficulty of debugging packages when something didn't go according to plan. With these issues in mind, we started a project late last year to rebuild our package system from the ground up. I'm pleased to announce that project has completed and the updated system is rolling out with this month's release!
This updated package system comes with enormous improvements. First of all, building packages is now significantly faster and easier. The designer allows users to quickly pull in related data and records, allows users to quickly select all records from a type, and no longer requires users building packages to worry about the order of operations or dependencies.

The package definition editor now validates ("lints") packages as they're designed to identify issues that might prevent the package from installing correctly, and enables one-click fixes to common issues.


The system also has dramatically improved logging and automatic error handling; some errors that would previously have failed to install are now able to automatically correct and continue installation. Combined with the package linting, there are very few situations where a package installation will fail in the first place; but if it does, detailed logs are available to help identify and correct what went wrong.


The new package management system allows users to upgrade packages - something we were never quite able to make work with the old system. The system will intelligently compare the package versions installed, determine what needs to change, and apply only those changes that are required.

The new package builder is named the Package Definition Editor; for the time being, the legacy package builder is still accessible, but has been renamed to "Package Builder (Deprecated)". We'll remove access to it in a future release. Both legacy and new packages are installed the same way they always have been, via the Fuuz Packages screen. We won't make plans to deprecate installing legacy packages until we're confident existing packages have been migrated.
April 2023 also brings an upgrade to the policy-based security system in Fuuz. The access control policy system has always allowed flexible, granular permissions to be applied to Fuuz APIs; this month, we're extending that system to screens as well. This allows administrators to define policies which restrict which screens users are allowed to access: if permission for a screen isn't granted, it won't appear in the system menu or search bar, and if they navigate directly to the URL, the system will display an error as though the screen in question doesn't exist.

Screen access can be granted individually, to entire modules or module groups, or any combination of those, just like API access.


Before this update, administrators could apply permissions to the APIs used by a screen so users would receive permission errors when attempting to retrieve or edit data, but not to the screens themselves. This enhancement allows administrators to narrow the list of screens end users are allowed to access, reducing noise in the menu and search system and eliminating potential confusion. This enhancement doesn't eliminate the need to apply permissions to API access - we still recommend administrators start there when building policies to ensure users aren't able to wiggle around security - but it helps streamline the interface for the end user.
Included in this month's release is a new driver for the Edge Gateway: an HTTP Server driver. This driver is the first of a new class of drivers whose responsibility is to listen for commands from within a network and relay them up to Fuuz. This driver has two modes of operation: HTTP relay endpoints and HTTP POST device subscriptions.
These endpoints are configured on the device and create an HTTP endpoint that relays requests to a data flow via the Request/Response system. Endpoints relay all HTTP methods, and the payload includes the request method, headers, and body data. The flow response is returned to the HTTP request. This system allows Fuuz data flows to act as handlers for HTTP requests issued from within your internal network.

These endpoints are configured as device subscriptions and allow Fuuz data flows to subscribe to POST requests using Device Subscription nodes. In this configuration, the system issuing the POST request does not receive a response from the data flow. This approach support asynchronous fire-and-forget systems like webhooks issued from systems within your internal network.
Also included in this month's release are improvements to the Data Models API and screen to provide better information about data storage utilization in Fuuz. The existing data size and record count fields have been updated to provide more meaningful estimates of utilization, and additional fields have been added to report the utilization of data change collections if DCC is enabled. This information will help administrators plan for and understand usage-based billing charges and plan changes to data retention or ingestion processes to reduce usage if needed.

The April 2023 release of the Fuuz platform includes some broad changes to our service configuration to further minimize potential disruption caused by system scaling and deployments. During deployments and periods of high load, Fuuz automatically provisions additional resources to ensure service availability; these improvements ensure when these additional resources are no longer required, pending requests are allowed to complete before the resources are terminated. This further reduces the chance that users or data flows will encounter transient errors and makes deployments and scaling seamless.
diffDataFlowVersion query to analyze differences between data flows or data flow versionsdate type table columns overlapping adjacent cellscollapse, expand, and toggleCollapse functions for container elements