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 Device 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.
Added “Collapse All” toggle to toolbox to collapse or expand all groups
Added “Include Fields” toggle to toolbox to control whether search also searches field names and descriptions
Updated “Label Field” input to only display fields with valid types
Added feature to automatically update relation metadata when relation ID fields are renamed
Added “Data Change Capture” option to data model fields
Updated layout and styles on system fields section to improve readability
Added option to prevent recent password reuse
Updated creation for roles, policies, and policy groups to use camel case name as ID
Added support for limiting access to screens via access control policies
Added ability to delete users if the user has never signed in, has no API keys assigned, and is not an enterprise administrator
Corrected a bug that could arise during user creation if a policy or group was selected then removed
Updated Data Models screen to display more detailed and accurate information on data model storage size and record count
Updated max memory configuration for Redis replicas
Upgraded service mesh to latest version
Implemented a variety of tweaks to minimize noise in log collection
Implemented improved termination behavior for services to reduce disruptions from autoscaling and deployments
Updated some log calls which previously used an incorrect signature
Added gateway-deploy utility to support metadata upload
Unified device subscription setup to support store and forward on any device subscription
Addressed various bugs and stability issues with the Device Gateway Service beta
Added HTTP Server driver
Added SAP RFC driver beta
Updated PLC driver to improve error handling and fix minor bugs
Re-added previously removed device subscription form
Added release channels and Device Gateway Service to Fuuz Apps screen
Corrected an issue with some data flow log paths
Added support for testing mutex nodes in the flow designer
Added diffDataFlowVersion query to analyze differences between data flows or data flow versions
Updated data flow deployment logs to utilize a tiered TTL based on log level: 2 days for debug & trace, 2 weeks for info and warn, and 2 months for error and fatal
Added a Webhook source node for events received on webhook-accessible topics
Updated Dynamics 365 connector to support custom headers on requests
Added new package management system to better handle large, complex packages and updates
Added new Package Definition Editor to build packages for new system
Renamed legacy package builder to “Package Builder (Deprecated)”
Updated Data Flow Models screen to gracefully handle data flows with syntactically incorrect GraphQL statements
Updated topics to add a “Webhook Accessible” property which determines if the topic can receive publish commands through the webhook API
Added environment type (build, QA, or production) to system email footer
Corrected a bug with code blocks in Markdown editor/display components
Added a “Select All” checkbox on the field picker input
Updated icon/action buttons to correctly apply hover effects when a custom color is selected
Corrected an issue with date type table columns overlapping adjacent cells
Added card data to screen context to better support tables in cards
Updated label and description for “Block Navigation When Dirty” setting on forms
Updated screen creation to use camel cased name as ID
Added “Collapsed by Default” option for collapsible container elements
Added collapse, expand, and toggleCollapse functions for container elements
Added “Default to Display Mode” option for Markdown and Rich Text elements
Added “Select Multiple Rows With Click” option to tables to allow row multi-select by clicking anywhere on a row, rather than just the selection checkbox
Added “Select Time of Day” option to Date inputs to control the time of day of the selected value
Added a static image preview for visualization elements
Added support for JavaScript in frontend transforms
Updated FullCalendar library to latest version
Added framework, designer, and canvas screen support for web flows