Skip to content

perf: cache assets.json manifest, drop WP <6.0 patterns backport, declare PHP/WP requirements#503

Open
herewithme wants to merge 1 commit into
masterfrom
fix/perf-assets-editor-patterns
Open

perf: cache assets.json manifest, drop WP <6.0 patterns backport, declare PHP/WP requirements#503
herewithme wants to merge 1 commit into
masterfrom
fix/perf-assets-editor-patterns

Conversation

@herewithme

@herewithme herewithme commented Jul 16, 2026

Copy link
Copy Markdown
Member

Contexte

Revue de performance du framework. Trois hotspots corrigés, aucun changement de comportement attendu.

Changements

1. Assets::get_min_file() — memoïsation du manifest assets.json

Le fichier dist/assets.json était relu et re-décodé (file_exists + file_get_contents + json_decode) à chaque appel, et la méthode est appelée plusieurs fois par requête : register_assets() (JS), filtre stylesheet_uri (déclenché à chaque get_stylesheet_uri()), Editor::style(), login_stylesheet_uri().

Le manifest décodé est désormais memoïsé en static (get_assets_manifest()), sur le même modèle que get_asset_data() qui avait déjà son cache.

2. Editor_Patterns — suppression du backport WP < 6.0

register_patterns() (~140 lignes) s'auto-désactivait sur WP ≥ 6.0 mais restait accroché sur init à chaque requête. Le core enregistre lui-même les patterns du dossier ./patterns/ depuis la 6.0 (_register_theme_block_patterns()), et le thème requiert déjà WP 6.3 (style.css). Code supprimé, seul register_categories() est conservé.

3. Editor::style() — garde is_admin()

La méthode s'exécutait au boot sur toutes les requêtes (front incluse) : lookup manifest + is_file(), alors qu'add_editor_style() n'est consommé qu'en contexte admin/éditeur.

4. Pré-requis PHP/WP déclarés

  • style.css : ajout de Requires PHP: 8.3
  • README : nouvelle section PHP & WordPress (PHP 8.3+, WP 6.3+)

Versions alignées sur l'existant : phpcs.xml.dist (testVersion 8.3-), platform composer (php: 8.3.0), wp-env (PHP 8.3), Requires at least: 6.3.

Vérifications

  • php -l OK sur les 3 fichiers modifiés
  • phpcs OK (GrumPHP pre-commit au vert)

Piste non traitée ici (à discuter)

La dépendance jQuery imposée en dur sur le bundle front (Assets.php : array_merge( [ 'jquery' ], … )) + l'inline script du service Performance accroché sur jquery garantissent ~30 Ko gzip de JS sur chaque page, même si rien ne l'utilise. C'est le plus gros gain potentiel côté Core Web Vitals, mais c'est un breaking change pour les projets enfants — à traiter dans une PR dédiée si l'équipe valide.

🤖 Generated with Claude Code


Note

Low Risk
Changes are performance guards and removal of dead code on WP 6.3+; pattern registration now depends entirely on core, which matches the declared minimum version.

Overview
This PR reduces per-request overhead around compiled assets and editor setup, and documents platform requirements—without intended behavior changes on supported WordPress versions.

Assets now loads dist/assets.json once per request via a new private get_assets_manifest() (static memoization), which get_min_file() uses instead of re-reading and decoding the file on every call.

Editor::style() returns immediately on non-admin requests so front-end boots no longer run manifest lookup and is_file() checks for editor CSS.

Editor_Patterns drops the large register_patterns() backport and its init hook; only pattern categories are registered, relying on core theme pattern registration (WP 6.0+), consistent with the theme’s WP 6.3 minimum.

style.css adds Requires PHP: 8.3; README adds explicit PHP 8.3+ and WordPress 6.3+ requirements.

Reviewed by Cursor Bugbot for commit 486448a. Bugbot is set up for automated code reviews on this repo. Configure here.

…p editor style on front

- Assets::get_min_file(): memoize the decoded dist/assets.json manifest
  (was re-read and re-decoded on every call, several times per request)
- Editor_Patterns: remove the register_patterns() WP <6.0 backport, core
  handles ./patterns/ registration since 6.0
- Editor::style(): skip manifest lookup and filesystem check on front-end
  requests, editor styles are only consumed in admin/editor context
- Declare PHP 8.3 / WP 6.3 requirements in style.css and README

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@herewithme herewithme self-assigned this Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants