BuddyX

16 min read · 3,232 words

BuddyX Without Kirki: The Essential 5.1.0 Customizer Guide

BuddyX 5.1.0 Customizer Framework replacing Kirki - card-style featured image

BuddyX 5.1.0 is the biggest structural update the theme has had since launch. Most of the change is invisible on the surface, but it runs through the part of the theme every site owner touches regularly: the WordPress Customizer. We replaced the third-party Kirki library that BuddyX had relied on for years with a self-contained Customizer Framework the theme now owns end to end. If you are an existing BuddyX site owner, your saved colors, fonts, and layout choices come through untouched. If you are customizing BuddyX for the first time, you get a faster, cleaner customizer with a modern token-based color system underneath.

This guide walks through what changed, why we made the switch, how to orient yourself in the new panel structure, what the upgrade means for child themes and custom CSS, and what you need to check before and after updating.


Why we dropped Kirki in 5.1.0

Kirki has been a popular open-source toolkit for extending the WordPress Customizer. For years it gave BuddyX a solid set of custom controls - color pickers, typography fields, dimension sliders, and more - without us having to write and maintain that control layer ourselves. That was the right call for a long time.

In late 2025 the Kirki project changed direction. It rebranded as a page-builder plugin, which meant the dependency BuddyX had been bundling inside the theme was no longer the lightweight, focused controls library it used to be. The new roadmap pointed somewhere different from ours. Shipping the new version of Kirki inside BuddyX would have meant adding significant weight to the theme for features that have nothing to do with customizer controls.

We could have pinned to an older version of Kirki and maintained that pin indefinitely, but that path leads to compatibility problems over time as WordPress core evolves. The better option was to own the layer completely.

The performance case is straightforward: removing a large external dependency that was loading scripts, styles, and a full Google Fonts catalog on every customizer open reduces the weight the admin carries. The new framework loads only what the customizer actually needs for the controls BuddyX uses. The Google Fonts picker is still there, with all 1,358 families searchable, but the catalog is loaded on demand by the in-house typography control rather than bundled unconditionally by a third-party library.

Beyond performance, owning the framework gives us full control over how every control behaves in future releases. When we need to extend a color picker, fix a live-preview issue, or add a new field type, we change one file in the theme rather than waiting on an upstream project that is now focused on something else.


The new Customizer Framework: what it is and how it works

The BuddyX 5.1.0 Customizer Framework lives in inc/Customizer_Framework/ inside the theme. It is 19 PHP files that cover everything Kirki provided for BuddyX, plus the extensions we needed and could not easily get from a generic library.

The public API is intentionally shaped like Kirki’s so that any code written against the old setup reads naturally against the new one:

\BuddyX\Buddyx\Customizer_Framework\Panel::add( $id, $args );
\BuddyX\Buddyx\Customizer_Framework\Section::add( $id, $args );
\BuddyX\Buddyx\Customizer_Framework\Field::add( $type, $args );

The framework ships 20 field types covering everything BuddyX’s customizer used under Kirki: color, typography, background, dimension, switch, checkbox, slider, radio_image, radio_buttonset, custom, repeater, sortable, upload, image, text, textarea, url, select, radio, and dropdown-pages. Every field type BuddyX ever used maps directly to a framework type. Nothing was dropped.

The framework also ships 12 custom control classes that correspond to the richer field types. These replace the Kirki-provided controls with theme-owned equivalents that share no code with the old library. The typography control in particular got a substantial upgrade: it now uses a five-row paired layout, exposes three properties that were previously hidden (font-style, text-align, text-decoration), and includes a fully searchable Google Fonts picker that shows all 1,358 families without relying on Kirki’s bundled catalog.

How settings are preserved on upgrade

The most important thing to understand about the Customizer Framework is what it does to your existing settings: nothing. Zero database migration. Every theme_mod your site has saved - colors, typography choices, layout options, header settings, all of it - continues to work byte for byte after the update.

This works because the framework was built with a specific constraint: setting IDs cannot change. The atomic field migration from Kirki to the framework kept every 'settings' argument verbatim. When WordPress calls get_theme_mod( 'site_primary_color' ), it gets back exactly the same value it always did, because the setting ID is the same and the sanitization callback produces the same output shape.

