Changelog

v3.8.1

November 14th, 2022

Fixes

Fixed blocking bug (missing dependency in production bundle)


v3.8.0

November 10th, 2022

New Feature (for Enterprise plans): Lock at block level

You can now lock single blocks in a page, instead of an entire page.
See Locked structure

New Feature: More flexible default for pageTypes

For a pageType, you can now specify the default content in multiple ways.
The array of blocks can contain, for each block:

  • A string (the name of the brick, default content for the brick will be used)
  • A brick name with a story name (the content from the story will be used) and lock status for the block (locked, canAddBefore, canAddAfter)
  • A IContentBlock (block content with every prop and lock status)

See Page Types

New feature: Stories in bricks' schema

You can now add stories for a brick in code, adding a stories array to the brick's schema. This is useful when you want to document stories that are part of your design system style guide. The editors will see both the schema stories and the ones created by them. While user-created stories can be deleted, stories that are part of the brick's schema in code cannot be deleted, as they are part of the design system definition.

See Brick's schema

Improvements

  • Now you have the React Bricks version available on the ReactBricksContext, that you can reach via the useReactBricksContext hook. See useReactBricksContext.
  • In the footer you have the current React Bricks version and, if it's not the latest one, you have a small warning sign with the latest version in a tooltip.

v3.7.0

October 7th, 2022

New feature: Entity Embed

You can now embed pages/entities inside of another page, so that it is a single source of truth: anytime the embedded page is changed, the change is reflected in all the pages embedding it. See Page / Entity embed

Improvements

  • On a sidebar prop you can now set a helpText that is rendered below the control.
  • You can now avoid the "click to edit" feature by setting the clickToEditSide to "NONE", or having a PageViewer with showClickToEdit set to false.

v3.6.1

October 5th, 2022

Fixes

  • Fix bug for Repeater: if the repeated bricks used hooks, you had an error for broken rules of hooks.
  • Fix collaboration bug with Remix

v3.6.0

September 30th, 2022

New feature: Unsplash

You can now search for images on Unsplash. See Unsplash integration. You can configure your own Unsplash API Key using the unsplashApiKey configuration parameter, otherwise you will have just 20 searches per hour per app.
Of course, you can disable the feature via the enableUnsplash configuration flag.


v3.5.1

September 22th, 2022

Improvements

  • You can now set the shouldRefreshStyles flag on a sideEditProp, when the value change for this prop could cause an injection of new CSS styles by a CSS-in-JS library. This ensures the new styles are correctly loaded.

v3.5.0

September 19th, 2022

New feature: Nested Repeaters

You can have any level of nesting using the <Repeater> component. See Nested blocks

New feature: Repeater with Multiple items.

A <Repeater> can have multiple types of repeated blocks. See Repeater Items

New feature: Preview bricks with image/icon

You can set an image and an icon for each brick, so that users can select them visually from the "add new" menu. See Bricks schema

Improvements

  • Much better CSS-in-JS support, also for libraries using the CSSOM to inject styles (remember to set the cssInJs flag on the configuration)
  • No more needs for ...rest spread on the main element of a repeated item

Possibility for a breaking change

It is really suggested that you don't spread ...rest any more on repeated items and that you remove those spreads from your codebase: leaving them could cause browser warnings for unknown attributes on DOM elements (because now on the rest you have all the props of the block, not just the sidebar props, which probably you already extract before the rest). If you are destructuring props that have the same name as a prop that now comes from a visual editing component (for example an image), the prop on the ...rest could override the other props.


v3.4.3

August 18th, 2022

Fixes

  • Image: fix fallback for webp images
  • Page featured image: added featuredImage for back-compatibility

v3.4.2

August 8th, 2022

Improvements

  • Image: removed wrapping <div> in Admin
  • Content editor: minor UI Improvements
  • Update packages

Fixes

  • Sidebar: fix tab jump on page meta change
  • Collaboration: avoid self page lock with HMR
  • Text and RichText: fixed cursor jump when Text components are bound to a metaField or a customField

v3.4.1

August 4th, 2022

Fix

  • Fix dependencies in published package

v3.4.0

August 4th, 2022

New feature: Collaboration! 🎉🎉🎉

Big milestone: now you have real-time presence of all the users connected to an App and page-level lock, with possibility to force the unlock of a page.


v3.3.2

July 27th, 2022

New feature: Icons outside of blocks

If you set the new blockIconsPosition property on the React Bricks configuration to types.BlockIconsPosition.OutsideBlock, the small icons for "add new block", "delete block", "duplicate block", "move up", "move down" will be rendered outside of the block (useful for example when you have a short block)


