Welcome to the documentation for the Edinburgh release!

Don’t hesitate to send your feedback on these new features as we improve the product:

Major features

  • Client-side validation additions:

    • Validate based on length as defined in the field’s metadata: Now, you can display a specific runtime error when users exceed the maximum number of allowed characters. This is determined by the data source or field metadata overrides.

    • Set custom error messages for required fields. Whether or not a field is required is defined by metadata (the data source itself requires the field) or by Skuid’s own Required model field property.

      Previously, these required fields were not as configurable, displaying a standard error message when fields were left blank. With this new feature, you can set custom messages that better guide your users.

  • Calendar component enhancements

    • Improved handling of Unassigned groups: The grouping feature on Skuid’s Calendar component allows for views to be divided based on a field value from an event source. If that field did not have a value, the event would display in the Unassigned category.

      Previously this category was always visible and not configurable. But in Edinburgh it’s possible to both relabel this category and to select how (always, never, if values exist) where it should be shown (top, bottom, or alphabetically)

    • Runtime improvements: We also made a variety of improvements to the component in Dubai Update 2 and Dubai Update 3. In case you missed them:

      • Improved time zone handling:

        • Clicking “+n more events” on a day previously would sometimes display the previous day’s events

        • Expanding single date events (like tasks) which should not be able to expand/contract

        • Event creation showing an error in the modal even though it was successful before closing the modal

        • Save button disabled state when creating/editing an event in the modal

        • Single date event sources should now always render on the same date no matter the timezone/locale

        • Start/end date should now always render on the same date no matter the timezone/locale

        • Start/end datetime should adapt to the org locale setting as expected

        • Start/end datetime should render based on timezone properly for users at runtime.

          As an example: In America/New_York an event is created for 11am. In Australia/Sydney it should be represented at 3am the next day.

      • {{startDate}} and {{endDate}} now provide date values instead of datetime (which are available through startDateTime and endDateTime)

      • “View more events” buttons now work in Salesforce Lightning

      • Calendar day view now better scales to the page and properly displays hourly divisions

  • Use Apex to provide authentication values in data sources: (SFX only) Apex, Salesforce’s server-side programming language, can now be used to return values used in authentication requests from Skuid’s proxy.

    For instance, some authentication tokens may be longer than 256 characters or saved in a different secret store than Skuid. With this feature, you can write an Apex class that retrieves and returns these values as a string and use it with the $Apex merge variable.

  • Sanitize fields values for CSV export on Table component: When exporting data it’s often best to sanitize field values of characters that, when imported to another program, can cause unintended consequences. These are often characters that activate logic or formula functions. Some instances are accidental, some are malicious, and this feature helps better protect users when it occurs.

    While this feature has previously been available on Skuid Database, with Edinburgh we’ve added the ability to sanitize field values to all Table components on both Skuid NLX and Skuid SFX.

Released in beta

Beta features represent valuable Skuid additions that we offer to cutting-edge builders for feedback before we mark them as generally available.

  • SSO user provisioning enhancements: (NLX only) Single sign-on (SSO) has been possible through the SAML protocol on Skuid NLX, but Edinburgh brings feature enhancements to Skuid NLX’s single sign-on (SSO) user provisioning features:

    • It’s now possible to have a user’s Skuid attributes (like email or locale) update based on the user’s SAML attributes from your identity provider.
    • Automatically reactivate previously deactivated Skuid users if they login from an IdP. This is useful particularly for subscription management, ensuring you can safely deactivate users without accidentally locking out your active Skuid users.
  • Skuid Database schema import/export with skuid CLI: (NLX only) It’s now possible to retrieve and deploy Skuid Database schema, or metadata structure, from one Skuid site to another— or redeploy it the current environment if needed.

    This is used to move the structure of a Skuid Database from one environment (like a sandbox site) to another (like a production site).

    While it’s not very common to have the same data within a sandbox and production site, it’s possible to use this feature in tandem with the CSV Export/Import feature of Skuid Database to move both the schema and data from one Skuid site to another.

