Home

>

Tools

>

Strapi

>

Releases

>

3.0.0-beta.17.4

Strapi Release: 3.0.0-beta.17.4

Tag Name: v3.0.0-beta.17.4

Release Date: 10/23/2019

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 v3.0.0-beta.17.4 introduces significant changes to the administration panel by removing node-sass dependencies and migrating to styled-components. The settings-manager plugin has been deprecated, and several bug fixes have been implemented including locking the mongoose version to 5.7.4 to prevent populate issues and fixing GraphQL multiple query handling. This release also adds async support for plugin provider initialization.

Highlight of the Release

    • Complete removal of node-sass from the administration panel in favor of styled-components
    • Deprecation of the settings-manager plugin
    • Added support for async functions in plugin provider initialization
    • Fixed issues with multiple queries in one GraphQL request
    • Locked mongoose version to 5.7.4 to prevent populate issues
    • Improved webpack configuration for better build performance
    • Enhanced accessibility with vertical scrollbar support

Migration Guide

Migrating from SCSS to Styled-Components

If you have custom admin plugins or extensions that use SCSS:

  1. Remove node-sass dependency from your package.json
  2. Convert your SCSS files to styled-components
  3. Update your component imports to use the new styled components

Settings Manager Plugin Removal

The settings-manager plugin has been deprecated and removed. If your application relies on this plugin:

  1. Backup any important settings configurations
  2. Consider using environment variables or custom configuration files instead
  3. Update any code that references the settings-manager plugin

Plugin Development Updates

For plugin developers:

  1. Update your plugin development approach to use styled-components instead of SCSS
  2. Take advantage of the new async capability in plugin provider initialization
  3. Review the updated plugin generator templates for current best practices
  4. Ensure compatibility with the locked mongoose version (5.7.4) if your plugin interacts with MongoDB

Upgrade Recommendations

This release contains breaking changes related to the admin UI styling system and the removal of the settings-manager plugin. We recommend:

  1. For production applications: Carefully test the upgrade in a staging environment first, especially if you have custom admin plugins or extensions that use SCSS.

  2. For developers with custom admin extensions: Plan for the migration from SCSS to styled-components, as this is a significant change that will require updates to your custom code.

  3. For MongoDB users: The mongoose version lock to 5.7.4 is important for stability, but may impact you if you were relying on features from newer mongoose versions.

  4. Upgrade steps:

    • Backup your project
    • Update your Strapi version to v3.0.0-beta.17.4
    • Test thoroughly, especially custom admin extensions and GraphQL queries
    • Review the migration guide for detailed instructions on adapting to the changes

Bug Fixes

GraphQL Multiple Query Fix

Fixed an issue where making multiple queries in a single GraphQL request would not work correctly. This ensures that all queries within a single request are properly processed and returned.

Mongoose Version Lock

Locked the mongoose version to 5.7.4 to prevent issues with the populate functionality that were introduced in newer versions. This ensures stable database operations for MongoDB users.

UI and Alignment Fixes

Several UI issues have been addressed:

  • Fixed alignment and padding issues in various components
  • Corrected overflow issues in the Users Permissions plugin search list
  • Fixed responsive design issues in multiple plugins
  • Improved modal component styling and behavior

New Features

Async Plugin Provider Initialization

Plugin providers can now use async functions in their initialization process, allowing for more flexible plugin configuration that can depend on asynchronous operations like API calls or database queries.

Improved Webpack Configuration

The webpack configuration has been updated to improve build performance. This includes:

  • Option to skip asset minification for faster builds
  • Updated image-webpack-loader configuration
  • Better handling of local plugin files

Enhanced UI Components

The administration panel has received several UI improvements:

  • Common left menu styling for better consistency
  • Updated notification system
  • Improved responsive design across plugins
  • Better alignment and padding in various components

Security Updates

No specific security fixes were mentioned in this release.

Performance Improvements

Webpack Build Optimization

The webpack configuration has been improved to enhance build performance:

  • Added an option to skip asset minification for faster development builds
  • Updated image-webpack-loader configuration for better image processing
  • Improved handling of local plugin files during builds

Styled-Components Migration

The migration from SCSS to styled-components brings several performance benefits:

  • Reduced CSS bundle size through component-scoped styles
  • Elimination of unused styles
  • More efficient style rendering with dynamic styling capabilities
  • Improved code splitting potential

Impact Summary

This release represents a significant architectural shift in Strapi's admin panel by completely removing node-sass dependencies and migrating to styled-components. This modernizes the codebase and improves maintainability but requires adaptation for developers with custom admin extensions.

The deprecation of the settings-manager plugin signals Strapi's move toward more streamlined configuration approaches, potentially affecting workflows that relied on this plugin.

For API users, the GraphQL multiple query fix and mongoose version lock address important stability issues, particularly for MongoDB users who may have experienced populate functionality problems.

The addition of async support for plugin provider initialization enhances plugin development flexibility, allowing for more sophisticated initialization processes that can depend on asynchronous operations.

Overall, this release focuses on modernizing the frontend architecture, improving stability, and enhancing the developer experience, though it does require some migration effort for custom extensions.

Full Release Notes

Read more here: Migration guide

💥 Breaking Change

💅 Enhancement

🐛 Bug fix

Statistics:

File Changed300
Line Additions2,303
Line Deletions15,809
Line Changes18,112
Total Commits173

User Affected:

  • Need to adapt to the removal of node-sass and migration to styled-components
  • Must update any custom plugins that relied on SCSS files
  • Will benefit from async plugin provider initialization
  • Need to be aware of the mongoose version lock to 5.7.4

Contributors:

virginiekysoupettealexandrebodinlauriejim