Skip to main content

App Configuration

createAppConfig

Creates and initializes the application configuration.

Parameters

options
AppConfigOptions
Configuration options to override defaults

Return Value

config
AppConfig
Initialized application configuration object

Example

import { createAppConfig } from '@/config';

const config = createAppConfig({
  apiUrl: process.env.NEXT_PUBLIC_API_URL,
  environment: process.env.NODE_ENV as 'development' | 'production',
  features: {
    enableBetaFeatures: false,
    enableAnalytics: true
  }
});

export default config;

Feature Flags

FeatureFlags

Feature flag configuration object for enabling/disabling features.
FeatureFlags
object

Example

import { config } from '@/config';

function DashboardPage() {
  return (
    <div>
      <h1>Dashboard</h1>
      
      {config.features.enableBetaFeatures && (
        <BetaFeaturesPanel />
      )}
      
      {config.features.enableRealtime && (
        <RealtimeUpdates />
      )}
      
      {config.features.enableExport && (
        <ExportButton />
      )}
    </div>
  );
}

Authentication Config

AuthConfig

Authentication configuration settings.
AuthConfig
object

Example

import { createAppConfig } from '@/config';

const config = createAppConfig({
  auth: {
    tokenKey: 'app_token',
    refreshTokenKey: 'app_refresh',
    sessionTimeout: 7200000, // 2 hours
    autoRefresh: true,
    refreshThreshold: 600000, // 10 minutes
    loginRedirect: '/home',
    logoutRedirect: '/'
  }
});

Theme Configuration

ThemeConfig

Theme and visual configuration settings.
ThemeConfig
object

Example

import { createAppConfig } from '@/config';

const config = createAppConfig({
  theme: {
    defaultMode: 'dark',
    primaryColor: '#8B5CF6',
    secondaryColor: '#EC4899',
    fontFamily: 'Roboto, sans-serif',
    borderRadius: 12,
    compactMode: false
  }
});

Analytics Configuration

AnalyticsConfig

Analytics and tracking configuration.
AnalyticsConfig
object

Example

import { createAppConfig } from '@/config';

const config = createAppConfig({
  analytics: {
    enabled: process.env.NODE_ENV === 'production',
    trackingId: process.env.NEXT_PUBLIC_GA_ID,
    debug: process.env.NODE_ENV === 'development',
    anonymizeIp: true,
    trackPageViews: true,
    trackEvents: true,
    trackErrors: true
  }
});

API Configuration

ApiConfig

API client configuration settings.
ApiConfig
object

Example

import { createAppConfig } from '@/config';

const config = createAppConfig({
  api: {
    baseURL: process.env.NEXT_PUBLIC_API_URL,
    timeout: 30000,
    retries: 3,
    retryDelay: 1000,
    headers: {
      'Content-Type': 'application/json',
      'X-App-Version': '1.0.0'
    },
    withCredentials: true
  }
});

Getting Config Values

useConfig

React hook to access configuration values.

Return Value

config
AppConfig
Current application configuration

Example

import { useConfig } from '@/hooks/useConfig';

function MyComponent() {
  const config = useConfig();
  
  return (
    <div>
      <p>API URL: {config.apiUrl}</p>
      <p>Environment: {config.environment}</p>
      
      {config.features.enableBetaFeatures && (
        <BetaFeature />
      )}
    </div>
  );
}

Updating Config at Runtime

updateConfig

Updates configuration values at runtime.

Parameters

updates
Partial<AppConfig>
required
Configuration values to update

Example

import { updateConfig } from '@/config';

function SettingsPage() {
  const toggleDarkMode = () => {
    updateConfig({
      theme: {
        defaultMode: 'dark'
      }
    });
  };
  
  const enableBetaFeatures = () => {
    updateConfig({
      features: {
        enableBetaFeatures: true
      }
    });
  };
  
  return (
    <div>
      <button onClick={toggleDarkMode}>Enable Dark Mode</button>
      <button onClick={enableBetaFeatures}>Enable Beta Features</button>
    </div>
  );
}

Build docs developers (and LLMs) love