Summary
Neve frontend requests can terminate while generating dynamic CSS when the frontend style generator cannot be loaded.
Expected behavior: The page request continues and enqueues the CSS that remains available.
Actual behavior: An uncaught Class "Neve\Core\Styles\Frontend" not found error is raised during dynamic CSS enqueueing.
Impact: Affected frontend page views return a fatal error instead of rendering.
Customer context
- Product / area: Neve dynamic CSS on the frontend
- Version: 4.2.11
- Environment: PHP 8.3.33; WordPress versions reported by telemetry: 6.9.7 and 7.1
- Integration / third party: Not provided
- Reported error / symptom:
Class "Neve\Core\Styles\Frontend" not found at inc/core/dynamic_css.php:71
- Impact: 2 telemetry occurrences across 2 distinct sites between 2026-08-20 and 2026-08-24.
Reproduction notes
- Use Neve 4.2.11 on a frontend request that triggers
wp_enqueue_scripts.
- Make the mapped
Neve\Core\Styles\Frontend class unavailable to the Neve autoloader, for example through an incomplete or unreadable theme file.
- Observe that dynamic CSS enqueueing reaches the direct frontend-generator construction and raises the reported class-not-found error.
Production reproduction is confirmed by telemetry; an isolated local reproduction was not run.
Diagnosis
Conclusion
Production telemetry grounds the frontend fatal at Dynamic_Css::enqueue() in Neve 4.2.11. That release directly instantiates Neve\Core\Styles\Frontend with no availability check. Commit f71438636 (2026-08-21) adds an availability check around this generator path and describes the change as preventing class-loading errors. This is strong evidence of a Neve crash defect when the mapped generator cannot be loaded.
Where this likely occurs
inc/core/dynamic_css.php — Neve\Core\Dynamic_Css::enqueue() lines 65-84 selects Frontend for wp_enqueue_scripts and directly constructs it at line 71 in 4.2.11.
inc/core/styles/frontend.php — Neve\Core\Styles\Frontend is declared at lines 8-25, confirming the expected class is part of the release tree.
autoloader.php — Neve\Autoloader::load_mapped_file() lines 114-160 maps a class to a lowercased PHP path and returns false when that file is absent or unreadable.
start.php — bootstrap lines 44-60 registers the Neve namespace against inc/ before core loading.
- Release tag
v4.2.11 resolves to c3c4ad6746b71e15e4bc9373848332afb7d2028b; f71438636ab80af15fa2581888826c4be79309a0, following e1b889db2, is later than that release and is not contained in it.
Engineering notes
The inspected release includes the expected Frontend class and namespace mapping, so the telemetry does not establish why the class was unavailable on the affected installations. The released enqueue path nevertheless turns an unavailable mapped class into a frontend fatal. Neve Pro was inspected only for an override of this generator and does not define Neve\Core\Styles\Frontend; its dynamic-style subscribers do not explain the missing-class error.
Test coverage status
tests/test-neve-autoloader.php contains coverage for Neve\Autoloader::load_class() missing-file behavior at lines 63-108. No relevant coverage was found during inspection for Dynamic_Css::enqueue() continuing when the selected generator class is unavailable.
What to verify or explore next
- May be worth reproducing with a Neve installation where
inc/core/styles/frontend.php is unavailable or unreadable and invoking the wp_enqueue_scripts path.
- May be worth running the dynamic CSS test coverage, if present in CI, against the 4.2.11 release tree and the follow-up commit.
- Verify whether the subsequent guard has shipped in a Neve release and whether telemetry continues after that release.
Unknowns / follow-up
- The telemetry does not include the affected theme directory contents, file permissions, or deployment mechanism.
- No evidence establishes a previously working release for either affected site, so regression status is unconfirmed.
Confidence
Confidence: 94/100
Production telemetry records the frontend fatal twice on Neve 4.2.11, and the released code directly instantiates the missing class without a guard. A subsequent Neve commit explicitly adds the corresponding class-existence check, confirming a product-side crash path.
Crash telemetry
|
|
| Occurrences |
2 |
| Distinct sites |
2 |
| First seen |
2026-08-20 17:03 UTC |
| Last seen |
2026-08-24 12:54 UTC |
| Crash location |
product:inc/core/dynamic_css.php:71 |
| Request context |
frontend |
| Inside Themeisle SDK |
no |
| Product versions |
4.2.11 |
| WP versions |
6.9.7, 7.1 |
| PHP versions |
8.3.33 |
| SDK versions |
3.3.59 |
Source: automated crash report — neve, fingerprint 5fab41cf25c417fcbb7ecc829c0720df
Generated by bug-report-triage (ID: bug-report-triage_6a8d2fc1649822.90371526)
Summary
Neve frontend requests can terminate while generating dynamic CSS when the frontend style generator cannot be loaded.
Expected behavior: The page request continues and enqueues the CSS that remains available.
Actual behavior: An uncaught
Class "Neve\Core\Styles\Frontend" not founderror is raised during dynamic CSS enqueueing.Impact: Affected frontend page views return a fatal error instead of rendering.
Customer context
Class "Neve\Core\Styles\Frontend" not foundatinc/core/dynamic_css.php:71Reproduction notes
wp_enqueue_scripts.Neve\Core\Styles\Frontendclass unavailable to the Neve autoloader, for example through an incomplete or unreadable theme file.Production reproduction is confirmed by telemetry; an isolated local reproduction was not run.
Diagnosis
Conclusion
Production telemetry grounds the frontend fatal at
Dynamic_Css::enqueue()in Neve 4.2.11. That release directly instantiatesNeve\Core\Styles\Frontendwith no availability check. Commitf71438636(2026-08-21) adds an availability check around this generator path and describes the change as preventing class-loading errors. This is strong evidence of a Neve crash defect when the mapped generator cannot be loaded.Where this likely occurs
inc/core/dynamic_css.php—Neve\Core\Dynamic_Css::enqueue()lines 65-84 selectsFrontendforwp_enqueue_scriptsand directly constructs it at line 71 in 4.2.11.inc/core/styles/frontend.php—Neve\Core\Styles\Frontendis declared at lines 8-25, confirming the expected class is part of the release tree.autoloader.php—Neve\Autoloader::load_mapped_file()lines 114-160 maps a class to a lowercased PHP path and returns false when that file is absent or unreadable.start.php— bootstrap lines 44-60 registers theNevenamespace againstinc/before core loading.v4.2.11resolves toc3c4ad6746b71e15e4bc9373848332afb7d2028b;f71438636ab80af15fa2581888826c4be79309a0, followinge1b889db2, is later than that release and is not contained in it.Engineering notes
The inspected release includes the expected
Frontendclass and namespace mapping, so the telemetry does not establish why the class was unavailable on the affected installations. The released enqueue path nevertheless turns an unavailable mapped class into a frontend fatal. Neve Pro was inspected only for an override of this generator and does not defineNeve\Core\Styles\Frontend; its dynamic-style subscribers do not explain the missing-class error.Test coverage status
tests/test-neve-autoloader.phpcontains coverage forNeve\Autoloader::load_class()missing-file behavior at lines 63-108. No relevant coverage was found during inspection forDynamic_Css::enqueue()continuing when the selected generator class is unavailable.What to verify or explore next
inc/core/styles/frontend.phpis unavailable or unreadable and invoking thewp_enqueue_scriptspath.Unknowns / follow-up
Confidence
Confidence: 94/100
Production telemetry records the frontend fatal twice on Neve 4.2.11, and the released code directly instantiates the missing class without a guard. A subsequent Neve commit explicitly adds the corresponding class-existence check, confirming a product-side crash path.
Crash telemetry
product:inc/core/dynamic_css.php:71Source: automated crash report — neve, fingerprint
5fab41cf25c417fcbb7ecc829c0720dfGenerated by bug-report-triage (ID: bug-report-triage_6a8d2fc1649822.90371526)