Ultimate Guide: Preserving Ghost Theme Settings During Updates (2026)

Have you ever spent hours customizing your Ghost theme's design settings—perfecting colors, fonts, and layout—only to have everything vanish after a theme update? You're not alone. This frustrating experience happens to countless Ghost users, but it's completely preventable.

In this comprehensive guide, we'll explore why Ghost theme settings get reset and provide multiple proven methods to preserve your customizations during updates. Whether you're a theme developer or a Ghost site owner, you'll learn advanced techniques that go beyond basic file naming conventions.

Why Ghost Theme Settings Get Lost: The Technical Reality

The Root Cause: Theme Identity Management

Ghost CMS identifies themes by their package.json name field and archive filename. When you upload a theme with a different name—even a slight variation—Ghost treats it as a completely new theme, not an update.

// package.json - The heart of theme identity
{
  "name": "my-theme", // This MUST stay consistent
  "version": "1.0.0",
  "config": {
    "custom": {
      "navigation_bg_color": "#ffffff",
      "accent_color": "#0066cc"
    }
  }
}

How Ghost Stores Theme Settings

Ghost maintains theme settings in its database, keyed by the theme name. When a "new" theme is activated, Ghost:

  • Reads default settings from the new theme's package.json
  • Creates a new settings record in the database
  • Discards the old theme's custom settings

This is why maintaining consistent theme naming is crucial for preserving your customizations.

Method 1: The Professional Approach - Manual Update Protocol

Step 1: Always Backup First

Before any theme update, create a complete backup of your custom settings:

# Ghost CLI method to export settings
ghost config get paths.content

Step 2: Maintain Consistent Naming

# CORRECT: Keep the same name
my-theme-v1.0.0.zip → my-theme-v1.0.1.zip
INCORRECT: Name changes trigger settings reset
my-theme-v1.0.0.zip → my-theme-updated.zip

Step 3: Update Protocol

  • Extract the current theme from Ghost Admin
  • Make your changes locally
  • Verify package.json name remains unchanged
  • Zip with the same filename
  • Upload to Ghost Admin
  • Confirm the "Overwrite" prompt (not "Activate")

Method 2: The Developer's Choice - GitHub Deployment

Setting Up Automated Deployment

GitHub Actions provide the most reliable method for theme updates while preserving settings. Here's a complete workflow:

# .github/workflows/deploy-theme.yml
name: Deploy Ghost Theme
on:
  push:
    branches: [main]

Benefits of GitHub Deployment

  • Zero file naming errors - Consistent theme name maintained
  • Version control - Track all theme changes
  • Automated backups - Every change saved in Git history
  • Rollback capability - Revert to any previous version
  • Collaboration - Multiple developers can work safely

Method 3: The Safety Net - Settings Export/Import

Export Your Current Settings

Before any theme update, export your custom settings:

// In Ghost Admin browser console
// Access: Settings → Design → Open browser console
localStorage.getItem('ghost:config');

Create a Settings Backup Script

// save-theme-settings.js
const currentSettings = {
  navigation_bg_color: '#ffffff',
  accent_color: '#0066cc',
  font_family: 'Inter',
  header_layout: 'centered'
};

Restore Settings When Needed

If settings do get lost, you can restore them manually or use Ghost's API:

# Using Ghost Admin API
curl -X POST "https://your-site.com/ghost/api/v3/admin/themes/" \
  -H "Authorization: Ghost $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"theme":"my-theme","config":YOUR_SETTINGS_JSON}'

Advanced Troubleshooting: When Things Go Wrong

Scenario 1: "Activate" Instead of "Overwrite"

If you see the Activate Theme prompt instead of Overwrite Theme, Ghost recognizes this as a new theme.

Immediate Fix: 1. Cancel the upload 2. Check your zip filename and package.json name 3. Ensure they match exactly 4. Re-upload with consistent naming

Scenario 2: Settings Already Lost

If you accidentally activated a renamed theme:

