What’s New in PrestaShop 8.0

PrestaShop 8 is a major update that brings an updated Symfony 4.4 version, compatibility with PHP 8.1, new password policy and session management features, support for WebP, and more.


You can download the latest version directly from our GitHub

Download

Main features

Security page

PrestaShop 8 brings a new security page, with two important new features.

Configure your shop password policy by choosing between five increasing levels of complexity. This will allow shop administrators to fine-tune how strict they want to be about their users' passwords and find the exact balance between rememberability and security.

Manage your customer and employee sessions. Shop administrators can now see the history of users' sessions, and disconnect them remotely if needed. In addition, outdated sessions can be quickly cleaned-up from history to reduce database clutter.

Password strength indicator

Users now receive real-time cues of their chosen password’s strength.

When setting up their passwords, users now see a color-coded cue to help them understand if their password is strong enough, depending on the shop’s password policy. Note: themes must be updated to support this feature. Learn more about it here.

Image formats

Uploaded images can now be saved in the modern WebP format. WebP provides better compression than JPEG and PNG for the same image quality: smaller files mean pages will load faster. You can configure this option in Design > Image Settings > Image generation options.

It is now possible to use SVG files for your shop’s logo in addition to classic bitmap images. Learn more about this feature here.

Product page (experimental)

The new back office product page introduced in PrestaShop 1.7.8 has been significantly improved for this version. The page has been reorganized, combination management has been improved, and bulk edition has been enhanced.

This new product page doesn’t include all the features of the standard product page yet (in particular, multishop support), so it remains disabled by default. You can activate it in Advanced Parameters > Experimental features.

Search Engine Optimization

Additional description for categories: enhance your category pages’ visibility by including a block of search engine optimized text at the bottom of the page.

Prevent search engine crawlers from indexing discontinued products by setting up the “410 – Gone” status code on your discontinued products, instead of using “404 – Not Found”.

Page number is now included in meta title tags on paginated pages, like new products, best sales, prices drop, and others. This should help search engines understand these pages better.

Content length suggestions. Some text fields in SEO, traffic and CMS sections now include live character counters to help merchants avoid going over the recommended content length limit.

Multistore

Many pages in the back office have been updated for multistore compatibility, allowing merchants to choose which fields to update when in shop or group context.

DKIM signatures for emails

Reduce the likelihood of your shop’s emails being marked as spam by using DKIM signatures. This can be configured in Advanced Parameters > E-mail.

Installer

Reduce clutter by choosing which modules and themes to install during the shop’s installation process.

Customize your distribution. During the shop’s installation, any modules, themes present in the shop’s modules and themes directories will be installed by default, unless the user chooses otherwise. This allows integrators to create customized PrestaShop builds with (or without) the modules and themes of your choosing.

Find out exactly what went wrong if the installation fails. If debug mode is on, a full stack trace will be displayed after something goes wrong during the installation process. This will definitely help developers pinpoint the source of the problem.

Extend the installation process. Modules now include a callback postInstall(), allowing them to execute code after the shop’s installation is finished. This provides the developers with new possibilities, like add extra steps to the installation, preload assets, or preprocess data.

Webservice

The status and URL to your shop’s webservice is now displayed at the top of the page in Advanced parameters > Webservice. This should be useful to new users and help them troubleshoot common problems.

It is now possible to perform partial updates on webservice endpoints using the PATCH method. This allows integrations to update only part of an entity instead of all the fields at once. Learn more about this change here.

Media versioning

Developers can use media versioning to prevent outdated javascript and stylesheet files from being loaded from the browser’s cache.

A new parameter has been added to registerJavascript and registrerStylesheet methods, allowing module developers to add a version parameter. This parameter will be appended to the asset’s URL, so if the version changes, browsers will download the new asset instead of loading the old version from local cache. Learn more about this change here.

1
2
3
4
5
6
7
$this->context->controller->registerJavascript(
    $this->name . '-front-js',
    'modules/' . $this->name . '/views/js/front.js',
    [
        'version' => $this->version,
    ]
);

1
2
3
4
<script
    type="text/javascript"
    src="http://domain.test/modules/modulename/views/js/front.js?1.0.0"
></script>

CLI

Set up your shop’s configuration values and debug mode from your server’s terminal.

Automate your configuration via scripts, fix a misconfiguration if the web interface is unavailable… many possibilities are now open thanks to this feature! Find more information about it here and here.

Partial updates in ObjectModel

Developers can now perform partial updates on ObjectModel entities. This is technically not a new feature, but it was buggy and unstable before.

1
2
3
4
5
6
7
8
$instance = new SomeEntity($entityId);
$instance->some_field = 'value1';
$instance->some_other_field = 'value2';
$instance->setFieldsToUpdate([
    'some_field' => true,
    'some_other_field' => true
]);
$instance->update();

Under the hood

PHP 8 and PHP 8.1 compatibility

PrestaShop 8 now requires at least PHP 7.2 and brings compatibility with the most recent PHP 8.1, supported until November 2024. Each new PHP version brings performance and security improvements, so it’s important to run PrestaShop on the most recent PHP version available. Plus, if you target a specific PHP version, you can benefit from all the new language features!

Symfony and library upgrades

PrestaShop 8 has been upgraded to Symfony 4.4 LTS (Long Term Support) version, which will be supported by the Symfony team until November 2023. This release also brings many updated libraries, like Guzzle 7.4, Twig 3, PHPUnit 8, and Circuit Breaker 4.

Open source neutrality

PrestaShop 8 is a turning point as the project moves towards company neutrality: the Addons Marketplace is no longer bundled with the project (but can be installed separately). The project is mostly free of all company products as well as services.

Typescript

All scripts from Symfony-based pages are now built in TypeScript. TypeScript provides many language features not included in Javascript, the most important one being strong typing. This change should help make the code more robust, reduce the number of bugs, and increase the project’s long-term maintainability. Read more about it here.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
const {$} = window;

export interface CartAddressIds {
    deliveryAddressId: string;
    invoiceAddressId: string;
}

export interface CartProduct {
    attributeId: number;
    customizationId: number;
    productId: number;
    price?: string;
    newQty?: string;
    prevQty?: number;
}

Faster assets building

Webpack configurations have been updated to use esbuild-loader instead of babel-loader, which has proven to speed up the build time significantly. In our tests, build time was reduced by a third!