TL;DR
Ghost 0.10.0: AMP Support, Theme Management, and Storage Improvements
Ghost 0.10.0 introduces significant new features including AMP (Accelerated Mobile Pages) support for optimized mobile content delivery and comprehensive theme management directly within Ghost. This release also includes important storage adapter changes (breaking), improved user deletion workflow, better cross-browser compatibility, and various security and performance fixes. The update focuses on enhancing content delivery speed, improving the admin experience, and providing more robust theme handling capabilities.
Highlight of the Release
- AMP (Accelerated Mobile Pages) support for optimized mobile content delivery
- Built-in theme upload, download, and delete functionality
- Breaking changes to storage adapters requiring specific methods
- Improved user deletion process with clear content impact visibility
- Changed default referrer policy to no-referrer-when-downgrade for Safari compatibility
- Better cross-browser support with editor now working in IE Edge
- Fixed timezone handling for published dates
- Security fix for open redirect vulnerability
- Internal tags no longer appear in sitemap
Migration Guide
for Ghost 0.10.0
Breaking Changes for Custom Storage Adapters
If you're using a custom storage adapter, you'll need to update it to include the following required methods:
// Required methods for custom storage adapters
save(image, targetDir)
serve(options)
delete(fileName, targetDir)
exists(fileName, targetDir)
All of these methods are now mandatory for your storage adapter to work with Ghost 0.10.0. If your adapter doesn't implement these methods, your Ghost instance will not start.
Theme Development for AMP
If you want to customize the AMP experience:
- Create an
amp.hbs template in your theme
- Use the new AMP helpers:
{{amp_content}} - Transforms post content to AMP-compatible HTML
{{amp_component}} - Adds required AMP component scripts
{{amp_ghost_head}} - Adds required AMP metadata
Storage Configuration
Ghost now supports separate storage adapters for images and themes:
storage: {
active: 'my-custom-storage',
'my-custom-storage': {
images: {...},
themes: {...}
}
}
For most users, no changes are needed as the default local file storage will be used.
Upgrade Recommendations
Who should upgrade immediately:
- Users who want to take advantage of AMP support for better mobile performance
- Anyone using custom themes who wants the new theme management capabilities
- Sites experiencing issues with date handling or Safari referrer policy
Who can delay upgrading:
- Users with custom storage adapters should test thoroughly before upgrading production sites
- Sites with heavy customizations should test the upgrade in a staging environment first
Upgrade process:
- Backup your database and content before upgrading
- If using a custom storage adapter, update it to include all required methods
- Update Ghost using your preferred method (Git, Docker, etc.)
- Verify your theme works correctly with the new version
- Test AMP functionality by visiting any post with
/amp/ appended to the URL
The upgrade is recommended for most users due to the significant new features and security improvements, but those with custom storage adapters should be aware of the breaking changes.
Bug Fixes
- Date Handling: Fixed the date helper to correctly generate published dates based on the blog's timezone setting
- Sitemap Generation: Internal tags are no longer shown in sitemap-tags.xml
- Security: Fixed an open redirect vulnerability by removing double slashes from redirects
- Referrer Policy: Changed default referrer policy to
no-referrer-when-downgrade to ensure compatibility with Safari
- Duplicate Notifications: Fixed issue with duplicate notifications appearing in the notification store
- Static Page Routing: Ensured static page edit route correctly redirects to the editor
- App Routes: Fixed routing priority so that app routes (like
/private/ and /subscribe/) take precedence over content with the same slug
- Media Rendering: Fixed small media types (images, GIFs) stretching in AMP pages
- Config Overwriting: Fixed issue where
config.theme.timezone and config.theme.title were being incorrectly overwritten
- File Import: Added proper validation for CSV file imports, checking both file type and extension
- ZIP File Upload: Added support for
.zip file uploads in the labs section
New Features
AMP Support
Ghost now includes built-in support for Accelerated Mobile Pages (AMP), Google's open-source initiative to make mobile pages load faster. Posts are automatically available in AMP format at /:slug/amp/. The implementation includes:
- New AMP-specific template (
amp.hbs) for rendering AMP-compatible content
- Helper functions for AMP content:
{{amp_content}}, {{amp_component}}, and {{amp_ghost_head}}
- Automatic conversion of standard HTML to AMP-compatible markup
- Image dimension detection for proper AMP rendering
- Canonical link relationships between standard and AMP versions
Theme Management
Ghost now provides comprehensive theme management directly within the admin interface:
- Upload new themes via the admin UI
- Download existing themes as ZIP files
- Delete themes that are no longer needed
- Theme validation using GScan to ensure compatibility
- New theme-related permissions and API endpoints
- Theme events for uploaded, downloaded, and deleted themes
Storage Adapter Improvements
The storage system has been enhanced with:
- Separate storage adapters for images and themes
- Better validation of custom storage adapters
- Improved error handling for storage operations
- ZIP file handling using node-archiver instead of system commands
Security Updates
- Open Redirect Vulnerability: Fixed a security issue where double slashes in URLs could create an open redirect vulnerability. The fix removes double slashes from paths to ensure redirects cannot be exploited.
- Referrer Policy: Changed the default referrer policy to
no-referrer-when-downgrade to improve security while maintaining compatibility with Safari.
- File Upload Validation: Added more robust validation for CSV file imports, checking both file type and extension to prevent potential security issues.
Performance Improvements
- Native Font Stack: Switched from Google Fonts to a native system font stack, reducing HTTP requests and improving page load times
- AMP Support: Added AMP support for significantly faster mobile page loading
- Image Handling: Improved image dimension detection and caching for better performance
- URL Processing: Optimized handling of relative URLs for better performance in various contexts
- Temporary File Management: Improved handling of ZIP files by storing them in the OS temporary directory rather than the content/themes folder
Impact Summary
Ghost 0.10.0 represents a significant step forward in content delivery optimization and admin functionality. The addition of AMP support dramatically improves the mobile experience by delivering faster-loading, optimized content to mobile users. This feature alone could have meaningful impact on SEO, user engagement, and bounce rates for content-heavy sites.
The new theme management capabilities transform how Ghost users work with themes, eliminating the need for FTP or command-line access to change themes. This makes Ghost more accessible to less technical users while giving developers better tools for theme deployment.
The breaking changes to storage adapters, while potentially disruptive for developers using custom storage solutions, establish a more consistent and reliable API for future development. This standardization will lead to more robust integrations and fewer compatibility issues in the long run.
Security improvements, particularly the fix for open redirect vulnerabilities, protect both site owners and users from potential exploits. The switch to native system fonts improves performance while maintaining a professional appearance across all devices.
Overall, this release balances new features with important infrastructure improvements, setting the stage for Ghost's continued evolution as a modern publishing platform.
Full Release Notes
Please read the release blog post for more details.
Note: This release contains breaking changes for custom storage adapters - see https://github.com/TryGhost/Ghost/wiki/Using-a-custom-storage-module. If you are using a custom storage adapter your blog might not start before you update your custom storage adapter to a newer version, which supports our breaking changes.
Highlights
- [New] AMP (Accelerated Mobile Pages) - deliver optimised content for mobile users
- [New] Theme upload, download & delete - theme management is now part of Ghost
- [Improved] Deleting a user now clearly highlights any post content that will be deleted
- [Improved] Default referrer policy has changed to
no-referrer-when-downgrade - works now in Safari
- [Improved] Cross Browser Support - The editor now works in IE Edge
- [Fixed] Date helper now generates correct published date based on blog timezone
- [Fixed] Internal tags are not shown in sitemap-tags.xml anymore
- [Fixed] Security Issue: Open redirect
- [Changed] Storage adapters now require save, delete, serve, exists methods (Breaking Change)
- And much more...
You can see the full change log for the details of every change included in this release.