Released in pilot

Pilot features are not yet intended for prime time production use, but they are available to select customers to gather feedback as we prepare them for a broader audience.

To request access to features listed below, contact product@skuid.com.

  • Custom domains: (NLX only) This long-requested branding feature is being released in pilot for Edinburgh. With this it’s possible to have your Skuid NLX site listed entirely under your own web domain. If your goal is to provide a public portal for your Skuid implementation or private label your Skuid apps, try using custom domains to reinforce your brand.

  • Session variables: (NLX only) In single sign-on use cases, it’s not uncommon to store more detailed user information in the identity provider and then pass that information along to service providers as SAML Attributes. These attributes can now be mapped to session variables to be used in Skuid applications, primarily for data source object conditions on SQL data sources.


    Session variables are only accessible during a user session to avoid any security concerns surrounding storing SAML attributes.

Other updates

  • Apply margin to all sides of a component: Previously builders had to set margins for components for each side individually. With this update, it’s now possible to set a consistent margin value for all sides at once.
  • On the Table component, global actions now have enable conditions and style variant conditions.
  • Continued improvements to our backend technologies on Skuid NLX for scaling, management, and performance
  • On Skuid SFX, we’ve updated property labels and default values related to Salesforce Classic header and sidebar:
    • “Show salesforce header” is now “Show Salesforce Classic header”
    • “Show salesforce sidebar” is now “Show Salesforce Classic sidebar”
    • Both properties are now unchecked by default
  • In Skuid NLX, we now display a count of both active and inactive users for app permission sets and indicate which users are inactive from a permission set’s detail screen. We’ve also improved dependency checks related to permission sets and users.

Breaking changes

As of 16.0.3, <script> tags are no longer executed from within Text components containing HTML. This was never a supported behavior, and it will now no longer occur.

For proper snippet execution, all JavaScript must be stored in a supported resource type. Snippets can be triggered using Skuid’s event subscription framework or by using the Action Framework.

Included tickets



Fix issue where reference fields were not properly to showing updates in edit mode—even when models were refreshed and contained accurate data


With Salesforce’s beta release of Lightning Web Security (LWS) for Aura components, we found some errors would surface for our own Aura components (the Skuid Page and Skuid Page Assignment Lightning components). We’ve proactively updated our components so they will function as expected when LWS for Aura components reaches general availability on Salesforce.


Fix Composer preview issue where using certain URL parameters would not display queried results appropriately—particularly for RecordTypeId parameters on the Case object in Salesforce


Fix issue where running the “Navigate to Step” component action would display all Wizard steps on the page instead of the steps for the chosen Wizard. Now, only the expected steps appear.



In the v2 Page API Migration Utility, fix component targeting behavior


Fix issue where Autocomplete filters using model rows as options would not properly filter results based on user input


Fix OAuth authentication request errors, which particularly affected ServiceNow connections



In Page Include components, improve merge variable handling for URL parameters—ensuring that using the “Load new page” action will properly update the Page Include even if the only change is a URL parameter value from a merge variable


Fix issue for donut-style Chart components where merge variables were not displaying properly without other content

Previously, when merge variables were the only value for a donut-style Chart component’s content template, no value would be displayed. The workaround was to use some empty space character, which would then cause the value to display as expected. Now, workarounds are not needed and merge variables display as expected, even if they are the only value in the template.


Fix issue where clicking outside of sliding panels triggered by Table row actions would not close them


On the Deck component, fix issue where “Required field” error message would only appear on the first card in the Deck component. Now, these error messages appear on the appropriate card.



On Skuid NLX, fix data source object regression where it was not possible to mass edit more than 25 field permissions at a time


On Firefox, fix issue where multiple authentication popups would appear for pages using Salesforce data sources


In v2 Page Include components, allow the use of merge syntax within the “Skuid page” property