Recovery Process:

  • Re-activate your original theme in Ghost Admin → Settings → Design 2. Your settings will return (they're still in the database)
  • Upload the updated theme with consistent naming
  • Choose "Overwrite" to preserve settings

Scenario 3: Version Conflicts

When working with theme versions:

// Good practice - update version, keep name
{
  "name": "my-theme", // Always the same
  "version": "1.0.1", // Update version
  "author": "Your Name"
}

Best Practices for Theme Developers

1. Document Your Settings

Create a theme-settings.md file in your theme:

# My Theme Settings Guide
Default Configuration
Navigation Background: #ffffff
Accent Color: #0066cc
Font Family: Inter
Header Layout: Centered
Customization Notes
Colors use CSS variables for easy theming
Fonts are self-hosted for consistency

2. Use CSS Variables

Make settings more maintainable with CSS variables:

:root {
  --navigation-bg: #ffffff;
  --accent-color: #0066cc;
  --primary-font: 'Inter', sans-serif;
}
/ Usage /
.navigation {
  background-color: var(--navigation-bg);
}

3. Implement Fallback Values

Always provide fallback values in your Handlebars templates:

{{#if @custom.accent_color}}
  <style>
    .accent { color: {{@custom.accent_color}}; }
  </style>
{{else}}
  <style>
    .accent { color: #0066cc; } / Fallback /
  </style>
{{/if}}

Real-World Example: Complete Update Workflow

Before Update

# 1. Check current theme info
ghost ls
2. Export current theme
ghost export themes
3. Download and extract
unzip my-theme-current.zip -d theme-backup/

Making Changes

# 4. Edit theme files
cd theme-backup/
Make your customizations...
5. Verify package.json consistency
cat package.json | grep '"name"'
Output should be: "name": "my-theme"
6. Package with same name
zip -r my-theme.zip .

After Update

# 7. Upload to Ghost Admin
Choose "Overwrite" when prompted
8. Verify settings preserved

Performance Considerations

Database Optimization

Frequent theme updates can impact database performance:

  • Recommendations:
  • Batch updates instead of frequent small changes
  • Clean up unused theme versions
  • Monitor database size regularly

Asset Optimization

When updating themes, optimize assets:

# Compress images before upload
find assets/images/ -name "*.jpg" -exec jpegoptim {} \;
find assets/images/ -name "*.png" -exec optipng {} \;
Minify CSS/JS
npm run build  # If your theme has a build process

Version Control Integration

Git Workflow for Themes

# Initialize theme repository
git init
echo "node_modules/" > .gitignore
echo "*.zip" >> .gitignore
First commit
git add .
git commit -m "Initial theme setup"
Branch for development
git checkout -b development
Make changes...
git commit -m "Update theme styling"
Merge to main for production
git checkout main
git merge development
git tag v1.0.1

Semantic Versioning

Use semantic versioning for theme updates:

  • Major (1.0.0): Breaking changes, settings structure changed
  • Minor (1.1.0): New features, backward compatible
  • Patch (1.0.1): Bug fixes, small improvements

Common Pitfalls and Solutions

Pitfall 1: Case Sensitivity

# Different (Linux systems are case-sensitive)
My-Theme.zip ≠ my-theme.zip
Solution: Always use lowercase
my-theme.zip = my-theme.zip

Pitfall 2: Special Characters

# Problematic
my theme v1.0.zip  # Space character
my-theme-v1.0.zip  # Clean

Pitfall 3: Hidden Files

# Check for hidden files before zipping
ls -la
Exclude unwanted files
zip -r my-theme.zip . -x ".DS_Store" ".git*"

Conclusion: Mastering Ghost Theme Updates

Preserving Ghost theme settings during updates isn't complicated—it just requires understanding how Ghost manages theme identity and following consistent procedures.

Key Takeaways:

  • Consistent naming is everything - Same filename and package.json name
  • GitHub deployment is the gold standard - Automated, version-controlled, safe
  • Always backup before updating - Prevention is better than cure
  • Test in staging - Never update production without testing
  • Document your process - Create repeatable workflows

By following these advanced techniques, you'll never lose your Ghost theme customizations again. Your design settings will remain intact through countless updates, allowing you to focus on creating great content rather than troubleshooting theme issues.