We have improved various aspects of localization in the GraphQL API, which were common sources of confusion/friction:βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώβο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώβββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώββο»Ώο»Ώβββββββββββββο»Ώβββββο»Ώββββββββββββββο»Ώββββββββββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώο»Ώβ
Filter records by available available localizations;
Get the localizations available for a record;
You can specify a number of fallback locales when fetching fields content.
For all the nitty-gritty details, take a look at the updated doc page!
Form Outlets let you customize the area above each record's form. This hook can also be used in "ghost mode" β that is, with no visible UI β to add custom logic to the form in a reliable way (the Record auto-save plugin is a great example of that);
With plugins it is now possible to add custom marks and styles to Structured Text fields!
Here's a sneak peek of the latter feature:
A step-by-step guide to introducing DatoCMS into a Remix project is available;
A Starter Project, complete with preview mode, is now available on our Marketplace;
The react-datocms
package offers a new helper specifically designed to work with meta tags in Remix.
Happy hacking!
It now offers:
multiple layout modes (ie. layout=fill
is great for background images!)
a new onLoad
callback
a new usePlaceholder
option to disable the blurred image placeholder
We also removed the IntersectionObserver
polyfill. Since iOS 12.2 (March 2019) it's supported natively in all modern browsers, and the polyfill was accounting for 25% of the package size. Of course you can add a polyfill on your side if you still need it!
By popular demand, we decided to add a couple new ways of presenting some fields:βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώβο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώβββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώβββββο»Ώββββββββββββββο»Ώββββββββββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώο»Ώβ
In addition to the usual "switch" input, you can now present a boolean field as a Radio group or Select input. You can tweak the way your field will be visible to your editors in the Presentation settings, and specify the text that will be associated with both the true
and false
value.
Similarly, you can also present single-line text fields as a Radio group or Select input. The main difference from boolean fields is that you can specify more than two possible options, plus the string value associated with every option.
If you need to store multiple strings in a field, you can now use the Multi-select input and Checkbox Group on JSON fields. Again, you can specify the different options that will be visible to editors, and the relative value that will be stored in the field itself.
We could have easily released these new presentation modes as plugins, but we thought they're frequent enough to deserve their permanent place in DatoCMS. β₯οΈ
Based on feedback, we added two new reports to the "Project Usages" section of every project:βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώβο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώβββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώβββββο»Ώββββββββββββββο»Ώββββββββββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώο»Ώβ
Top transformations by traffic: this shows your assets sorted by consumed bandwidth, complete with any Imgix transformation parameter. It can be helpful ie. to find places where you did not add any optimization parameters in your frontend, making your pages slower to download than needed.
Top requested transformations: similar to the above, but it sorts asset by number of requests rather than consumed bandwidth.
As always, we remind that every report is updated every minute, but theyβre not to be considered 100% accurate, and only serve for qualitative analysis.
So far only Single-line Text fields could be set as the title field for a record... well it is now possible to also use Link fields, Date fields and DateTime fields.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώβο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώβββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβο»Ώββο»Ώο»Ώβββββββββββββο»Ώβββββο»Ώββββββββββββββο»Ώββββββββββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώο»Ώβ
It's a particularly useful feature when you have ie. "event" records, where a date might be the most important bit to highlight from a record!
AVIF is now the default format across all accounts if you use auto=format
. AVIF format can also be forced as the output format with fm=avif
. File sizes should drop by nearly 60% compared to JPEG & 35% compared to WebP, so that's awesome news for every project.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώβο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώβββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώβββββο»Ώββββββββββββββο»Ώββββββββββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώο»Ώβ
We've also made available the iptc=allow
parameter to allow IPTC metadata (which contain attribution info) to pass through from the original JPG image to the transformed image.
In a modular content field, if you specify only one type of required block and you add a validation requiring a minimum number of blocks, like here for example:βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββββββββο»Ώββββο»Ώο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββο»Ώββββο»Ώββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώβο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώβββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββο»Ώββββββββο»Ώββο»Ώβο»Ώββο»Ώο»Ώβο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώβββββο»Ώββββββββββββββο»Ώββββββββββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώο»Ώβ
We go ahead and by default create the required empty blocks for you when you create a new record, like this:
So your editors will see from the get go all the fields that they will need to populate and save a few clicks!