Two normalizations handle some of Kirki’s quirks at read time without touching the database. Older Kirki versions used variant as the typography weight key; the framework normalizes this on read. Switch and checkbox controls that Kirki stored as 'on', 'off', true, or false are handled by a buddyx_is_truthy() helper that accepts every form Kirki might have saved. Your customizer looks exactly as you left it.


A tour of the new panel structure

The panel and section layout in BuddyX 5.1.0 follows a semantic structure that maps to how site owners actually think about their site’s design. Here is the full topology:

  • General panel - Site Layout, Site Loader, and Page Mapping sections
  • Typography panel - Site Title, Headings, Menu, and Body sections
  • Site Header - standalone section for header controls
  • Site Sub Header - standalone section
  • Site Skin - the new token-based color system section (45 fields in the free theme)
  • Site Blog - blog layout and display controls
  • Site Sidebar - sidebar position and layout
  • WP Login panel - login page branding
  • Community Settings panel - BuddyPress integration controls, visible only when BuddyPress is active
  • Site Footer panel - Footer Section and Copyright Section
  • Site Performance - standalone section for performance options

If you used the customizer under BuddyX 5.0.x, this layout will feel familiar. Section IDs are unchanged, so deep-links you bookmarked to specific customizer sections still work. The visible ordering is the same because every section already specified its own priority in the old setup.

Site Skin: the token-based color system

Site Skin is the biggest visible change for most site owners. Instead of color fields scattered across a dozen separate sections, BuddyX 5.1.0 organizes all color control into one place with nine navigable clusters: Mode and Master, Brand, Header and Surfaces, Text and Links, Headings, Buttons, Footer, and Copyright.

Under the hood, Site Skin works through a CSS custom property system. The inc/Tokens/Component.php file reads your customizer settings and emits a single :root { ... } block with --bx-color-* tokens. Every color in the theme reads from those tokens. Change one setting in the Brand cluster, and every surface that uses your brand color - buttons, links, active states, focus rings - updates in one step.

Each base color you set generates a full family of nine derived tokens automatically: the base value, an RGB triplet for composing with transparency, hover, active, and focus states, a background tint, a stronger background, a border weight, a disabled state, and an inverse. You set one hex value; the theme handles the rest without custom CSS.

Style variations

BuddyX 5.1.0 ships eight color style variations: cool, dark, editorial, minimal, monochrome, pastel, vibrant, and warm. Each is a palette preset that feeds into the token system. When you select a variation, it supplies a base palette that your customizer settings can then override. Your saved values always win - the variation is the starting point, not a lock.

Dark mode and the color mode toggle

The color mode system ships three modes: light, dark, and auto. The auto mode follows the visitor’s system preference. A sun/moon/monitor toggle button in the header lets visitors choose their preferred mode, and the choice persists in local storage as they navigate.

A small bootstrap script runs at wp_head priority 1, before the page renders, to set data-bx-mode on the <html> element from local storage. This prevents the flash of incorrect color mode on load - dark mode pages come up dark from the first paint, with no visible switch after the page appears.


What happens to your existing customizer settings on upgrade

The short answer: nothing changes. The longer answer is worth understanding so you can verify it yourself after updating.

BuddyX 5.1.0 performed a 73-field parity check across all color settings during development - every field was verified to save the same value shape under the new framework as it did under Kirki. Color fields still save as #RRGGBB strings (or rgba(...) when alpha is enabled). Typography fields still save as a keyed array with font-family, font-size, font-weight, and related keys. Background fields still save the same 6-key composite array.

The framework’s Active_Callback component preserves Kirki’s loose-equality semantics, so conditional fields that depended on 'on' == 1 evaluating to true still behave correctly. The Output_Builder reads the same output array shape Kirki used and renders the same inline CSS block, so any CSS the theme was generating from your settings continues to generate identically.

A few default values changed for fresh installs: the Site Loader now defaults to off (it was previously on), the Sub Header background defaults to empty (for better dark-mode neutrality), and the base font defaults to Inter rather than Open Sans for new installs. None of these affect saved values - if you have a value saved for any of these settings, your saved value wins.

Legacy color aliases from the 5.0.3 variable names are preserved for the palette configuration and any third-party CSS that referenced those variable names directly. They are scheduled for removal in 5.3.0, giving you a clear window to migrate any custom code at your own pace.


Child themes and custom CSS: what you need to update

