Changelog

We're always working to make the Dynaboard experience delightful.

  • 🚀  3 new features

  • 🏗  17 updates and improvements

  • 🛠  20 bug fixes

Build faster with the new Command Bar

Use the command bar to browse different UI components or search for and select different pre-existing nodes.
Use the command bar to browse different UI components or search for and select different pre-existing nodes.
  • 🚀 We’re just getting started with improvements to the way you insert and find UI components, resources, and functions to your application. Start browsing available UI components or search for any existing nodes by clicking the command bar at the top of the editor or using the CMD / CTRL + K hotkey. Expect a lot more improvements coming soon ✨

Use the editor with smaller screens and windows

On small screens, browse through different panels you mouse before selecting a component. Detail panels are also now collapsable.
On small screens, browse through different panels you mouse before selecting a component. Detail panels are also now collapsable.
  • 🚀 We’ve completely overhauled how we display panels in the editor. In order to support smaller screens and windows, we’ve added the ability to collapse both the left and right panels as well as a new hover systems to support quicker navigation between different tabs and nodes.

Create advanced custom components easier with the new property definition system

  • 🚀 We’ve made it easier to define custom component properties in the UI. Using the new properties panel on components, create a property, provide a display name, and define the type. Properties passed to components can be numbers, strings, objects, colors, or even functions!

Editor Updates

  • 🏗 When hovering a cursor over UI Components, the component name, outline, and corresponding item in the component tree are now automatically shown and highlighted.

  • 🏗 All panels now display the number of nodes (components, resources, functions, etc..) when collapsed.

  • 🏗 Components with children (e.g. containers) are now expanded by default.

  • 🏗 Added “jump to” buttons on all function selectors with a selected function.

  • 🏗 Create functions directly from resources using the new functions panels. The new functions panel also takes the place of the original functions tab showing all functions connected to the selected resource.

  • 🛠 Updated the canvas cursor icon for consistency with multiplayer editor experience.

  • 🛠 Property labels are now fully clickable in the right side panel rather than just the property field.

  • 🛠 Fixed issue where changing pages in the editor caused a scroll to the top rather than preserving scroll depth.

  • 🛠 Toast notifications have been moved above the new floating action bar at the bottom of the editor canvas.

  • 🛠 Fixed an issue causing there to be no active component or resource selection after using an undo action.

Text Editors

  • 🛠 Page state variables are now shown as assignable values in code editors.

  • 🛠 Fixed an issue causing an errant semi-colon to be placed in front of an array when auto formatting.

  • 🛠 Autocomplete suggestions now support selection via a mouse cursor.

UI Components

Pages & Containers

  • 🏗 Components placed into a page or container while in stack mode are now given 100% width or height in the opposite direction of the stacking context.

  • 🏗 We’ve improved the severed Open Graph data for individual pages in deployed apps.

  • 🛠 Grid and stack modes have been improved with stability enhancements when switching between modes.

  • 🛠 Invisible UI components are now collapsed to take up no space. This leads to proper stack mode behavior with hidden UI components.

Inputs

  • 🏗 Multiple improvements to input labels with new percentage widths, text alignment, and the default label values.

  • 🏗 The dropdown default value selector is now a dropdown itself.

  • 🏗 Left and right input accessory icons and labels now support their own on-click handlers.

  • 🛠 Fixed the dropdown’s default font weight adjusting it to normal vs medium.

  • 🛠 The dropdown no longer has default display values set that caused confusion when updating the underlying values.

Custom Components

  • 🛠 Theme tokens are now properly supported in the background color of custom components.

Sign-In

  • 🛠 Fixed an issue that caused the sign-in node to error in the editor when the browser window had been left open for extended periods of time.

  • 🛠 Fixed an issue where a previous sign-in error wasn’t cleared when using the one-time PIN resource.

  • 🛠 The PIN code UI now properly scales down on a mobile screen size.

Charts

  • 🛠 Charts now have a default background color set.

Themes & Styling

  • 🏗 The use of surface colors for UI components (e.g. surface.100, surface.200, etc... has been deprecated in favor of background using background.base, background.levelOne, background.levelTwo, background.levelThree for color levels. This was done to improve styling consistency in apps across dark mode and light mode.

  • 🏗 A new dynaboardGray color is now supported with color levels .50, .100, .200, ..., .900.

All Components

  • 🏗 <componentName>.children returns an array of the children of the referenced component.

  • 🏗 $parent is a new global which resolves to the parent of the current component.

Resources & Functions

Configuration & Secrets

  • 🏗 Numbers are now supported as a defined configuration type.

  • 🏗 Secret configuration now supports a visible fallback if no secret is provided.

Postgres Resource

  • 🏗 Common connection error messages have been improved for faster configuration.

OpenAPI Resource

  • 🛠 Fixed an issue where headers and query params were not being appropriately passed in OpenAPI resource functions.

MySQL Resource

  • 🛠 Multiple distinct SQL statements are now correctly supported.

All Functions

  • 🛠 Fixed an issue with functions where using both client-side {{ }} and server-side ${{ }} interpolation in the same function caused an error.

  • 🚀  9 new features

  • 🏗  27 updates and improvements

  • 🛠  5 bug fixes

The new floating action bar contains the most common editor controls, including: edit / test mode toggle, viewport size picker, and color mode selector.
The new floating action bar contains the most common editor controls, including: edit / test mode toggle, viewport size picker, and color mode selector.

Edit & Test with the Floating Action Bar

  • 🏗 Select & Interact modes are now Edit & Test! In addition we’ve moved all of the common editor tool actions to a floating action bar at the bottom of the editor screen. There you can find the Edit / Test mode switcher as well as the selectors for testing different screen sizes and color modes.

Headers, Footers, and Sidebars

  • 🚀  Pages support new layout system that allows for consistent headers, footers, and left or right sidebars using custom components. Once created and added to a page, side bars can also be programmatically opened and closed using the $currentPage.leftSidebar and $currentPage.rightSidebar properties by setting them to either true or false.

Performance Improvements

  • 🏗  Application load times when deployed have been dramatically improved (with more to come) with a focus on improving Lighthouse scores.

  • 🏗  Function execution times for most resources have been improved with a 2x improvement for the TS Server, and frequently accessed functions seeing up to 3x faster responses.

  • 🏗  Editor responsiveness has been dramatically improved when switching pages and rendering iterators.

  • 🏗  KV Store has also seen performance improvements, and now returns up-to 3x faster.

Editor Invite Links, Authorized Domains, and Workspace / Project Invitations

  • 🚀 Configure your shared workspace with an authorized domain to share access with your coworkers using a dedicated link. No more need to invite the entire team one by one. However, when you do need to invite users individually we’ve also overhauled the invitation system to show invitations that have yet to be accepted.

Configuration and Secrets

  • 🏗 Application configuration and secrets now have their own sidebar panel with a newly streamlined flow for creation, deletion, and configuration of existing secrets.

  • 🏗 Changes to configuration values no longer require a refresh to be reflected in the app while using the editor.

Custom Sub-domains

  • 🚀 Support for custom sub-domains (e.g. application.yoursite.com) is now available on all paid plans.

Editor

  • 🏗 Clicking on another user’s avatar in the toolbar will now jump you to their current selection.

  • 🛠 Auto completion now opens when starting an interpolation by writing {{.

UI Components

Custom Components

  • 🏗 They now default to a fixed number of rows rather than a fixed row height to better support responsive designs.

  • 🏗 Support for passing functions through $props into components from the page on which they’re being rendered.

Text

  • 🏗 The default markdown & link styling has been improved in text component.

Data Tables

  • 🚀 CSV and JSON download support has been added to data tables. Enable to allow users the ability to download the data backing a data table for easy analysis in other tools.

  • 🚀 A new link column type enables support for linking to any URLs from a data table (e.g. a link to a user’s website).

  • 🚀 A new button column type allows for additional custom actions to be taken on items in a data table (e.g. deleting the item, or copying a row to the clipboard) beyond the single event provided by clicking the row itself.

Inputs

  • 🏗 Inputs now support left and right accessory icons for improved UI styling.

  • 🏗 Inputs with labels now support configurable label widths for better custom layout support.

Sign-in Widget

  • 🛠 The sign-in widget has been updated with more consistent styling and error handling.

Iterators

  • 🏗 Users can now jump directly to the underlying custom component backing an iterator from the iterator properties panel.

Containers

  • 🏗  Like custom components containers as default to a fixed number of rows rather than a fixed row height to better support responsive designs.

  • 🛠  Components in containers with stack mode enabled properly support % widths and heights. Also, more reliable overall.

Charts

  • 🏗 Charts now automatically detect and switch time formatting on the x axis when appropriate.

Resources & Functions

  • $crypto

    • 🏗 $crypto.random is now backed by the crypto.getRandomValues method for more cryptographically secure random number generation.

    • 🏗 $crypto.randomUUID now provides an easy way to generate random UUIDs.

    • 🏗 All features now supported in TS Server as well as TS Client functions.

  • $kv

    • 🏗  Now supports types and typeahead when programmatically accessing the key / value store.

  • $delay

    • 🏗  Setting a delay is now supported on TS Server in addition to TS Client.

  • _.

    • 🏗  We now support the full lodash library inside of TS Server and TS Client functions.

  • $csv

    • 🚀 CSV parsing is now provided as an option in TS Client and TS Server.

  • TS Client

    • 🏗 btoa & atob functions are now supported in TS Client.

    • 🛠  setTimeout when used with a promise has been fixed.

    • 🏗 $currentPage

      • .query object contains the parsed query string of the URL used to load the page.

      • .params object contains the parsed URL path as defined using a : in the ExpressJS routing style /page/:firstParam/:anotherParam

    • 🏗 $app

      • .colorMode can be used to determine if the users current colorMode is light or dark.

      • .baseURL provides the current URL where the application is being run.

      • .viewportWidth & .viewportHeight provides the current viewport width / height in pixels and can be used in conjunction with $breakpoint to build responsive UIs.

    • 🏗 $breakpoint

      • Provides Desktop, Laptop, Tablet, Mobile breakpoints at 1280, 1024, 768, and 320px.

  • 🛠  Fixed an issue causing infinite loops when using interpolation {{ }} in certain functions.

  • Function Arguments

    • 🚀 Arguments are now supported between all functions / resource types (except Python Server). Arguments can be used inside functions by using $args[I] where I is the 0-index of the argument passed into the function (e.g. $args[0] is the first argument).

  • Browser

    • 🏗 Soft refreshing of the current page is now supported as a browser function action.

Sign-in with your existing identity provider or use Dynaboard's one-time PIN system.
Sign-in with your existing identity provider or use Dynaboard's one-time PIN system.
  • 🚀  7 new features

  • 🏗  27 updates and improvements

  • 🛠  9 bug fixes

Authentication

  • 🚀 Groups Based Authentication

    • We’ve added support for Google Workspace Groups and GitHub Teams to automatically restrict applications or pages to certain teams or individuals based on existing SSO group membership.

  • 🚀 One-Time Pin Email Authentication

    • Quickly secure your applications without having to integrate a 3rd-party SSO provider. Start building an authenticated private application in less than a minute with our Private App Boilerplate template.

  • 🏗 We made additional visual improvements to the authentication rule building UI to both speed up development and make it easier to spot / correct mistakes.

  • 🏗 Using a new toggle on the built-in Dynaboard console, selectively enforce authentication rules in the editor to speed up application development and testing.

Switching environments in a project using the dropdown selector.
Switching environments in a project using the dropdown selector.

🚀 Environments

On paid plans, we now offer environments support to enable software development best practices when using Dynaboard. All workspaces come with a production environment, and a number of additional environments (e.g. staging, development, etc…) can be configured based on the workspace plan type.

Using environments, every resource in your applications can be configured to swap between databases or API endpoints at the click of a button. Build with confidence knowing you can test every change before deploying it to production.

Browse and revert to earlier project revisions using Dynaboard’s built-in version control.
Browse and revert to earlier project revisions using Dynaboard’s built-in version control.

🚀 Project Revisions

If you make a mistake or discover a bug, use automatically (or manually) created revisions to revert your application to an earlier version. Revisions are supported in applications on all workspaces and automatically save the change history of your applications, so you don’t have to worry about losing unsaved changes.

🚀 Audit Logs

See the full log history of your applications. We keep track of every edit, function invocation, login, and other significant event so you can easily identify what happened (and when) in your applications. Audit logs are available on all paid workspaces with additional history being provided to higher tier plans.

🚀 Template Gallery

We’ve launched a new template gallery, as well as our first application boilerplate, to inspire you with whats possible in Dynaboard and help you build applications even faster than before.

🏗 Performance Improvements

We made performance improvements in multiple areas by reducing application size, tweaking the Dynaboard VM, and streamlining the editor. The following areas have seen performance improvements over the last 8 weeks:

  • Initial load times of deployed applications

  • Initial load times of the editor

  • Function call latency for server-side functions

  • UI responsiveness when toggling between edit and view modes

Editor

  • Component Properties

    • 🏗 Component properties now distinctly show if they have an override value, allow interpolation (i.e. using {{ }}code to dynamically set the value), or are available to be edited in an expanded sidecar editor.

  • Search Engine Indexing with Sitemap.xml

    • 🏗 We’ve improved the generation of a project’s sitemap.xml. Individual pages can now also be excluded from the application’s sitemap in the particular page’s properties panel.

  • Omnibar

    • 🏗 The omnibar is now pre-populated with recently selected components when opening an application.

  • Code Editors

    • 🏗 JSON5 syntax is now fully supported by the code editor.

  • Hotkeys

    • 🏗 Added support for ALT/OPT + [1-9] or ALT/OPT + +/- to navigate between docked property editors.

  • Miscellaneous

    • 🏗 Associated resource icons have been added to functions to improve the editing experience with large numbers of functions.

    • 🏗 On deploy developers are now automatically redirected to the page they were viewing in the editor.

    • 🏗 Improved selection state of properties panels to make it more clear which panel is selected.

    • 🏗 Sidecar editors are now supported for nested propertied (e.g. data table or chart column properties).

    • 🏗 Right clicking on the page in the editor now allows a component to be inserted in that location.

    • 🛠 Pushed bug fixes to the editor that addressed an issue where the incorrect component or page was selected when changing, refreshing, or deleting pages.

    • 🛠 Fixed an issue that caused the components panel to not scroll with large numbers of components.

    • 🛠 Improved handling around a project’s index page that help avoid accidentally breaking an application.

    • 🛠 Addressed issues where paste didn’t work as expected.

    • 🛠 Resolved an issue that caused the user not to be able to change pages in the editor if the page had previously been changed by a browser resource navigation function.

Components

  • Custom Components

    • 🏗 Custom components now support passing functions into their properties. These functions can also call other functions outside of the scope of the component. (e.g. to trigger actions on a page)

  • Data Tables

    • 🏗 Buttons (with attached to functions) are now a supported data table column type.

    • 🏗 Minor tweaks and fixes to improve the default look and feel of the data table.

    • 🛠 Fixed a bug causing incorrect page sizes when paginating data in the data table.

  • Charts

    • 🏗 Stacked column (vertical bar) charts are now supported.

  • Text

    • 🏗 Text nodes now default to middle vertical align.

    • 🏗 Double clicking on text nodes now allows the text to be edited.

  • Dropdown

    • 🏗 The initial selected value of a dropdown can now be dynamic with interpolation (i.e. double curly syntax {{ }} ) support.

    • 🛠 Fixed an issue where the dropdown wasn’t being cleared.

    • 🛠 Fixed an issue where clearing the dropdown could cause the application to crash in certain instances.

Resources

  • GraphQL

    • 🏗 The full error body is now returned when a GraphQL function experiences an error.

  • PostgreSQL

    • 🏗 The PostgreSQL resource now supports multiple SSL Modes including Required, Verify CA, and Verify Full.

  • TypeScript

    • 🏗 Support for setTimeout, clearTimeout, setInterval, and clearInterval has been implemented.

  • TypeScript Server

    • 🏗 Passing function arguments is now supported between Typescript Server functions. Arguments can be passed normally function1("argument0") and accessed inside the function using the new $args array. (e.g. $args[0] == "argument0" with the prior function call of function1("argument0") )

Applications

  • 🚀 Dynaboard applications are now embeddable into other webpages using an <iframe> tag.

Portal

  • 🏗 Workspace deletion is now supported in the general settings tab on a workspace.

  • 🏗 Usage data is now up-to-date and available in the billing section of the dashboard for premium users, standard users, and server-side function calls.

  • 🏗 Adding a payment method is now supported on workspaces with Individual, Team, and Business plans.

  • 🛠 Fixed UI issues related to login when using Dynaboard on mobile.

Dynaboard SOC 2 Type I Compliance
Dynaboard SOC 2 Type I Compliance
  • 🚀  2 new features

  • 🏗  14 updates and improvements

  • 🛠  8 bug fixes

🚀 SOC 2

Dynaboard has achieved SOC2 Type I compliance in accordance with American Institute of Certified Public Accountants (AICPA) standards for SOC for Service Organizations also known as SSAE 18.

The auditor’s report can be made available to customers on paid plans under NDA. The SOC 2 auditor’s report covers controls at Dynaboard relevant to security, availability, processing integrity, and confidentiality / privacy. If you’d like additional information on our general security practices, it is publicly available in the Security Overview section of our documentation.

Please reach out to support@dynaboard.com if you have any questions about our SOC 2 audit report or about signing up for one of our paid Individual, Team, Business, or Enterprise plans.

Components

  • Data Table

    • 🏗 Single objects will now be displayed as a table with a single row rather than throwing an error.

    • 🏗 When provided with invalid data, data tables now provide more clear error messages about the error.

    • 🏗 Datetime columns now display the default format used.

    • Column configuration has been overhauled to better support more complex workflows with:

      • 🏗 The ability to show / hide columns as needed on higher dimensional data sets.

      • 🏗 Support for empty column header names.

      • 🏗 The ability to easily refresh data with a new button on the table.

  • Text

    • 🏗 The text overflow property now supports clip & ellipsis.

    • 🛠 New lines are now respected in text nodes.

  • Dropdown

    • 🛠  Passing an invalid type to a dropdown no longer causes the Dynaboard app to crash.

    • 🏗 Fuzzy filtering is now supported when searching through a dropdown’s values.

    • 🏗 Dropdown now support the selection of a default value.

  • General Component Updates

    • 🛠 Fixed a bug that set component properties as overrides rather than directly setting the value when dragged & dropped.

Resources & Functions

  • GraphQL

    • 🛠 Fixed an issue that caused Dynaboard projects to crash when GraphQL resource functions were called.

  • General Resource Updates

    • 🏗 Empty headers are now filtered out when a resource makes an HTTP request.

Editor

  • Code Editor

    • 🚀  Formatting is now available in code editors across Dynaboard with support for: JavaScript, SQL, JSON / JSON5, and CSS.

    • 🏗 JS objects are now supported inside of interpolation (i.e. the double curly brackets {{ }})

  • Typeahead

    • 🏗 Client-side typeahead now supports the built in: $crypto, _. (lodash), and $delay objects / libraries.

    • 🏗 Server-side typeahead now supports the built in: $event and _. (lodash) objects / libraries.

  • General Functionality

    • 🛠 The browser back and forward buttons now work correctly in the editor experience.

    • 🛠 A issue with undo & redo with CMD/CTRL+Z and CMD/CTRL+SHIFT+Z has been identified and fixed.

    • 🛠 Copy / paste functionality has been tweaked to behave more as expected.

    • 🛠 Node renaming has been made more reliable.

  • Project Export

    • 🏗 Exports are now in YAML instead of JSON and minified for better for line by line diffing when exporting / importing into / out of version control.

Since the last changelog, we’ve been hard at work on tons of usability updates to make building applications a more seamless experience, which include:

  • 🚀 2 new features

  • 🏗 16 updates and improvements

  • 🛠 23 bug fixes

Building better custom forms with the new form container component.
Building better custom forms with the new form container component.

Components

All Components

  • 🏗 Components now support a far more robust set of event triggers to attach functions to, including: Mount, Unmount, Focus, Blur, Hover, Leave, Click, Double Click, Select Row, Refresh, and Wheel.

Data Table

  • 🏗 Column locking and deletion has been replaced with show / hide functionality to make table configuration easier when dealing with large data sets.

  • 🛠 Refreshing the column layout is no longer required when turning off auto-columns for the first time.

  • 🛠 Pagination property labels have been renamed for better clarity.

  • 🛠 Formatting errors affecting table rendering in Safari.

  • 🛠 Dates are no longer auto-formatted as localized datetimes.

  • 🛠 Parsing UNIX epoch timestamps formatted as a string no longer displays an error.

Templates

  • 🏗 Templates (and their instances) now support default scope values as well as modifying scope values directly in the editor. Provide default values for your template that can be used for testing or while live to create a better UI / UX.

  • 🏗 Grid mode is now the default layout mode for new templates.

  • 🏗 New templates are now created with a larger default size (320px x 128px).

  • 🛠 Min-width and max-width are now respected in the editor for templates and set to empty by default.

  • 🛠 While in grid mode, the template canvas is no longer auto-expanded when dropping in new components.

Input

  • 🏗 Input components now support Textarea as a type for multiline text input.

Pages

  • 🏗 Pages now support having the min-width set.

  • 🏗 The drag handles on on the bottom and side of the page canvas now support setting the width and height of the page.

  • 🛠 Improper values in the min-height no longer cause rendering errors on the page.

  • 🛠 Setting 100% max-width has been fixed.

Dropdowns

  • 🛠 Switching the editor between edit and preview mode no longer causes drop-downs to disappear from the page.

Form Container

  • 🚀 We’ve added a new type of container that supports custom layouts of form components, native browser support for OnSubmit handlers, and passing form data to a server.

Containers

  • 🛠 Containers now support none as a drop shadow selection option.

  • 🛠 Support for proper rendering of containers inside of containers has been added.

Resources & Functions

All Resources

  • 🏗 Response messages when testing connection errors now appear in the console for easier debugging of errors.

All Functions

  • 🛠 An intermittent issue causing function timeouts issue has been identified and fixed.

Google Sheets

  • 🛠 An issue causing some google sheets data to not appear in charts or tables when the first items in a column were null has been fixed.

REST API

  • 🏗 Valid HTTP methods can now be selected with a dropdown rather than entered using a freeform text field.

Browser

  • 🛠 Visible toasts no longer block clicks of other components and buttons at the same vertical position on the screen.

  • 🛠 An issue causing the application font to change when a toast was displayed has been identified and addressed.

Editor

Menus

  • 🏗 The sidebar now defaults to an expanded state with labels for better discoverability. It can be collapsed to its original state via the UI or with the hot key CTRL+B.

  • 🏗 Insert resource & insert node menus now have multi-level navigation for better discovery and organization of the growing list of items.

  • 🏗 When dragging nodes out of the toolbar they now appear with their center point under the cursor rather than the top left of the node.

  • 🛠 The Omnibar correctly updates node names as they are changed in the editor.

Secrets

  • 🏗 Secret fields are now hidden (like password fields) by default when inputting them initially.

  • 🛠 Numbers are now supported in secret names.

Controls

  • 🏗 Copy / paste functionality has been improved with toasts showing the relevant node information, the ability to paste immediately after copying, and a new offset when pasting so that nodes don’t exactly overlap each other.

  • 🏗 Error icons now bubble up in the Component panel to help users more quickly identify & address issues.

  • 🛠 Various issues with page reordering and deletion have been addressed.

  • 🛠 Users with only review permissions can now see the app in the editor rather than only the deployed version.

  • 🛠 When a node ID is specified in the editor URL it is now properly highlighted by default in the editor.

Settings

  • 🚀 Add HTML meta tags to the header of your project for better SEO and sharing previews.

  • 🛠 UI issues related to saving the app slug have been fixed.

Code Editors

  • 🛠 Erroneous typeahead errors claiming functions had the wrong number of arguments have been addressed.

Build web apps fast with Dynaboard — the pro-code web app builder made for developers.