- When copying an entity the permission used is
createnow, instead of
- Fix for entities not being saved when new or copy was clicked
- Fix for multiple delete keeping old state.
- Fix multiple form styles.
- Fix for array of number enums.
hidden configuration to disabled fields:
Many breaking changes in this version unfortunately, but it's for the better! We have done a lot of internal refactorings with the primary goal of making internal and external APIs more predictable and consistent.
You can find a list of all the changes and help in Migrating from alpha versions
- Added post process to storage metadata. @zhigang1992 thanks!
- Disabling add button on disabled array properties
- Fix for broken custom entity views and new entities.
[BREAKING] Big types refactor. This only affects you if you use Typescript.
All the key signatures affecting schemas (
EntitySchema and related) have
EntitySchema<Key extends string = string>
M is simply your model, though you can omit it.
You are now encouraged to define your model like:
If you would still like to use inferred types from schemas using something like
typeof productSchema, you can still do it if you wrap it in a new type
InferSchemaType, but this is not encouraged. In the previous
InferSchemaType<typeOf productSchema> is the same type as
- Wherever you had defined your own schema, using
buildSchema()and where using that as a type parameter, it can be changed to the defined type or just removed.
buildSchemaFromhas been deleted since now it's identical to
If you need more info: https://firecms.co/blog/types_refactor
- Fix for changes in forms not updating correctly when a real time update happened in Firestore
- Fix for popup view position
- Fix for popup view validating only the corresponding cell and not the whole property, which was provoking unfixable saving errors.
EntityCustomViewBuilderhas been renamed to
- Big form performance enhancements
- Fixes related to
- Fixed missing permission error in cell
- Green border indicator on collection tables to indicate that the value was saved successfully in Firestore.
ArrayProperty. This new configuration allows the user to build complex array of objects structures, where the object is determined by a discriminator or
typefield and stored in the
valuefield (both those fields are customizable). You can se an example of this in the content of blog entries in the demo
- You can now add custom views to your entity schemas, that get rendered next to the entity form. You can use these views for anything you need, such as rendering a custom form, building a dashboard or displaying a post preview.
contextprops have been added to
PermissionBuilderso you can get better info of the context of an entity.
- Subcollection views and new schema custom views are now displayed side by side when you open the tabs in the side view (useful for better context switching)
- The markdown component has been replaced by a better one.
- Many bugfixes in the form popup view and enhanced behaviour. You can now keep a popup open and continue editing other fields. The popup doesn't close automatically now when you click on a different cell.
- [BREAKING] renamed
PermissionBuilderso you can access additional data for a user.
- Improved sample code and quickstart to include custom user logic
- Filtering in collections has been changed from a single dropdown to dropdowns in each column header.
- Added Timestamp filters
filterablePropertieshas no longer effect since every field is filterable now and will be removed in the future.
indexesproperty where you can specify the indexes in your Firestore configuration. That allows to filter/sort by multiple properties.
- Big internal refactor to have a better modularised code, also to generate better docs
- [BREAKING] EntityCollectionView (previously renamed to EntityCollection) has been removed. Simply rename to EntityCollection
- Fix for export component that was fetching the complete collections on mount. Now opening the CMS does not trigger excessive reads by default.
- Internal type fixes.
ArrayPropertyfirst generic type changed from T to T
CMSFormFieldcomponent (used for generating custom fields) has been replaced by a function called
buildPropertyFieldthat takes the same props
- Fix for jumping search bar while loading
- [BREAKING] Change EntityStatus from JS enum to TS type. This only affects you if you are using a save callback.
- [BREAKING] AlgoliaTextSearchDelegate is now a function instead of a class. You instantiate it the same, just remove the new keyword
authControllerto store custom user data.
- Fix for home page
- Minor layout updates
authResultfrom auth context since it was actually useless and confusing
- Allowing adding customized columns to CSV exports
- Added builder
- Allowing changing pagination size
- Allowing multiple paths per CMSView and
- [BREAKING] Material dependencies have been moved to
peerDependenciesIf your build breaks, simply add these dependencies to your project:
- Custom id values are now trimmed
- Fix for entity actions dropdown
- Fix for being able to use side entity dialogs without having a rendered main view
- [BREAKING] If you are using provider and main view, you need to move the theme related fields from the main view to the provider (colors and fonts)
- Fix for unique in array validation and null values
uniqueInArrayvalidation prop. If you set it to
true, the user will only be allowed to have the value of that property once in the parent
ArrayProperty. It works on direct children properties or on first level children of a
MapProperty(if set as the
.ofproperty of the
- Fix for dates in new documents, being set to the current time
- The popup form field in the table now has a save button instead of saving automatically.
- Mono typeface import css has been removed from the core library and needs to be imported in every implementation now, like the Rubik typeface. Examples and Readme updated. Useful for SSR.
- Enhanced feedback for references configuration errors, no longer crashing the app.
- Changed double click behaviour in collections table to open the inline editor, replaced by a triple click. You can double click to select the content of the cell.
- Fix for navigation loading bug using NavigationBuilder
CMSApphas been split internally into 3 components:
CMSAppwhich now is only in charge of initialising Firebase
CMSAppProviderwhich is in charge of providing all the contexts used by the CMS hooks.
CMSMainViewwhich includes the views of the app including login screen and main collection and entity components. You can see an example here
- Fix for a bug when saving entities.
AuthContextControllerhas been renamed to
contextto save and delete callbacks, so you can access
getNavigationFromfrom within them.
NavigationBuildernow supports returning a promise with the navigation result, useful if you need to check permissions based on the logged user.
SchemaSidePanelPropshas been renamed to
SchemaConfigused in the
useAppConfigContexthas been renamed to
- Fix for broken collection detail buttons
- Added unique fields validation
- Internal refactor of CollectionTable.tsx to improve its reusability
- Added example shaped array custom fields in the
- Adaptations to make it easier to implement custom fields and use the internal CMS fields bound to properties.
fieldPropsin the property fields configuration has been renamed to
customPreviewin the property fields configuration has been renamed to
- You don't need to specify an
ofprops in array properties or a
propertiesprop in map properties, if you specify a custom field
- Allowing customizing enum chip colors. You can now specify the color key to
EnumValueConfig. You can also pass a
Mapinstead of a plain object if you need to ensure the order of the elements.
- Fix for Firebase peer dependency.
EnumValuesis no longer generic.
- Added callback for selecting file name when uploading files to an entity.
- Improved permissions system. You can now set
deletepermissions in the collection config. Those permissions can be set on a per user basis, using a builder.
- In the same way, you can now change the main navigation based on the logged user.
CMSAppnow can take an object where you define your collections like until now, but also the custom views that were found in the root level.
AdditionalViewis now called
customViewsin the main
CMSAppPropshas been moved under the new navigation object.
editEnabledhave been removed from collections in favor of new
- Home page and possibility to add descriptions to collections using Markdown
- Allowing overriding locale (only used for changing date formats for now)
- Allowing customizing date formats with the parameter
- Fix for https://github.com/Camberi/firecms/issues/59 (Algolia missing properties)
- Added ids to export
- Bigger drawer.
- Fix for schema resolving issue.
- Fix for react-router routes, they need to be exact now
- Added export function in collection views, enabled by default but can be disabled.
- Enhanced table performance by reducing the number of divs
clearMissingValuesto map property config, allowing missing properties from field values to be deleted from Firestore.
- Added assigned size to custom previews.
disableEnforceFocusis now enabled for entity dialogs
- Enhanced disabled fields in table mode
- Changed behavior of custom fields in table mode
- You can now change entity properties on the fly, allowing for conditional fields, by using a builder that receives the current values.
disabledflag has changed behavior. It now renders the corresponding field as disabled, instead of a preview. You can use the new flag
readOnlyto preserve the previous state
- Fix for empty strings on hooks and default values were causing a crash.
- Fix for additional column keys when defining collections.
CMSFieldPropsis now called
FormFieldPropsis now called
createFormFieldis no longer passed as an argument in
CMSFieldPropsand it has been replaced with a
CMSFormField, that is a React component that takes the same props. You most probably don't need this unless you are building nested custom fields.
- Fixed bug when switching subcollections in entity view.
- Fix for drag and drop arrays
schemaResolverprops in the CMSApp level that allows overriding schemas and configs in the side dialog panels
useSideEntityControllerhook, allows to open the side dialog programmatically and override the entity schemas.
- New custom field for arrays of references, in form and table mode
initialSortto collections views.
- Removed full size entity view, in favor of side lateral menu. Also when typing directly URLs pointing to entities.
- Fix for form validation of untouched new entities.
- Implemented FirebaseUi to allow for all possible Firebase login types.
- Added a
contextobject in the
CMSFieldPropsthat allows developers to access the context of the form, such as other field values. This is useful for creating conditional fields.
- Fix for buttons in rows of tables with no inline editing.
- [BREAKING] The developer defined props in custom fields can be accessed now
customPropsproperty, instead of directly.
- Users are able to select entities now
- Developers can now define custom actions in the collections, using a builder.
- Possibility to copy existing entities
- Two internal contexts are now exposed in the library:
useAuthContext. More details in the README file
- Thanks to @faizaand and @Snivik for the PRs!
onFirebaseInitcallback on the CMSApp called after Firebase initialisation. Useful for using the local emulator.
- Fixed initial values bug when creating new entities and validation.
showErrorprop to CMSFieldProps
- Fixed click behaviour of tables when inline editing is disabled.
- More consistent map property previews
- Table performance improvements
- Inline editing of tables. Tables are now editable by default. There are two
new parameters you can set in entity collection views.
editEnableddefaults to true. If false, the users will not be able to edit or create new entities.
inlineEditingdefaults to true. If false, the users can still edit the content, but the inline editing is disabled. The side panel is still enabled.
- [BREAKING] The custom fields API has been refactored and simplified. The Formik props have been abstracted away and only the relevant fields are exposed. You can find the new props here an example of the new implementation here
- Fixed date autovalues generating modified form prompt, even if it wasn't
- Internal refactor of CMSApp.tsx and contexts.
- [BREAKING] String properties config multiline value can no longer take a number and only accepts boolean values. Numbers used to be used to indicate the number of rows but TextField now grow automatically based on the content.
- Refactor of PreviewComponent to display better error messages when values are of an unexpected type.
- Dependencies update and cleanup.
- Added grouping and breadcrumbs to additional views and redesign.
- Array of enums fix when the value coming from Firestore is not an array
- A cosmetic fix for enum chips.
- Added deleted entity on delete hook
- [BREAKING] The deletion hook has been moved from the collection view to the entity schema.
- Fixed error when saving new entities
- Minor side navigation fix
- Side navigation now stacks subcollections
- Fix for bug that was causing values not mapped as properties not to be saved.
- Internal refactor of preview properties
- Changed API for saveEntity
- Fix for composite reference paths such as "sites/en/product" References pointing to collection with a composite path were failing to locate the proper collection
- Reference fields now include the reference key
- You can now filter array properties
- Fix for initializing values to null, was colliding with enum validation.
- If you specify both a firebase config and are running in Firebase hosting, the specified config has now priority over the one found in the environment.
- Allowing grouping of main navigation entries
- Drag and drop reordering for storage fields
groupfield in root navigation entries allow to group items into subcategories.
- Adaptive wider size to subcollections seen in the entity side menu, which allows for a better layout of the table.
- Collection cells fade out if overflowed, instead of allowing scrolling
- Auto values for timestamps. You can now set the
autoValueproperty to timestamps to update the date to the current one either
on_create(only when the entity is created) or
on_update(every time it is saved)
- Markdown field with preview for string properties. Set the flag
markdownto true in the CMS field config.
- Drag and drop feature for default arrays, allowing reorder
- Reference field do not need to provide a schema or filter or search delegate
of the target collection. All these properties are inferred from the
collection path and the corresponding collection view. So setting an absolute
path such as
productswill look into that path and find the corresponding view.
- The lateral menu now is open on close based on the main navigation and has specific urls.
- You can now add a custom view to the main AppBar
- Clicking on an entity in a collection now opens a lateral menu with an editable form instead of a preview.
- Dropdown in entity collections to change row height. Added
smallproperty in collections in favor of
columnWidthfield in properties to indicate the width of columns
- Fix for wrong subcollections url.
- Lateral panel for having entities info in context
- Revamped collection table for allow infinite scrolling and enhanced performance
- Big general redesign
- Changed the layout of forms to single column. Removed
forceFullWidthflag in properties.
urlin the string property configuration.