UIKit Customization

social.plus UIKit offers three levels of customization to match your needs. Choose the right approach based on how much control you need over the user interface.

Choose Your Customization Level

Start simple and scale up: Begin with Dynamic UI for quick brand consistency, move to Component Styling for deeper control, or Fork & Extend when you need complete customization freedom.

1. Dynamic UI

Perfect for teams who want to quickly customize colors, text, and basic styling without writing any code. Best for: Quick launches, MVPs, brand consistency, teams without deep frontend expertise.

2. Component Styling

For teams who need deeper styling control while staying within the UIKit framework. Best for: Custom brand experiences, unique styling requirements, teams with frontend expertise.

3. Fork & Extend

For teams who need complete control over components and user flows. Best for: Complex custom requirements, existing app integration, teams with strong development resources.

When to Fork & Extend

Consider forking when you need:
  • Custom user flows that don’t exist in UIKit
  • Integration with complex existing systems
  • Unique layouts that can’t be achieved with styling
  • Complete control over the development roadmap

🚀 Quick Start

Basic Configuration

Get started with customization using a simple config.json file:
{
  "preferred_theme": "light",
  "theme": {
    "light": {
      "primary_color": "#1054DE",
      "secondary_color": "#292B32",
      "background_color": "#FFFFFF",
      "text_color": "#000000"
    },
    "dark": {
      "primary_color": "#1054DE",
      "secondary_color": "#292B32",
      "background_color": "#191919",
      "text_color": "#FFFFFF"
    }
  }
}

Apply Configuration

import { UIKitProvider } from '@socialplus/uikit-react';
import config from './config.json';

function App() {
  return (
    <UIKitProvider config={config}>
      {/* Your app components */}
    </UIKitProvider>
  );
}

🎯 Customization Levels

1. Global Theme

Apply consistent styling across all components:
{
  "theme": {
    "light": {
      "primary_color": "#1054DE",
      "secondary_color": "#292B32",
      "base_color": "#292b32",
      "base_shade1_color": "#636878",
      "base_shade2_color": "#898e9e",
      "base_shade3_color": "#a5a9b5",
      "base_shade4_color": "#ebecef",
      "alert_color": "#FA4D30",
      "background_color": "#FFFFFF"
    }
  }
}

2. Component-Specific Customization

Target specific components or pages:
{
  "customizations": {
    "social_feed/*/*": {
      "page_theme": {
        "light_theme": {
          "primary_color": "#FF6B6B",
          "background_color": "#F8F9FA"
        }
      }
    },
    "chat_conversation/*/*": {
      "title": "Messages",
      "show_avatar": true,
      "message_bubble_style": "rounded"
    }
  }
}

3. Element-Level Control

Fine-tune individual UI elements:
{
  "customizations": {
    "social_feed/*/post_item": {
      "border_radius": 12,
      "shadow_enabled": true,
      "padding": 16
    },
    "chat_conversation/*/send_button": {
      "background_color": "#1054DE",
      "icon_color": "#FFFFFF",
      "size": "large"
    }
  }
}

🌟 Dynamic UI

Real-time Customization

Update your app’s appearance without releasing new versions:
1

Configure Dynamic UI

Enable Dynamic UI in your social.plus console dashboard
2

Sync Configuration

Call the sync method in your app to fetch latest customizations
3

Apply Changes

UIKit automatically applies the new configuration
4

Test & Publish

Preview changes and publish when ready

Implementation

import { SocialPlusUIKit } from '@socialplus/uikit-react';

// Sync dynamic configuration
async function syncCustomization() {
  try {
    await SocialPlusUIKit.syncNetworkConfig();
    console.log('Customization updated successfully');
  } catch (error) {
    console.error('Failed to sync customization:', error);
  }
}

// Call on app start or when needed
syncCustomization();

🎨 Design System

Color Palette

UIKit uses a systematic color approach:
Color TokenPurposeLight ThemeDark Theme
primary_colorBrand color, buttons, links#1054DE#1054DE
secondary_colorSecondary actions#292B32#292B32
background_colorMain background#FFFFFF#191919
base_colorPrimary text#292b32#ebecef
base_shade1_colorSecondary text#636878#a5a9b5
alert_colorErrors, warnings#FA4D30#FA4D30

Typography

Customize text styles across components:
{
  "typography": {
    "heading1": {
      "font_size": 28,
      "font_weight": "bold",
      "line_height": 1.2
    },
    "body": {
      "font_size": 16,
      "font_weight": "normal",
      "line_height": 1.4
    },
    "caption": {
      "font_size": 12,
      "font_weight": "normal",
      "line_height": 1.3
    }
  }
}

Spacing & Layout

Control spacing and layout properties:
{
  "layout": {
    "padding": {
      "small": 8,
      "medium": 16,
      "large": 24
    },
    "border_radius": {
      "small": 4,
      "medium": 8,
      "large": 12
    }
  }
}

🛠️ Advanced Customization

Custom Assets

Replace default icons and images:
{
  "assets": {
    "icons": {
      "like_icon": "https://your-cdn.com/icons/heart.png",
      "comment_icon": "https://your-cdn.com/icons/comment.png"
    },
    "images": {
      "default_avatar": "https://your-cdn.com/avatars/default.png",
      "empty_state": "https://your-cdn.com/images/empty.png"
    }
  }
}

Animation Customization

Control animation behavior:
{
  "animations": {
    "transition_duration": 300,
    "easing": "ease-in-out",
    "enable_page_transitions": true,
    "enable_micro_interactions": true
  }
}

Platform-Specific Overrides

Apply different styles per platform:
{
  "platform_overrides": {
    "ios": {
      "navigation_bar_style": "large_title",
      "tab_bar_style": "translucent"
    },
    "android": {
      "status_bar_color": "#1054DE",
      "navigation_bar_color": "#FFFFFF"
    },
    "web": {
      "enable_desktop_layout": true,
      "max_content_width": 1200
    }
  }
}

📱 Responsive Design

Breakpoints

UIKit automatically adapts to different screen sizes:
BreakpointWidthUse Case
Mobile< 768pxPhone portrait/landscape
Tablet768px - 1024pxTablet portrait/landscape
Desktop> 1024pxDesktop and large screens

Adaptive Layouts

Components automatically adjust their layout:
{
  "responsive": {
    "mobile": {
      "columns": 1,
      "sidebar_collapsed": true
    },
    "tablet": {
      "columns": 2,
      "sidebar_collapsed": false
    },
    "desktop": {
      "columns": 3,
      "sidebar_collapsed": false,
      "max_width": 1200
    }
  }
}

🧪 Testing Customization

Preview Mode

Test customizations before applying:
  1. Development Mode: Test locally with config files
  2. Staging Environment: Test with Dynamic UI in staging
  3. A/B Testing: Compare different themes with real users
  4. Rollback: Quickly revert to previous configurations

Best Practices

📚 Next Steps

Ready to customize your UIKit? Here’s what to explore next:
Need Help with Customization?Our design team is available to help you create the perfect look for your app. Contact our customization experts for personalized assistance.