v3.3.1

July 20th, 2022

Fixes

  • RichText: the softLineBreak attribute was not available for the RichText even if implemented. Now it is in the TypeScript interface and it works as expected
  • imageOptions for a sideEditProp or a custom field: maxWidth is optional
  • relationshipOptions for a sideEditProp or a custom field: label is optional
  • filterBy in fetchPages or usePages: better typings

v3.3.0

July 19th, 2022

New feature: new Image component

  • Generation of a WebP image, with fallback to JPEG (or PNG if transparent, or GIF if animated). You may disable the WebP generation via the useWebP flag (true by default).
  • Support for sizes for size art direction.
  • Support for native lazy loading (if we detect browser support, we use native lazy loading.instead of our own). You can disable this feature using the useNativeLazyLoading flag (true by default). You may also provide the loading prop to override the default lazy and set it to eager (not recommended, generally it would hurt performance).
  • containerClassName, containerStyle and noWrapper are deprecated. Now by default no wrapper is rendered (it is still rendered only if you are applying the old containerClassName and containerStyle).
  • You can provide the more flexible renderWrapper function instead of the props above. The renderWrapper function receives width and height as arguments, so that you can calulate the image aspect ratio.
  • Works correctly even with JavaScript disabled

See Image docs

New feature: Login UI and Menu customization

  • For the Login UI you can customize the right image (or remove it), add your logo with width and height, change the welcome text and its CSS style
  • For the Admin top menu, you can provide your own menu using the getAdminMenu function, which receives the isAdmin argument and should return an array of objects with label and path. If path is external, it will render an anchor tag, while if it is a local path, it will use the router navigation.

See Customizing UI docs

New feature: Pages as Entities

This features make easier to work with React Bricks as a sort of headless CMS, but where you can still edit the entity data in a visual way.

  • Visual editing of page Meta and Custom fields: the Text, RichText and Image components can now be bound to page meta fields (like title, description, language, image) or custom fields, using the metaFieldName or customFieldName (instead of the usual propName). The fields from the sidebar and the one edited visually have 2-way data bounding.
  • isEntity property on pageType: if you create page type with isEntity set to true, you will see a new tab menu on the left to choose between Pages and Entities. Entities are just pages for React Bricks, but they could not correspond to real pages in your frontend. In this way you don't confuse your editors. For example you could have in Entities things like Categories or Menu Items.
  • Custom fields of type relationship with relationshipOptions (to specify the referenced pageType, the label and a multiple flag to have a many-to-many relationship).
  • fetchPages has now a filter option to fetch pages based on custom fields' value.

Improvements

Organization of pages in categories

  • On each pageType you can define an array of categories
  • Editors can then use those categories to organize the pages of that pageType (select category from the Page tab)

v3.2.29

June 30th, 2022

Bug fixes

  • File modal: target blank to download file.
  • Fixed plan limits for AppSumo users.

v3.2.28

June 29th, 2022

Bug fixes

  • Fixed default page size limit in fetchPages.

v3.2.27

June 28th, 2022

Bug fixes

  • Fixed bug in the bricks label with no repeaterItems.

v3.2.26

June 10th, 2022

Improvements

  • Show label of selected brick in the right sidebar.

v3.2.25

May 17th, 2022

Bug fixes

  • Fixed interface IImageSource: width and height are no more mandatory

v3.2.24

April 21st, 2022

Improvements

  • Playground: better formatted code and style fixes

v3.2.21 - v3.2.23

April 20th, 2022

New features

Bug fixes

  • Fix hydratation in PageViewer for React 18 compatiblity.
  • Fix bug in RichText renderItalic.
  • Minor bug fixes.

v3.2.19 - v3.2.20

April 5th, 2022

New features

  • Add Scheduled publishing warnings.
  • Add Editorial calendar in admin.

Bug fixes

  • Fix bug: scheduled publishing wasn't updated on page change.
  • Minor bug fixes.

v3.2.17 - v3.2.18

March 14th, 2022

New features

Improvements


v3.2.14

March 8th, 2022

New features

  • Add "Keep me logged in" to login interface.

Bug fixes

  • Minor bug fixes.

v3.2.12 - v3.2.13

February 28th, 2022

New features

  • Add Preview link in admin.

Bug fixes

  • Minor bug fixes.

v3.2.11

February 18th, 2022

New features

  • Add the noWrapper prop to the Image component to avoid the wrapping div.

Improvements

  • Graphics update: RichText toolbar always inside the brick space.
  • Add aspectRatio to the Image control in Side Edit Props.

