Error Popover

by Joe Johnston

Tired of guessing where things went wrong in your Budibase app? Say hello to a streamlined, intuitive way to tackle errors: the new Budibase Error Popover!

We've completely revamped how you find and fix issues, giving you a powerful new tool to boost your development workflow. No more cryptic messages, the Budibase Error Popover puts all the information you need at your fingertips.

Here's what you can expect:

  • Centralized Error Hub: A dedicated space within Budibase's design section where errors relating to the specific screen are aggregated and displayed.
  • Clear and Concise Error Messages: We've translated technical jargon into plain English so you can quickly understand the root cause of each issue.
  • Links: Each error links to the component and setting, allowing you to pinpoint the problem area in seconds.

Stop wrestling with bugs and start building with confidence. The Budibase Error Popover empowers you to:

  • Debug More Efficiently: Spend less time tracking down errors and more time building amazing features.
  • Improve App Quality: Identify and resolve issues quickly, leading to a more stable and reliable application.

In addition to the new Error Console, we've added preemptive measures across the builder to inform you of the effects of a dangerous deletion. For example, if you delete a data source, we will list the affected screens.

State panel

by Joe Johnston

It is common to use state when building Budibase apps. Sometimes, a screen can have multiple instances of state. The new state panel makes it quick and easy to see what state has been set on a specific screen and where it's being used.

Key features:

Viewing state: You can see all the state variables defined within your screen.

Testing state: Before the introduction of the state panel, to test your state, you would have to open the app preview and then activate it. The new test input allows you to test state and see the result within the design preview without opening the app preview.

Linked components: Understand what components are setting state and what components are using it. Referenced components are linked to make them easier to locate. When clicked, the specific setting will be highlighted within the component settings panel.

Bindings panel

by Joe Johnston

The new Bindings panel serves as a window to view the data available to your screen or tied to your component, essentially providing a central location to inspect and understand how data is flowing through your app.

Key features:

Viewing bindings: You can see all the bindings defined within your screen, including their current values which is helpful for debugging and understanding data flow.

Accessing component data: The panel displays information about each component in your app, letting you check their current state and values.

Debugging tool: By using the Bindings panel, creators can quickly identify issues with data consistency or unexpected changes in their application.

JS Console Logging

by Joe Johnston

Introducing console.log type functions within JavaScript bindings, enhancing the developer experience by providing previewable logs directly in the platform.

Key Features:

Previewable Logs: console.log, console.warn, and console.error calls within JavaScript bindings are now displayed in the preview pane. This allows developers to debug and understand binding behavior before deployment.

Distinct Log Levels: console.warn and console.error messages are visually differentiated from regular console.log messages, improving readability and highlighting potential issues.

Comprehensive Formatting: The implementation supports comma-separated log statements and correctly displays different data types, including proper highlighting for JSON objects.

Frontend-Only Logging (Initial): Currently, all logging is handled on the frontend. This means logs are visible when previewing formulas or automation bindings (where preview is supported). Backend logging is not yet implemented.

Design to App Preview Persistence: Logs generated in the design section will persist and be visible when previewing the actual application. This enables you to effectively debug binding evaluations within a realistic app preview.

App speed is an obsession within Budibase. While we try to pay attention to performance when adding new functionality, regressions and unoptimized codepaths do happen.

This time around, the opposite has occurred. Whilst delivering a different feature, we discovered an opportunity to optimize performance for JS bindings within the design section.

The change included forking vm-browersify to reduce its resource usage.

The result

When running tests, we used a repeater to display 1000 components, each containing 1 JS binding, and the render time went from 32.8 seconds to 1.4 seconds. This enhancement dramatically improves the performance of JS bindings.

Field components no longer have to be wrapped in a Form component to work. When used without a form, they provide a global binding of their value.

Almost all field types support this usage, except attachments (single and multiple), signatures, and relationship pickers, which must be bound to a datasource to function.

A couple of things to note:

  • The field setting is now optional for standalone fields. Instead, the component name will be used to generate the global binding.
  • All settings, such as validation, default values, and on-change actions, continue to function as expected.

We’ve introduced View Calculations in Budibase, making it easier than ever to analyze data directly within your app. With a fresh and intuitive interface, View Calculations let you group, filter, and aggregate data dynamically.

Here’s what’s new:

  • Dynamic Filtering: Select which rows to aggregate using the familiar filtering UI, powered by real-time, binding-enabled inputs.
  • Group By: Group data by one or multiple fields, and order by grouped or aggregate columns.
  • Aggregates: Perform calculations such as COUNT, SUM, AVG, MIN, and MAX on your data. Aggregate fields are automatically named for clarity and consistency.

View Calculations are read-only and designed to streamline your workflows, all while maintaining simplicity and performance.

This release introduces four new AI-driven features:

  • AI Configs: Connect OpenAI-compatible language models (OpenAI, Azure, Anthropic, and others) directly to Budibase. Run multiple AI workflows with ease.
  • Budibase AI: Built-in AI, powered by ChatGPT, is now available for Premium Cloud users, bringing AI functionality directly into your workflows without external LLM setup.
  • AI CRON Generator: Set up automation schedules with natural language—simply type commands like “Every Tuesday at 3 PM,” and Budibase converts it to a CRON expression.
  • AI Column: Add dynamic AI-powered columns to any table. Analyze data, triage tickets, and draft responses with AI directly in your database, compatible with Postgres and MySQL.

Check out the full launch blog for more information!

This release introduces conditional branching to the Automation section as part of Budibase 3.0, enabling you to define rules for executing different sets of actions.

This is accompanied by several UX enhancements, including:

  • Drag-and-Drop - To rearrange actions without losing their configuration.
  • Pan and Zoom - Shift your focus between individual branches and the wider automation flow.
  • Updated Testing - Only the branches and actions that are actually executed will appear in automation tests.
  • Branch Reordering - Rearrange adjacent branches in order of precedence at the click of a button.

We’ve created a launch blog detailing everything you need to know about Automations in Budibase 3.0.

Managing permissions in Budibase just got a major upgrade! With the new Role-Based Access Control features, you can now visualize and manage permissions more efficiently.

Here’s what’s new:

🔒 Visual Role Management: Use an intuitive drag-and-drop interface to create, update, and visualize roles and their permissions. Easily connect roles to establish permission inheritance and streamline access management.

🌿 Branched Permission Inheritance: Assign permissions from parent roles to child roles. This makes managing complex permissions more intuitive by ensuring that higher-level roles inherit the capabilities of lower-level ones.

🛠️ Updated Role Definitions:

  • App Admin: Full access with the highest level of control.
  • App User: A restricted role with no built-in permissions.
  • Power User: This has been discontinued for all future apps.

Watch the launch video to learn more!