If you run a BuddyX child theme or have custom CSS that overrides theme colors, there are two scenarios to check.

Scenario 1: custom CSS using old CSS variable names

BuddyX 5.0.x emitted color variables with a different naming scheme. In 5.1.0, the canonical variable names follow the --bx-color-* token system. If your custom CSS or child theme stylesheets reference the old variable names, check whether your overrides still apply after updating. The legacy aliases mean most things will keep working, but if you wrote CSS targeting a specific old variable name that has no alias, you will need to update that reference.

The practical check is straightforward: open your site after updating, look at the areas your custom CSS targets, and verify they appear as expected. Browser devtools will show you which variables are resolving and which are undefined.

Scenario 2: overriding a customizer setting in a child theme

Child themes often override default customizer values or hook into the customizer to add fields. The way to override a default setting value in BuddyX 5.1.0 is via the theme_mod_<setting_id> filter, which lets you supply a different default without touching the parent theme or the database:

add_filter( 'theme_mod_site_primary_color', function( $value ) {
    // Return child theme default only when no value has been saved yet.
    if ( empty( $value ) ) {
        return '#E04B4B';
    }
    return $value;
} );

You can also override a --bx-color-* token directly in your child theme’s stylesheet when you want to hard-code a value that should not be changeable through the customizer. Because the token system emits variables on :root, a child theme rule with higher specificity or a later source order can override any token:

/* In your child theme's style.css */
:root {
    --bx-color-brand: #2D6CDF;
    --bx-color-brand-hover: #1A57CC;
}

This approach is clean and upgrade-safe. You are overriding the token at the variable level, so it cascades through every surface that reads from that token without you needing to find and override each individual selector. The Output_Builder emits its block before your child theme stylesheet loads, so child theme overrides win in the cascade without !important.

If your child theme added its own customizer fields using the Kirki API directly (via \Kirki\Field\Color::add() or similar), those calls will break in 5.1.0 because Kirki is no longer present. Migrate them to the BuddyX framework API:

// Old (Kirki):
\Kirki\Field\Color::add( [
    'settings' => 'my_child_color',
    'section'  => 'site_skin_section',
    'label'    => 'My Brand Color',
    'default'  => '#333333',
] );

// New (BuddyX Customizer Framework):
\BuddyX\Buddyx\Customizer_Framework\Field::add( 'color', [
    'settings' => 'my_child_color',
    'section'  => 'site_skin_section',
    'label'    => 'My Brand Color',
    'default'  => '#333333',
] );

