- Image: removed wrapping <div> in Admin
- Content editor: minor UI Improvements
- Update packages
- 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
- Fix dependencies in published package
- 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.
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)
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
- 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).
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.
- 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
path. If path is external, it will render an anchor tag, while if it is a local path, it will use the router navigation.
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
Image components can now be bound to page meta fields (like title, description, language, image) or custom fields, using the
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
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.
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)
- File modal: target blank to download file.
- Fixed plan limits for AppSumo users.
- Fixed default page size limit in fetchPages.
- Fixed bug in the bricks label with no repeaterItems.
- Show label of selected brick in the right sidebar.
- Fixed interface
IImageSource: width and height are no more mandatory
v3.2.21 - v3.2.23
- Fix hydratation in
PageViewer for React 18 compatiblity.
- Fix bug in RichText
- Minor bug fixes.
v3.2.19 - v3.2.20
- Add Scheduled publishing warnings.
- Add Editorial calendar in admin.
- Fix bug: scheduled publishing wasn't updated on page change.
- Minor bug fixes.
v3.2.17 - v3.2.18
- Add "Keep me logged in" to login interface.
v3.2.12 - v3.2.13
- Add Preview link in admin.
- Add the
noWrapper prop to the Image component to avoid the wrapping
- Graphics update:
RichText toolbar always inside the brick space.
aspectRatio to the Image control in Side Edit Props.
- In case of Boolean Side Edit Props set the default value to
false instead of
getDefaultProps no more mandatory in the
- Graphics update:
RichText toolbar always inside the rich text space.
v3.2.8 - v3.2.9
- Number of pages per type beside the type name in the sidebar.
- When add new block, autofocus on search input.
v3.2.6 - v3.2.7
useVisualEdit to frontend bundle.
markPluginConstructor and plugins to frontend bundle.
- Minor bug fixes
index prop to
Repeater (in order to conditionally render based on index)
newItemMenuOpen in brick's
v3.2.1 - v3.2.3
- Add popup in admin in case email not verified.
- New App settings page with direct links to the dashboard.
- New page hint if there are less than 3 pages.
v3.1.2 - v3.1.9
- Default export 'react-bricks/frontend'.
File component that allows editors to upload files that may be downloaded by users on the frontend.
- Smaller JS footprint on frontend: now the library exports two bundles: "frontend" and "admin".
- 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
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 fix: if you set a min in repeaterItems now when you add a new block it will display a "min" amount of that item
- 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
If you need to migrate from v2 to v3, please read Upgrade v2 > v3.