79% stackable-ultimate-gutenberg-blocks

Code Review | Stackable - Page Builder Gutenberg Blocks

WordPress plugin Stackable - Page Builder Gutenberg Blocks scored79%from 54 tests.

About plugin

  • Plugin page: stackable-ultimat...
  • Plugin version: 3.12.6
  • PHP compatiblity: 7.3+
  • PHP version: 7.4.16
  • WordPress compatibility: 6.1-6.4.1
  • WordPress version: 6.3.1
  • First release: Feb 17, 2018
  • Latest release: Nov 10, 2023
  • Number of updates: 199
  • Update frequency: every 10.5 days
  • Top authors: bfintal (100%)

Code review

54 tests

User reviews

408 reviews

Install metrics

90,000+ active /2,633,765 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
The plugin installed successfully, without throwing any errors or notices

Server metrics [RAM: ▲5.89MB] [CPU: ▲35.65ms] 75% from 4 tests

A check of server-side resources used by Stackable - Page Builder Gutenberg Blocks
It is recommended to improve the following
  • Extra RAM: The extra memory usage should kept under 5MB (currently 5.89MB on /wp-admin/options-general.php?page=stackable)
PageMemory (MB)CPU Time (ms)
Home /9.30 ▲5.8383.65 ▲37.58
Dashboard /wp-admin9.32 ▲6.0182.17 ▲35.31
Posts /wp-admin/edit.php9.32 ▲5.9681.18 ▲32.06
Add New Post /wp-admin/post-new.php11.66 ▲5.77127.05 ▲37.64
Media Library /wp-admin/upload.php9.32 ▲6.0977.43 ▲43.66
Get Started /wp-admin/admin.php?page=stackable-getting-started9.3278.78
Freemius Debug [v.2.6.0] /wp-admin/admin.php?page=freemius9.3287.10
Stackable /wp-admin/options-general.php?page=stackable9.3276.62

Server storage [IO: ▲7.34MB] [DB: ▲0.00MB] Passed 3 tests

How much does this plugin use your filesystem and database?
This plugin installed successfully
Filesystem: 634 new files
Database: no new tables, 14 new options
New WordPress options
fs_debug_mode
stackable_current_version_installed
db_upgraded
fs_active_plugins
widget_recent-posts
theysaidso_admin_options
stackable_redirect_to_welcome
can_compress_scripts
stackable_v2_frontend_detector_counter
stackable_pro_notice_start_date
...

Browser metrics Passed 4 tests

Stackable - Page Builder Gutenberg Blocks: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,838 ▲9114.34 ▲0.072.09 ▲0.4229.56 ▼12.95
Dashboard /wp-admin2,213 ▲365.53 ▼0.0591.84 ▼10.2043.20 ▼0.82
Posts /wp-admin/edit.php2,122 ▲192.00 ▼0.0235.74 ▼3.9833.16 ▼1.12
Add New Post /wp-admin/post-new.php6,391 ▲4,86536.51 ▲13.331,761.39 ▲1,080.0037.57 ▼25.70
Media Library /wp-admin/upload.php1,424 ▲244.10 ▼0.11113.83 ▲10.9350.59 ▲8.01
Get Started /wp-admin/admin.php?page=stackable-getting-started5,33848.051,292.12102.98
Freemius Debug [v.2.6.0] /wp-admin/admin.php?page=freemius1,0761.6729.8634.96
Stackable /wp-admin/options-general.php?page=stackable1,12910.3297.1059.71

Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% from 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
It is recommended to fix the following
  • This plugin did not uninstall without warnings or errors
    • > Notice in wp-content/plugins/stackable-ultimate-gutenberg-blocks/freemius/includes/class-freemius.php+8546
    Undefined property: stdClass::$plugins
  • This plugin does not fully uninstall, leaving 14 options in the database
    • db_upgraded
    • theysaidso_admin_options
    • stackable_activation_date
    • stackable_current_version_installed
    • fs_debug_mode
    • stackable_pro_notice_start_date
    • fs_accounts
    • stackable_v2_frontend_detector_counter
    • widget_theysaidso_widget
    • widget_recent-comments
    • ...

Smoke tests Passed 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Even though no errors were found, this is by no means an exhaustive test

SRP Passed 2 tests

🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
Looking good! No server-side errors or output on direct access of PHP files

User-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
There were no browser issues found

Optimizations

Plugin configuration 96% from 29 tests

readme.txt Passed 16 tests

Often overlooked, readme.txt is one of the most important files in your plugin
5 plugin tags: blocks, gutenberg, page builder, gutenberg blocks, wordpress blocks

stackable-ultimate-gutenberg-blocks/plugin.php 92% from 13 tests

The main file in "Stackable - Page Builder Gutenberg Blocks" v. 3.12.6 serves as a complement to information provided in readme.txt and as the entry point to the plugin
It is important to fix the following:
  • Main file name: Even though not officially enforced, the main plugin file should be the same as the plugin slug ("stackable-ultimate-gutenberg-blocks.php" instead of "plugin.php")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | A short glimpse at programming languages used with this plugin and a check that no dangerous files are present
Success! There were no dangerous files found in this plugin44,170 lines of code in 314 files:
LanguageFilesBlank linesComment linesLines of code
PHP1769,08619,38542,142
JSON74001,025
JavaScript253673786
SVG1800181
CSS200020
XML13016

PHP code 50% from 2 tests

An overview of cyclomatic complexity and code structure
These items need your attention
  • Cyclomatic complexity of classes has to be reduced to less than 1000 (currently 3,096)
Cyclomatic complexity
Average complexity per logical line of code0.55
Average class complexity69.89
▷ Minimum class complexity1.00
▷ Maximum class complexity3,096.00
Average method complexity4.50
▷ Minimum method complexity1.00
▷ Maximum method complexity94.00
Code structure
Namespaces0
Interfaces1
Traits0
Classes70
▷ Abstract classes22.86%
▷ Concrete classes6897.14%
▷ Final classes00.00%
Methods1,426
▷ Static methods22815.99%
▷ Public methods1,02571.88%
▷ Protected methods171.19%
▷ Private methods38426.93%
Functions233
▷ Named functions21190.56%
▷ Anonymous functions229.44%
Constants158
▷ Global constants10566.46%
▷ Class constants5333.54%
▷ Public constants53100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Often times overlooked, PNG files can occupy unnecessary space in your plugin
199 compressed PNG files occupy 0.25MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
dist/images/block-image-box-fade.e47d3e8.png1.46KB1.43KB▼ 1.81%
dist/images/block-accordion-line-colored.4a7ec49.png0.36KB0.36KB0.00%
dist/images/block-testimonial-vertical-inverse.9972470.png1.91KB1.91KB0.05%
dist/images/block-team-member-half.124d11f.png1.13KB1.11KB▼ 2.15%
dist/images/block-blockquote-plain.7ee3a2a.png0.77KB0.69KB▼ 10.01%