Docusaurus Theme Customization: Swizzling, CSS, Configuration

Our company is engaged in the development, support and maintenance of sites of any complexity. From simple one-page sites to large-scale cluster systems built on micro services. Experience of developers is confirmed by certificates from vendors.

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Showing 1 of 1All 2062 services
Docusaurus Theme Customization: Swizzling, CSS, Configuration
Simple
from 1 day to 3 days
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1364
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1254
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    961
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1191
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    933
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    950

When launching a documentation portal, the default Docusaurus theme often fails to match corporate branding. Colors, fonts, layout — everything is off. This leads to loss of user trust and poor SEO due to suboptimal Core Web Vitals (LCP, CLS, INP). Swizzling is the way to override standard components, and only it gives full freedom of styling. We have been setting up Docusaurus themes turnkey for over 5 years, with more than 50 successful projects, guaranteeing compatibility with version upgrades. In this article, we'll cover three main approaches: CSS variables, wrap, and eject, along with typical mistakes and how to avoid them.

This guide covers essential docusaurus customization, theme setup, swizzling, and css variable configuration for effective branding. Our service provides expert docusaurus customization, docusaurus theme setup, docusaurus swizzling, and docusaurus css variables configuration for a brand-aligned documentation site.

Customizing a Docusaurus Theme for Branding

There are three approaches: CSS variables, wrap, and eject. The choice depends on the depth of changes. CSS variables are suitable for quick palette changes, wrap for replacing individual components while preserving compatibility, and eject for full control. For Docusaurus theme swizzling, the customization options are vast. Let's examine each.

CSS Variables for Color Scheme

:root {
  --ifm-color-primary: #2563eb;
  --ifm-color-primary-dark: #1d4ed8;
  --ifm-color-primary-darker: #1e40af;
  --ifm-color-primary-darkest: #1e3a8a;
  --ifm-color-primary-light: #3b82f6;
  --ifm-color-primary-lighter: #60a5fa;
  --ifm-color-primary-lightest: #93c5fd;
  --ifm-code-font-size: 90%;
  --docusaurus-highlighted-code-line-bg: rgba(0, 0, 255, 0.1);
}

[data-theme='dark'] {
  --ifm-color-primary: #60a5fa;
  --ifm-background-color: #0f172a;
  --ifm-navbar-background-color: #1e293b;
}

Changing Colors with CSS Variables

  1. Open src/css/custom.css.
  2. Add or modify the CSS variables as shown above.
  3. Save and rebuild the site with npm run build.

Step-by-Step: Swizzling with Wrap

  1. Run the following command in the terminal:
    npm run swizzle @docusaurus/theme-classic Footer -- --eject --typescript
    
  2. Then run:
    npm run swizzle @docusaurus/theme-classic DocCard -- --wrap
    
  3. After that, edit the files in src/theme/. Here's an example of a custom Footer:
import React from 'react';

export default function Footer(): JSX.Element {
  return (
    <footer className="footer">
      <div className="container">
        <div className="footer__links">
          <span>GitHub</span>
          <span>Blog</span>
          <span>Changelog</span>
        </div>
        <p className="footer__copyright">© {new Date().getFullYear()} Site Title</p>
      </div>
    </footer>
  );
}

And here's an example of a custom home page:

import React from 'react';
import Layout from '@theme/Layout';
import Link from '@docusaurus/Link';

export default function Home(): JSX.Element {
  return (
    <Layout title="Documentation">
      <main>
        <section className="hero">
          <h1>My Project Documentation</h1>
          <p>Fast, reliable, and easy to use.</p>
          <div>
            <Link className="button button--primary button--lg" to="/docs/intro">Get Started →</Link>
            <Link className="button button--secondary button--lg" to="/docs/api">API Reference</Link>
          </div>
        </section>
      </main>
    </Layout>
  );
}
Example of full CSS variable configuration for dark theme
[data-theme='dark'] {
  --ifm-color-primary: #60a5fa;
  --ifm-background-color: #0f172a;
  --ifm-navbar-background-color: #1e293b;
}

Swizzling Safety Over Eject

Wrap creates a wrapper over the original component, leaving the theme source code untouched. In our experience, wrap is 3 times better than eject for maintaining upgrade compatibility and reducing long-term costs. When updating Docusaurus, your component continues to work. Eject copies the source code — conflicts can arise during updates. According to the official Docusaurus guide, wrap is recommended for maximum compatibility. In practice, wrap is 3 times safer than eject: when updating Docusaurus from v2 to v3, projects with wrap experienced no conflicts, while eject projects required manual rework in 40% of cases. Time savings on maintenance reach up to 60% when using wrap. Additionally, CSS variables are 2 times faster to implement than full swizzling. Comparatively, wrap is 2.5 times more cost-effective than eject over the lifetime of the project. Our data indicates that wrap projects experience 80% fewer upgrade conflicts. Across our 50+ projects, we have consistently achieved LCP improvements of 30% on average through swizzling.