Bug fixes

  • In case of Boolean Side Edit Props set the default value to false instead of null.

v3.2.10

February 7th , 2022

Improvements

  • getDefaultProps no more mandatory in the schema.
  • Graphics update: RichText toolbar always inside the rich text space.

Bug fixes

  • Minor bug fixes.

v3.2.8 - v3.2.9

January 22nd, 2022

Improvements

  • Number of pages per type beside the type name in the sidebar.
  • When add new block, autofocus on search input.

Bug fixes

  • Minor bug fixes.

v3.2.6 - v3.2.7

December 31st, 2021

Bug fixes

  • Add useVisualEdit to frontend bundle.
  • Add blockPluginConstructor, markPluginConstructor and plugins to frontend bundle.
  • Minor bug fixes

v3.2.5

December 20th, 2021

New features


v3.2.4

December 13rd, 2021

New features

  • Add index prop to items in Repeater (in order to conditionally render based on index)
  • Add newItemMenuOpen in brick's schema.

Bug fixes

  • Minor bug fixes.

v3.2.1 - v3.2.3

December 10th, 2021

New features

Improvements

  • Add popup in admin in case email not verified.

Bug fixes

  • Minor bug fixes.

v3.2.0

December 7 th, 2021

New features

  • New App settings page with direct links to the dashboard.

Improvements

  • New page hint if there are less than 3 pages.

v3.1.2 - v3.1.9

December 3rd, 2021

New features

  • Default export 'react-bricks/frontend'.

Bug fixes

  • Minor bug fixes.

v3.1.1

December 2nd, 2021

New features

  • New File component that allows editors to upload files that may be downloaded by users on the frontend.

Improvements

  • Smaller JS footprint on frontend: now the library exports two bundles: "frontend" and "admin".

v3.0.1

November 1st, 2021

New features

  • multiline on Text (default false).
  • multiline on RichText (default true).

v3.0.0

November 1st, 2021

New Features

  • Compatibility with Gatsby: now React Bricks is fully compatible with Gatsby (you can find 2 starters for Gatsby)
  • Stories: you can now save brick configurations (sets of props), so that you (or your editors) can reuse them
  • Images crop and fixed aspect ratio: upon upload it is possible to crop an image. You can set a fixed aspect ratio on the Image component, so that the crop will be limited to that aspect ratio.
  • Bricks organization: you can now assign a category to each brick and an array of tags. Bricks are organized by category and searchable by name or tag. You can also add a link to external documentation for each Brick, which is shown in the Playground.
  • Backup and restore: You can now backup the App content and restore it from the React Bricks Dashboard.
  • History: go back in time for each Page and restore the status before any action.
  • Scheduled publishing (Pro only): with a Pro plan, you can schedule the publishing of a page at a date in the future. React Bricks will change the page status from Draft to Published on that date. Based on the "Trigger rebuild upon scheduled publishing" checkbox in the build hooks settings, React Bricks will trigger a rebuild when the page is published, so that the content will be visible at the scheduled date and time with no action needed on your side.
  • Staging Build Hook (Pro only): now you can set a build hook for the Staging environment and give permissions accordingly to your editor users, so that a user may be able to trigger a build in staging but not in production.
  • Events webhook (Enterprise only): if you are on an Enterprise Plan, you can set a webhook that receives all the Pages and Translations events (creation, update, delete).
  • mapExternalDataToProps on schema, used by Block and BlockViewer
  • getExternalData on pageType, used by usePage, usePagePublic and simpleFetchPage
  • Add multiline prop on RichText and Text, fixed bug of n save mutation with "mod +s" hotkey

Improvements

  • The RichText component now by default supports also Heading H1..H6 and Quote.
  • There is a new RichTextExt component, which is an extensible RichText with a plugins system. Underneath the RichText component (kept for compatibility) uses the new RichTextExt.
  • shouldRefreshText isn't needed any more on sideEditProps which affect the style of (Rich)Texts.
  • New JSON format that, on average, reduces the transferred payload by 50%.
  • Removed the wrapper <div></div> around the renderBlock.

Bug fixes

  • Bug fix: if you set a min in repeaterItems now when you add a new block it will display a "min" amount of that item

Breaking changes

  • On the Page returned by fetchPage or usePage, the translations array isn't an array of language strings anymore, but an array of objects with language and slug.

Migration

If you need to migrate from v2 to v3, please read Upgrade v2 > v3.

Subscribe to our newsletter!

Be the first to discover our latest news. No spam, promise.