In Table components, add interaction functionality to child relationship fields


When working within Sliding Panels and Table drawers in the Composer, fix issue where Responsive Grid divisions would disappear from view (though remain in the XML) when components were dragged into them


In the Wizard component, fix issue where enable messages for step buttons would not display in the expected area if the Wizard was below other components


Fix bug where pencil icons would appear on button fields within a Form when changed into read/edit mode via a component action


Allow “Export Table data” component action to run even if the Table component is hidden



Allow hotkeys to be set without a selected modifier key


Fix issue where new font families could not be added to design systems


Improve row creation logic to prevent looping errors, which were apparent when working with models on data source objects that contained an “Id” field


Fix “Unpack pages from page pack” issue where setting the filter to “Last modified by me” would not not allow the filter to be set to “Last modified by any” afterwards


Internal test fixes


Fix bug where iterating over an empty REST data array using merge syntax displays “[object][Object]” instead of nothing


Fix Design System Studio display issue when using JSS to extend variants with code


Fix issue where having one denied data source would prevent any permitted data sources from querying. Now permitted data sources can query, even if an unpermitted one is used within a page.



Prevent invalid values in reference fields


Responsive Grid vertical alignment improvements for “fit to content” + minimum heights

Previously, Responsive Grids set to have vertical alignment, with a minimum height, and the “Fit to content” height strategy would only consider the contents of the divisions—instead of the full minimum height of the component—when determining vertical alignment.

Now, Responsive Grids properly consider the minimum height when applying vertical alignment to their divisions.


Improve rendering speed for Deck components, particularly for high record counts


Fix issue where the Composer would not recognize setting a previously-configured margin property back to “None” as a change, meaning it was not possible to save the page unless another change was made. Now the Composer recognizes the change, and enables the Save button, as expected.


Fix issue where mass action buttons would unexpectedly remain enabled after running—even when no rows were selected


On the Search component, fix issue where the field picker for setting Return Objects would not function


Fix where builders previously could not disable the “Skip entry criteria” property for existing “Submit for Approval” Salesforce data source actions. Now builders can enable/disable this property as expected.


Set “Sanitize field values” property to default off for Table components


Fix rendering issue for updated reference fields for PostgreSQL.

Previously, selecting a reference field value in a component attached to a PostgreSQL model would “blank out” the field, even though the value was updated. Now, reference fields update and render as expected.



Add inactive users to site permission set list and detail screens


Skuid NLX backend scaffolding to support custom domains


In Skuid NLX, fix bug where clicking Help > About would not refresh the screen if the builder was already in a Settings screen tab


On Skuid SFX, fix links within admin UI to correctly redirect to Salesforce Setup’s permission set settings page


Adjust page API version selector when creating new Skuid page to account for future feature development


Internal codebase configuration file adjustments


Update “Spacing” label to “Margins,” and allow margin spacing values to be applied to all sides—or set individually


On Skuid SFX, update property labels and default values related to Salesforce header and sidebar:

  • “Show salesforce header” is now “Show Salesforce Classic header”
  • “Show salesforce sidebar” “Show Salesforce Classic sidebar”
  • Both properties are now unchecked by default


Add feature for sanitizing field values on export for Table components


Update tooltip for refresh style variants button


Remove unneeded field selector from Channel property in “Publish event” actions and event-triggered action sequences


Fix issue where Go to URL actions in a Chart series would not accept some Chart context-related merge variables


Add visibility options for Calendar component’s “Unassigned” grouping


On Skuid SFX, remove unnecessary permissioning syntax from Skuid permissions sets


Internal improvements to Page Index functionality


Add validation method for field length


Adjust UI to better display a field’s “required-ness” within the validation framework


Fix issue where mass actions displayed as menus or comboboxes were always deactivated


Internal codebase improvements


Fix Chart bug where context was not properly set after drilling down, returning to the main chart, and then drilling down into a new value