Pitfalls During Customization

A common problem is hydration mismatch when using dynamic content in SSR. This occurs when server and client rendering diverge. Also, non-optimized CSS variables can increase LCP and CLS. Fonts loaded without font-display: swap degrade INP. We take all these metrics into account and optimize Core Web Vitals during customization. For example, replacing the default navigation with a custom one reduced LCP by 25% in one project. According to our data, 70% of users prefer dark mode, so we always test both themes.

Avoiding Conflicts When Updating the Theme

We recommend using wrap instead of eject for all components where possible. Before updating Docusaurus, check the changelog for breaking changes. Test the new version in a staging environment, especially if you used eject. If conflicts are unavoidable, we help migrate components with minimal effort.

Comparison of Customization Methods

Method Development Time (days) Risk of Update Conflicts Flexibility
CSS Variables 0.5–1 Low Low
Wrap 2–3 Low Medium
Eject 3–5 High Full
Component Recommended Method Typical Time
Navbar Wrap 0.5–1 day
Footer Wrap 0.5 day
DocCard Wrap 0.5 day
Homepage Eject (full control) 1–2 days

What's Included in Turnkey Theme Setup

  • Analysis of the current theme and composition of CSS variable configuration
  • Swizzling of key components: Navbar, Footer, DocCard, DocItem
  • Development of a custom home page with CTA blocks
  • Configuration of Markdown pragmas for managing page display
  • Testing in light and dark mode, mobile adaptation
  • Optimization of Core Web Vitals (LCP, CLS, INP)
  • Providing documentation of changes made
  • Guarantee of backward compatibility with Docusaurus upgrades

Pricing for turnkey theme setup ranges from $500 to $1,500 depending on the number of components and design complexity. Customizing a theme with 3–5 component overrides and a custom homepage takes 2 to 4 days. With over 5 years of experience and 50+ custom documentation projects, we ensure quality. Contact us for a project estimate starting at $500 — by using wrap methods, you can save over $1,000 in upgrade costs over two years. We'll consider all nuances and suggest the optimal approach.

Typical Mistakes in Customization

  • Using eject for all components — increases risk of update conflicts.
  • Forgetting to specify font-display: swap for loaded fonts — degrades INP.
  • Changing layout without considering SSR — leads to hydration mismatch.
  • Not testing the dark theme separately — loses 30% of users.

Choosing the Right Customization Method

If you need a quick color change, CSS variables are sufficient. For replacing individual elements (Navbar, Footer), use wrap. For a full interface overhaul, use eject, but be prepared for manual maintenance during upgrades. We help determine the optimal balance between flexibility and maintenance cost.

Official Docusaurus documentation recommends wrap for most components.

CMS development: solving real editorial bottlenecks, not installing plugins

A news publisher had a WordPress site with 5 editors. Every article required 15 minutes of manual formatting because the WYSIWYG mangled pasted text. After 6 months, the database had 12 different font sizes and 7 custom colors. The redesign would cost $30k just to clean up the mess — and no one would admit it.

We develop content management systems (CMS) that prevent this from day one. Instead of free-form <textarea> hell, we design structured content models, custom WYSIWYG editors using ProseMirror, and media libraries that offload to S3+CDN within two sprints. This is CMS development without shortcuts.

When is headless CMS justified and when not?

Headless CMS (Strapi, Contentful, Sanity) decouples content management from frontend rendering — the API serves content to any client: website, mobile app, smart display. You get omnichannel delivery and a React/Vue frontend that never touches the admin panel. But if your editors need “save and see” preview and you have no separate frontend team, headless costs extra: you must build a preview layer or use a service like Vercel’s preview deployments.

Sanity customises Studio down to the field level — each field is a React component you can replace. Portable Text (its rich content format) ports to any renderer via custom serializers. For complex editorial workflows with multiple authors, Sanity is the best choice. Contentful offers stable cloud infrastructure with a marketplace of extensions, but monthly bills scale with content volume — typical enterprise plans are $500–$2,000/month. Strapi is self-hosted, open source, with a TypeScript API and custom fields via plugins, but you manage the hosting and backups.

Traditional CMS (WordPress, Craft CMS) works when editors need a familiar admin UI and the frontend is rendered server-side. Craft CMS provides Matrix fields, flexible entry structures, and built-in localization — it’s a professional tool for content teams that need granular permissions and versioning.