The field arguments are identical. Only the class changes. Panel and section registration follows the same pattern - replace new \Kirki\Panel( with \BuddyX\Buddyx\Customizer_Framework\Panel::add( and the argument array stays the same.


Performance impact of removing Kirki

Removing a large third-party dependency always has a performance effect, and it is worth being honest about what that means in practice rather than citing numbers that depend on server configuration.

The most direct impact is on admin-side performance in the customizer. Kirki loaded its own set of JavaScript and CSS assets on every customizer open, including code paths and UI patterns the BuddyX build never used. The new framework loads only the scripts the 20 control types BuddyX actually ships require - nothing more. The customizer panel opens faster on slower hosting because the asset weight is lower.

On the front end, the change is smaller but real. Kirki emitted CSS through its own output pipeline, which added a JavaScript-driven style injection step on some configurations. The BuddyX Output_Builder emits a standard <style> block on wp_head with no JavaScript dependency. The page can apply your customizer CSS without waiting for any script to execute.

The Google Fonts loader shift matters too. Kirki’s typography control loaded metadata for all 1,500+ Google Fonts families on every customizer open, regardless of how many fonts you actually used. The BuddyX inc/Fonts/Component.php scans only the 12 typography settings your site has saved, skips the self-hosted families (Inter, Newsreader, system fonts), and fetches only the Google Fonts your theme actually needs. Sites that use only the bundled Inter and Newsreader fonts make no Google Fonts request at all.

The TGMPA plugin recommendation library that BuddyX previously bundled to suggest installing Kirki is also gone. TGMPA added a small admin overhead on every page load to check whether its recommended plugins were present. With Kirki removed and no replacement dependency to recommend, TGMPA goes with it.


Upgrade checklist

Before you update a live site to BuddyX 5.1.0, work through this list. The upgrade is designed to be uneventful, but these checks will catch the edge cases that matter for your specific setup.

  • Test on staging first. Copy your live site to a staging environment and run the update there. Verify your customizer settings, your color choices, and your typography all appear correctly before touching production.
  • Check your child theme for direct Kirki API calls. Search your child theme’s PHP files for \Kirki\. Any hits need to be updated to the BuddyX framework equivalents before updating the parent theme.
  • Check custom CSS for old variable names. In the WordPress Customizer under Additional CSS, and in any child theme stylesheets, look for CSS variables referencing the old naming scheme. Most will resolve via legacy aliases, but verify the output looks correct.
  • Open the customizer and check each panel. After updating, open the WordPress Customizer and click through each panel section. Verify your saved colors appear in the Site Skin section, your typography choices appear in the Typography panel, and header and footer settings look right.
  • Test dark mode if you were using it. If your previous setup had any dark mode customization, verify it still applies. The new token system has a defined dark mode layer that may interact differently with heavily customized setups.
  • Verify BuddyPress-connected areas. If your site runs BuddyPress, check the member profiles, activity feed, and groups pages. The BuddyPress integration fields live in the Community Settings panel and should carry through, but visual confirmation on a real profile page is worth the two minutes it takes.
  • Check plugin compatibility stylesheets. Third-party plugins that enqueue their own stylesheets referencing BuddyX variables may need updates if they used old variable names directly rather than the published theme variables. WooCommerce, LearnDash, and the officially supported BuddyX plugins (through the Wbcom compatibility layer) were updated alongside 5.1.0.

The full technical announcement, including the complete list of what changed in the free theme and BuddyX Pro, is on the Wbcom Designs blog. It covers the Pro-specific features - the unified Page Settings panel, the Header Style picker, and the rebuilt blog panel - that are outside the scope of this guide.


What this means for your community site going forward

BuddyX is primarily a community theme. Whether you are running an online community from scratch or extending an established BuddyPress installation, the customizer is the tool you use to make the site feel like yours rather than a generic template.

The 5.1.0 framework change makes the customizer more reliable for that work. The controls you use - colors, typography, header layout, BuddyPress integration settings - are now in code the BuddyX team owns and maintains. When a WordPress update changes how the Customizer API works, we fix it in the framework. When we want to add a new control type or improve live preview behavior, we do it without waiting on an external project. The community-specific settings panel - the one that appears when BuddyPress is active and exposes integration controls - benefits from the same reliability. For a practical guide to working with BuddyPress member profiles and activity configuration within BuddyX, the BuddyPress Member Profiles guide covers the BuddyPress side of the setup in detail.

Site Skin and the token system also change what “customizing BuddyX” means in practice going forward. In previous versions, getting consistent colors across the BuddyPress activity stream, a WooCommerce product page, a LearnDash course, and your standard blog pages required setting colors in several different places and hoping they aligned. With Site Skin, those surfaces all read from the same token layer. Set your brand color once, and it flows through everything the theme touches. That consistency matters on a community site where members spend time navigating between very different types of content.

The dark mode addition is similarly meaningful for community sites. Communities often have members logging in at different hours, on different devices, in different lighting. A native dark mode that follows system preferences and persists per-user without a plugin is the kind of detail that members notice and appreciate, especially on sites with active evening engagement.


Summary

BuddyX 5.1.0 replaces Kirki with an in-house Customizer Framework that the theme owns completely. The change is invisible for most site owners - your settings survive the upgrade byte for byte. The visible benefits are a faster customizer, a cleaner color workflow through Site Skin, native dark mode with no flash on load, and a foundation the BuddyX team can build on without dependency constraints.

For child theme developers and anyone with custom CSS that references theme variables, the upgrade checklist above covers what to verify. The main action item is checking for direct Kirki API calls in child theme code and migrating them to the framework API - the argument shapes are identical, so it is a namespace change more than a rewrite.

Update on staging first, verify your customizer panels, and check any custom code for old variable names. The final 5.1.0 release is available through the standard WordPress theme update flow.

Reading
16 min · 3,232 words
Published
Jun 4, 2026
Varun Dubey
BuddyX contributor

Writing about WordPress communities, BuddyPress, BuddyBoss, LMS plugins, and the business of paid communities.

Keep reading

More from the BuddyX blog

Browse all posts on community, WordPress, BuddyPress and the studio of plugins behind BuddyX.