Clicking into a Chart component segment sets the context, which can be used to display filtered drilldown information. Before this fix, returning to the main chart and then drilling down into another value would not properly set the context—instead using the previous drilldown’s values. With this fix, drilldowns work as expected.


In Skuid SFX, fix issue where interacting with a Rich Text Field in a Salesforce form and then leaving that field would cause the following error: Uncaught Action failed: skuid:teleporter$controller$eventHandler [Unable to get value from Rich Text component.]


On Skuid SFX, provide method of retrieving data source authentication values from Apex when using proxy


Fix CKEditor rendering in Form and Table components set to Edit mode within Tab Sets


Re-add missing runtime export options for Chart components


Fix issue where validations were not applied to Salesforce string fields as expected


Deployment-related internal config updates


Allow enable conditions and style variant conditions on global actions for Table components


Deployment-related internal config updates


Fix Edinburgh early access issue where “Required” validations were incorrectly enforced


Fix Edinburgh early access issue where “Required” validations would sometimes run incorrectly if users pressed the Tab key to proceed to the next field


Add Calendar component merge variable functionality to event on-click actions and event update actions


Fix Form component issue where template fields couldn’t be deleted in the Composer without removing the entire section


Fix bug where the Calendar component’s “+n more” view modal displayed the previous date


Fix issue where Calendar components were not providing actions for “Run component action” picklist


On Skuid SFX, fix issue where tooltip text wouldn’t fade on pages deployed in Lightning with the Skuid Page Lightning component


Rollback of future feature code


Fix Table field issue where “Required” checkbox was not a visible property in the Composer


On Skuid SFX in Lightning experience, fix lookup filters for polymorphic fields (e.g. OwnerId on the Case object)

Previously when selecting a value for a polymorphic reference field, an error stating a field doesn’t exist would appear—even with properly configured lookup filters. This fix ensures that reference field works as expected.


Fix issue where reference field searches would not return expected records on some objects (such as the Case object in Salesforce) due to search value and record value/label discrepancies


Fix rendering issue with picklist fields within sliding panels that are activated within Page Include components


Fix issue where “required” validations were incorrectly running on optional picklist fields


Backend improvements on Skuid NLX to support displaying inactive users on site permission sets


Internal documentation updates


Implement backwards compatible behavior in new version of skuid CLI


For Skuid Database data import for picklist fields when the “Create missing picklist entries” option is checked, remove case-sensitivity when matching CSV values to existing picklist options to ensure only new options are added upon import


General design adjustments to Skuid Database CSV import experience


In Skuid NLX, display a count of both active and inactive users for app permission sets, indicate which users are inactive from a permission set’s detail screen, and improve dependency checks related to permission sets and users


Improvements to internal tooling


PLIN-3974 In Skuid NLX, internal bug fixes to support change from “profiles” to “site permission sets”


On Skuid NLX in SAML IdP configurations, allow user properties to be updated by SAML attributes—even after a user is provisioned


In Skuid NLX, fix issue where 0 (zero) would erroneously appear in bottom left of the Database Console screen when there are no objects configured


Add user status filter to user list within app permission set details


Allow Skuid Database object permissions to be configured from an app/site permission set detail screen (or when creating a new one)


On Skuid SFX, fix issue where adding the first picklist entry value for a picklist field on a data source object would not properly populate the “Position” property


Adjust page API version query to account for future feature development

Future feature development

The following tickets represent internal code changes made for future features.

APPS-1846, APPS-2162, APPS-2245, APPS-2256, APPS-2265, APPS-2266, APPS-2267, CORE-3587, CORE-4339, CORE-4364, CORE-4365, CORE-4366, CORE-4374, CORE-4380, CORE-4401, CORE-4405, CORE-4408, CORE-4409, CORE-4410, CORE-4427 , CORE-4428 , CORE-4430 , CORE-4433 , CORE-4442 , CORE-4445, CORE-4454, CORE-4455, CORE-4487, CORE-4488, PLIN-3919, PLIN-3953