C3 AI Documentation Home

Change log for uiInfrastructure

All notable changes to the package uiInfrastructure made in master are documented here.

Version 8.9.0

Breaking change

  • UiSdlExtraFilesInvalidatingCacheLoader is disabled by default to overcome bundling memory and performance issues.
    • Files in ui/c3/src/ folders can no longer be imported through @c3/ui/ and are no longer flattened during bundling. Please import these files from @c3/app/ui/src/ instead with their full path.
    • If necessary, you can re-enable it by setting UiSdlConfig#infrastructure.disableExtraFilesLoader to false but be aware that it will significantly decrease performance and prefer to change your imports.

Version 8.8.0

New Features

  • UiSdlInAppDoc
    • Added loadDocEagerly property to control when documentation is fetched. When false or not set (default), documentation is only fetched when the panel is opened. When true, documentation is loaded immediately on component mount.

Improvements

  • UiSdlInAppDoc
    • Improved performance by preventing unnecessary DocService.renderTopic() network requests on every page render.
  • UiSdlDeploymentDoctor
    • Enhanced diagnose function to include most likely artifact versions

Version 8.7.16

Bug Fixes

    • Fixed stale closure issue in useMetadata hook by adding metadataId to the useEffect dependency array. This ensures metadata is properly initialized for dynamically created nested components (e.g., data grid detail rows) when multiple instances mount simultaneously.
    • Added null check for metadata parameter in compareDataSpecsAndFindDiff function to prevent "Cannot read properties of null" errors when comparing data specs before metadata has loaded.

Version 8.7.0

Bug Fixes

New Features

  • UiSdlDataRedux

    • Introduced the action.meta.dataSourceComponentId field to the following actions:
      • requestDataAction
      • receiveDataAction
      • saveDataAction
    • The dataSourceComponentId identifies the component responsible for triggering these actions—whether requesting, receiving, or saving data. This update ensures the originating component's ID is preserved within these actions. If dataSourceComponentId is not explicitly set, will default to a calculation based on dataId.
  • UiSdlTsTypesSourceCodeLoader, UiSdlComponentsSourceCodeLoader, UiSdlEnumsSourceCodeLoader, UiSdlTranslationSourceCodeLoader

    • Added produceBatch to generate source code for multiple files.

Version 8.6.0

Breaking Change

  • React version upgrade
    • Upgrade to React v18.3.0.
    • Upgrade react-intl and @formatjs/intl-localematcher, means that locales will now find a match if they share the same language even if the full locale does not match. For example, fr-CH will match with fr-FR if it is available and fr-CH is not.
  • Ann.UiBuildNestedDataSpecs annotation is now needed for components with deeply nested data specs

New Features

Deprecations

Version 8.5.0

Deprecations

  • UiSdlExtraFilesInvalidatingCacheLoader
    • Files in ui/c3/src/ folders can no longer be imported through @c3/ui/ and are no longer flattened during bundling. Please import these files from @c3/app/ui/src/ instead.

New Features

Version 8.4.2

New Features

Version 8.4.0

Improvements

  • Reduced the size of final CSS output. This was done by moving SCSS import of shared SCSS files to JS side using dynamic import. This ensures that CSS styles are not duplicated in the final CSS output.

Deprecations

  • Enzyme will be deprecated in 8.4 and removed in 8.6.0, since it is no longer supported in React 18. This change will be made on day 1 of 8.6.0 and all enzyme test will stop running once you start using UI 8.6.0. Please migrate all enzyme tests to use React Testing Library instead.
  • Starting in this version, non-reusable React component instances should be created in the {package}/ui/src/c3/src/customInstances. Adding non-reusable React components to {package}/ui/src/c3/src/customComponents will still work until 8.6.0, when this functionality will be removed. Component instances created in this directory should not be reused by other React components. If you intend to reuse any exported functionality, create your component in any directory under {package}/ui/src/c3/**, except customInstances and customComponents.
  • Starting in 8.4 overwriting UI Framework metadata (such as SDL.DefaultSite) will be deprecated. It will work until 8.6.0, when the functionality will be removed. At that point, something else will be added to add functionality for metadata normally created through the Framework.

Improvements

  • Performance improvements
    • UiSdlApplicationState instances that use epic types in effectTriggers don't require extra requests.
    • UiSdlPageContainer components are loaded in parallel with the page components.
    • CSS Library styles are loaded in parallel to all the framework code.
    • Removed duplicate code from the main bundle
    • ImmutableJs and I18n libraries are only included in the c3ui_core bundle
    • Cleaned up incorrect usage of role name C3.Group.UiSdlAccess as an action group

Changes

  • Metadata Validation
    • In 8.6.0, we plan to enable both .js and .json files to be treated as metadata across the entire platform. As part of this effort, we will be more strict with metadata validation on .json files to ensure they match their respective Type definition. To find these issues, run Pkg.metadata(UiSdlComponent) to view what issues there are with your metadata and fix them accordingly. Once this change is made, if there are any metadata issues, UI bundling will not work and you will need to find and fix all metadata issues to bundle your UI properly.
  • UiSdlComponentDataSpec
    • Changed value type of dataType field to !string serialized UiSdlTypeRef
  • UiSdlTsTypesSourceCodeLoader
    • Created new type to replace and deprecate UiSdlTypesSourceCodeLoader.
  • UiSdlDataTransform Introduce UiSdlDataTransform#Context as a new parameter to UiSdlDataTransform functions

Breaking changes

  • UiSdlMetadataLoader
    • Is now labeled as final, this means other packages cannot remix nor extend its functionality. This Type is considered internal and as such overrides are not supported.
    • Validates package access tokens (only affects protected component packages, currently only uiGanttChartReact).

Bug Fixes

  • UiSdlStylesLoader
    • Fixed issue where scss files were being loaded in the wrong order, causing rootPkg scss files to be overwritten.
      • With this, scss files in the rootPkg will now overwrite scss files with the same name in dependency packages.
  • UiSdlComponentsSourceCodeLoader
    • Fixed issue where components with deep childComponent has duplicate imports

New Features

Version 8.3.3

Deprecations

  • Enzyme is now depreciated in favor of React Testing Library and will be removed in 8.6.0.

Changes

  • UiSdlEnumsSourceCodeLoader
    • Created new type to replace and deprecate UiSdlEnumTypeSourceCodeLoader.
  • UiSdlStyleContext
    • Seeded a UiSdlConfig instance such that the default themes will be C3DefaultDark and C3DefaultDenseDensity.
Was this page helpful?