Home

>

Tools

>

Strapi

>

Releases

>

4.14.5

Strapi Release: 4.14.5

Tag Name: v4.14.5

Release Date: 10/18/2023

Strapi LogoStrapi

Open-source headless CMS built with Node.js. Provides developers with complete freedom in choosing their favorite tools and frameworks for frontend development.

TL;DR

Strapi v4.14.5 is primarily a technical update focused on TypeScript migration and Blocks Editor improvements. It includes significant TypeScript conversions of core packages, fixes for the Blocks Editor UI and functionality, and enhancements to the build system with pack-up. This release improves developer experience with better TypeScript support and fixes several UI issues in the content editing experience.

Highlight of the Release

    • Major TypeScript migration of core packages including database, email, and admin components
    • Multiple fixes and improvements to the Blocks Editor UI and functionality
    • Enhanced build system with pack-up integration for better module preservation
    • Fixed relation type constraints to only allow content types as relation targets

Migration Guide

No specific migration steps are required for this release as it primarily contains TypeScript conversions and bug fixes.

If you're a plugin developer working with TypeScript:

  • Be aware that many core packages now have improved TypeScript definitions
  • The database package has been fully migrated to TypeScript with enhanced type definitions
  • Relation types now enforce that only content types (not components) can be used as relation targets

For developers using the build system:

  • The plugin:build command now uses pack-up underneath
  • Declaration map files are now generated for easier TypeScript navigation
  • Several packages now use preserve modules for better tree-shaking

Upgrade Recommendations

This is a minor release with significant TypeScript improvements and Blocks Editor fixes. It's recommended to upgrade if you:

  1. Are using TypeScript in your Strapi project or plugins
  2. Are experiencing any of the fixed Blocks Editor issues
  3. Want to benefit from the improved build system with pack-up

The upgrade should be straightforward with minimal risk as it primarily contains TypeScript conversions and bug fixes. Follow the standard Strapi update procedure:

npm install [email protected]
# or
yarn upgrade [email protected]

After upgrading, restart your Strapi server and verify that your custom code still works as expected, especially if you're using TypeScript or have custom plugins.

Bug Fixes

Blocks Editor Fixes

  • Fixed issue where images inserted and removed as first element would break the app
  • Fixed link button behavior when multiple blocks are selected
  • Fixed UI issues to match designs (removed underline on links, fixed popover link text size, removed headings component, fixed blockquote styles)
  • Prevented carrying over modifiers when creating empty blocks
  • Fixed issue where clicking on a modifier when editor selection is null would crash the app
  • Fixed first-time list creation requiring two clicks
  • Fixed empty line removal before blocks without editor selection
  • Fixed layout shift issues in the editor

Other Fixes

  • Fixed notifications to not have a default for "success"
  • Fixed TypeScript relation target constraint to only allow content types (not components)
  • Fixed pack-up external configuration to work better with preserveModules

New Features

TypeScript Migration

  • Migrated database package to TypeScript with improved type definitions
  • Converted email package to TypeScript
  • Migrated multiple admin hooks and components to TypeScript including:
    • useAdminRoles
    • useAdminUsers
    • useEnterprise
    • usePermissionsDataManager
    • useAdminRolePermissions
    • ConfigurationProvider
    • PluginsInitializer
    • NpsSurvey
    • LanguageProvider
    • LeftMenu

Build System Improvements

  • Added ability to disable NPS surveys in Strapi configuration
  • Enhanced pack-up with preserve modules functionality
  • Enabled config via nodeAPI & allowed bundles to have their own tsconfig
  • Refactored plugin:build to use pack-up underneath

Security Updates

No specific security fixes were mentioned in this release.

Performance Improvements

Build and Development Improvements

  • Improved TypeScript configuration with declaration map files for easier navigation
  • Enhanced pack-up configuration for better module preservation
  • Updated test regex to allow arbitrary subpaths
  • Added Jest shards for database tests to improve test performance

UI Performance

  • Fixed layout shift in Blocks Editor by overriding editor scrollSelectionIntoView()
  • Added margin to the editor wrapper to prevent writing to the bottom of the editor

Impact Summary

Strapi v4.14.5 represents a significant step in the TypeScript migration journey for Strapi's codebase. The database package, one of the core components, has been fully migrated to TypeScript, providing better type safety and developer experience. The email package and numerous admin components have also been converted.

For content editors, this release brings several important fixes to the Blocks Editor, improving stability and usability. Issues with image handling, list creation, and modifier buttons have been addressed, resulting in a more reliable editing experience.

The build system has seen improvements with pack-up integration, enabling better module preservation and allowing for more flexible TypeScript configurations. This will benefit plugin developers and those extending Strapi.

Overall, this release focuses on technical improvements rather than new features, laying groundwork for better TypeScript support throughout the codebase while fixing important UI issues in the content editing experience.

Full Release Notes

⚙️ Chore

🔥 Bug fix

  • [core:admin] [Blocks] Disable link button when multiple blocks are selected (#18384) @remidej
  • [core:admin] [Blocks] Multiple UI fixes to match the designs (#18387) @remidej
  • [core:admin] fix(blocks): prevent carrying over modifiers when creating empty blocks (#18413) @remidej
  • [core:helper-plugin] fix(helper-plugin): notifications should not have a default for "success" (#18372) @joshuaellis
  • [typescript] Types - Only allow content types as relation target (cannot target component) (#18212) @Convly
  • [utils:pack-up] fix(pack-up): redefine external to work better with presereModules and omit changing the fileName (#18395) @joshuaellis

💅 Enhancement

  • [core:admin] [Blocks editor] Images inserted and removed as first element breaks the app (#18347) @simotae14
  • [core:admin] [Blocks editor] Fix- The first time you click on the List option or button the list is not created (#18375) @simotae14
  • [core:admin] [Blocks editor] Remove empty line before block without editor selection (#18390) @simotae14
  • [core:admin] [Blocks editor] Fix - When a image is selected we want to disable the modifier buttons (#18412) @simotae14
  • [core:admin] [Blocks editor] Fix - Click on a Modifier when the editor selection is null crashes the app (#18426) @simotae14
  • [core:admin] [Blocks editor] Fix - When a code block is selected we want to disable the modifier buttons and the link button (#18458) @simotae14
  • [utils:pack-up] feat(pack-up): enable preserve modules (#18358) @joshuaellis
  • [utils:pack-up] feat(pack-up): enable config via nodeAPI & allow bundles to have own tsconfig (#18440) @joshuaellis

📚 Update and Migration Guides

  • General update guide can be found here
  • Migration guides can be found here 📚

Statistics:

File Changed300
Line Additions6,737
Line Deletions8,251
Line Changes14,988
Total Commits115

User Affected:

  • Better TypeScript support with many core packages migrated to TypeScript
  • Improved build system with pack-up integration
  • Enhanced type definitions for database relations
  • Better development experience with declaration map files

Contributors:

alexandrebodinConvlyMarc-RoigjoshuaellisremidejmadhurisandbhorBoegie19simotae14innerdvationsjhoward1994amerikansmorimotomarkkaylor