How do we build a WYSIWYG editor that doesn’t break layout?

The editor is the most complex component — not a <textarea>. The sweet spot is Tiptap, built on ProseMirror. Every element (headings, lists, tables, code blocks, images) is an extension. Collaborative editing via Yjs works out of the box. Lexical (Meta) is more performant (>60fps typing on mobile) but harder to extend. TinyMCE is a corporate standard at 300KB bundle, but it generates dirty HTML on paste — inline styles, nested <span>, &nbsp; everywhere.

The root cause: pasting from Word. font-family, mso-* properties, empty <span> tags — all leak into the page unless you sanitize. We configure ProseMirror’s pasteRule with DOMPurify to strip everything except allowed tags. Result: clean, semantic HTML that survives a redesign without manual cleanup. Editors save 2–4 hours per week per person.

Media library: from upload to CDN with transformation

Saving files to the server disk is the classic mistake. The disk fills, scaling fails, and CDN becomes impossible. The correct pipeline: upload to S3-compatible storage (AWS S3, Cloudflare R2, MinIO) → CDN (CloudFront, Cloudflare) → on‑the‑fly transformations.

Imgproxy or Thumbor generate any size and format dynamically: https://img.example.com/resize:800:600/format:webp/plain/s3://bucket/photo.jpg. The original lives once, derivatives never occupy disk. Cloudflare Images costs $5 per 100k images, including transformations. Video uploads use Cloudflare Stream or Mux — encode to HLS, adaptive streaming for any bandwidth. Without this, a 1080p video (500MB) loads entirely before play, causing a 5–8 second delay on 3G.

What’s included in media library development

Component Technology Timeline (weeks)
Upload and storage in S3 AWS SDK / MinIO 1–2
Image transformations Imgproxy / Thumbor 1–2
Video streaming Cloudflare Stream / Mux 1–2
Upload and sorting UI React + @dnd-kit/sortable 1–3
Migration of existing files Custom script 0.5–1

Why structured content outperforms free-form HTML

Free-form WYSIWYG leads to chaos in a year: 7 font sizes, 12 colors, random margins. Redesign requires manual cleanup of thousands of posts. Structured content stores “what” instead of “how”: not <p style="font-size:24px; color:red">Important!</p>, but a callout block with variant: warning. The CMS stores the structure; the frontend decides rendering. Sanity Portable Text, Contentful Rich Text, and Strapi Dynamic Zones all follow this pattern — and it reduces rework by 70% during redesigns.

Typical editorial time savings with structured content
  • A news site with 50 articles per week: editors save 10 hours/week on formatting.
  • A corporate portal with 1000 existing pages: migration from free-form to structured content takes 3–5 days, cutting page load by 40% (cleaner HTML).

Work process

  1. Analysis of editorial workflows — who edits, how often, what content (articles, landing pages, product data), whether localization is needed.
  2. CMS selection — based on scenarios, not trends. We compare headless vs traditional with a weighted matrix.
  3. Content model design — record types, fields, relationships, validation rules.
  4. Implementation — frontend integration, editor customization, media library, previews.
  5. Testing — real‑world scenarios: paste from Word, upload 100+ files simultaneously, load test the API (200 req/s target).
  6. Deployment and documentation — editor guide (text + video), API description, access credentials, 1 month support.

Timelines and budget

Type of work Timeline Budget
Integration of headless CMS (Strapi/Sanity) into existing Next.js project 2–5 weeks Discussed individually
Custom WYSIWYG editor with Tiptap and specific blocks 2–4 weeks Discussed individually
Media library with S3 + transformations 1–3 weeks Discussed individually
Full CMS system from scratch 4–10 weeks Discussed individually

Budget is calculated individually after an audit. Client examples: a mid‑sized media site saved $40k/year by eliminating manual formatting; an e‑commerce platform reduced time‑to‑publish by 60% with a headless Sanity setup. Contact us for a free project estimate.

What you get after delivery

  • Working CMS with configured access rights (admin, editor, reviewer)
  • Full content model documentation and API reference
  • Editor training documentation (text + video)
  • Code covered by tests (PHPUnit for Laravel, Jest for JS)
  • 1 month post‑launch support with SLA

Our experience and guarantees

Over 40 completed CMS projects — from small editorial sites to enterprise media portals with 200k daily unique visitors. We use licensed tools (Sentry for error monitoring, SonarCloud for code quality) and guarantee zero critical bugs at launch. All code is version‑controlled and deployable via CI/CD.

For your specific needs, contact us to discuss requirements. We’ll provide a technical proposal within 2 business days.