TL;DR
Ghost v5.99.0 introduces several notable enhancements including a new customization option for {{ghost_head}}, significant performance optimizations for settings cache, improved internationalization support with new translations, and various UI and bug fixes. This release focuses on giving theme developers more control, improving performance, and enhancing the multilingual experience while addressing several critical bugs in the member management and search functionality.
Highlight of the Release
- New
exclude option for {{ghost_head}} giving theme developers more control over included components
- Performance optimization for settings cache fetching, improving request handling by up to 30%
- Comprehensive internationalization support for newsletter strings
- Fixed critical 'Access Denied' error when accepting staff invites
- Improved search functionality with state management fixes
Migration Guide
No complex migration is required for this release. The new features like the {{ghost_head}} exclude option are opt-in and won't affect existing implementations unless explicitly used.
If you're a theme developer interested in using the new {{ghost_head}} exclude option, you can start implementing it immediately by adding the parameter to your theme's templates:
{{ghost_head exclude="search,portal"}}
For those working with internationalization, the newsletter string translations use single mustaches for variables (e.g., {date} rather than {{date}}) because these strings occur in both email templates and JavaScript files.
Upgrade Recommendations
This release contains valuable performance improvements and bug fixes that benefit all Ghost installations. The upgrade is recommended for all users, especially for:
- Sites with high traffic that will benefit from the settings cache optimization
- Multilingual sites that can leverage the new translation features
- Theme developers who want to take advantage of the new
{{ghost_head}} customization options
- Sites experiencing issues with staff invitations or search functionality
As with any upgrade, it's recommended to:
- Back up your database before upgrading
- Test the upgrade in a staging environment if possible
- Review your theme and custom integrations after upgrading to ensure compatibility
Bug Fixes
Critical Bug Fixes
-
Fixed "Access Denied" error when accepting staff invites: Resolved an issue with the authentication call parameters that was causing staff members to receive access denied errors when accepting invitations.
-
Fixed malformed unsubscribe_url in members API response: Corrected the formatting of unsubscribe URLs in the members API, ensuring proper functionality in email communications.
-
Fixed search state bug & missing last result: Addressed an issue in sodo-search where early results would get "stuck" in the display due to state management problems. Also fixed a bug where the last search result wouldn't appear due to an error with slice's register.
-
Fixed hover color of ExitButton: Changed the hover color of the settings exit button from black to grey-900, ensuring the X remains visible when hovering over it instead of blending with the background.
New Features
New Customization Options for {{ghost_head}}
Theme developers now have granular control over what gets included in the {{ghost_head}} output with the new exclude parameter. This powerful feature allows selective exclusion of components like search, portal, announcement bars, metadata, schema, card assets, comment counts, social data, and CTA styles.
Example usage: {{ghost_head exclude="search,portal"}}
This enhancement gives theme creators the ability to:
- Write custom schema
- Load custom versions of portal/comments/search
- Minimize load times by excluding unnecessary scripts
- Customize the user experience in a theme-specific way
Enhanced Internationalization Support
Ghost now includes comprehensive i18n support for newsletter strings, allowing for translation of boilerplate text in newsletters using i18next. This update also improves the newsletter buttons ("more like this", "less like this", "comment") by removing text-as-image from desktop buttons and making them properly translatable.
New translations added in this release:
- Improved and complete Norwegian translation
- Hungarian locale for Search functionality
Security Updates
No significant security fixes were included in this release.
Performance Improvements
Optimized Settings Cache Fetching
A significant performance optimization has been implemented for fetching strings from the settings cache. Through profiling and flamegraphs, the team identified that _doGet was a bottleneck during high traffic periods, sometimes consuming up to 20% of CPU time.
The optimization focuses on:
- Reducing unnecessary JSON parsing operations that were blocking the main thread
- Adding a hotpath fix to catch 99% of use cases by checking the type of cache entry
- Returning string values directly when appropriate
This change results in Ghost being able to handle approximately 30% more requests per second in benchmark testing, which translates to better performance and responsiveness for all users, especially on high-traffic sites.
Impact Summary
Ghost v5.99.0 delivers meaningful improvements across performance, customization, and internationalization. The settings cache optimization alone could provide up to 30% better request handling, which is significant for busy sites. Theme developers gain unprecedented control over what gets included in {{ghost_head}}, allowing for more optimized and customized themes.
The bug fixes address several important issues, particularly the staff invitation "Access Denied" error which was causing friction in team onboarding. Search functionality improvements enhance the user experience, while the expanded internationalization support makes Ghost more accessible to global audiences.
This release demonstrates Ghost's continued commitment to performance optimization, developer flexibility, and international user support. The changes are largely non-breaking and additive, making this a safe and beneficial upgrade for most users.
Full Release Notes
- ✨ Added "exclude" option for customizing
{{ghost_head}} (#21229) - Cathy Sarisky
- ⚡️ Optimized fetching strings from the settings cache - Daniel Lockyer
- 🎨 Changed hover color of ExitButton (#21396) - luis-411
- 🐛 Fixed "Access Denied" error when accepting staff invite - Kevin Ansfield
- 🐛 Fixed malformed
unsubscribe_url in members api response (#21437) - Steve Larson
- 🐛 Fixed search state bug & missing last result (#21417) - Cathy Sarisky
- 🌐 Added i18n for newsletter strings (#21433) - Cathy Sarisky
- 🌐 Added new and improved Norwegian translation (#21452) - matsbst
- 🌐 Added Hungarian locale for Search (#21428) - Krisztian Kecskes
View the changelog for full details: v5.98.1...v5.99.0