.do

Launch

Launch new features, products, and services to market with confidence

Launch new features, products, and services to market with confidence.

Overview

The Launch phase focuses on successfully bringing your Business-as-Code innovations to users. Through feature flags, gradual rollouts, testing, and go-to-market strategies, you'll minimize risk while maximizing impact.

Launch capabilities on the .do platform:

  • Feature Flags: Control feature availability without deployment
  • Gradual Rollouts: Progressive release to subsets of users
  • A/B Testing: Test multiple variants simultaneously
  • Launch Analytics: Track adoption and success metrics
  • User Onboarding: Guide users through new features
  • Communication: Automated user notifications and announcements

Launch Strategies

Feature Flags

Control features dynamically:

// Define feature flag
const newCheckout = await $.feature('new-checkout', {
  enabled: false, // Default state
  rollout: {
    percentage: 0, // Start with 0%
    users: ['beta-tester-1', 'beta-tester-2'], // Specific users
    rules: [
      { segment: 'pro-plan', enabled: true }, // Enable for pro users
      { country: 'US', enabled: true } // Enable in US
    ]
  }
})

// Use in code
if (await newCheckout.isEnabled(user)) {
  return <NewCheckout />
} else {
  return <OldCheckout />
}

Learn more about feature flags →

Gradual Rollouts

Progressive release strategy:

# Start with 5% of users
do feature set new-checkout --rollout 5%

# Monitor metrics
do metrics watch --feature new-checkout

# Increase gradually
do feature set new-checkout --rollout 25%
do feature set new-checkout --rollout 50%
do feature set new-checkout --rollout 100%

# Or rollback if issues
do feature set new-checkout --rollout 0%

Learn more about rollouts →

A/B Testing

Test multiple variants:

// Create A/B test
const variant = await $.experiment('checkout-flow', {
  variants: ['control', 'variant-a', 'variant-b'],
  allocation: [0.34, 0.33, 0.33],
  metrics: ['conversion_rate', 'revenue_per_user']
})

// Render based on variant
if (variant === 'variant-a') {
  return <SinglePageCheckout />
} else if (variant === 'variant-b') {
  return <MultiStepCheckout />
} else {
  return <OriginalCheckout />
}

Learn more about testing →

Launch Process

1. Pre-Launch

Prepare for launch:

# Run final tests
do test --env staging --full

# Verify monitoring
do monitoring check

# Test rollback procedure
do rollback --dry-run

# Prepare communications
do comms prepare launch-announcement

2. Launch

Execute the launch:

# Enable feature flag for beta users
do feature enable new-feature --users beta-testers

# Monitor closely
do dashboard watch --feature new-feature

# Gradual rollout
do feature rollout new-feature --schedule progressive

3. Post-Launch

Monitor and optimize:

# Track adoption
do analytics feature new-feature --metric adoption

# Collect feedback
do feedback collect --feature new-feature

# Analyze results
do analytics experiment new-feature --report

Launch Types

Soft Launch

Limited release to test audience:

// Launch to beta users only
await $.feature.enable('new-dashboard', {
  users: await db.list($.User, { where: { betaTester: true } }),
})

Hard Launch

Full public release:

// Launch to everyone
await $.feature.enable('new-dashboard', {
  enabled: true,
  rollout: 100,
})

// Send announcement
await send($.Email.broadcast, {
  to: 'all-users',
  template: 'feature-announcement',
  feature: 'new-dashboard',
})

Staged Launch

Regional or segment-based rollout:

// Launch by region
await $.feature.enable('new-pricing', {
  regions: ['us-east'], // Start with one region
  schedule: {
    'us-west': '+2 hours',
    'eu-west': '+6 hours',
    'ap-south': '+12 hours',
  },
})

Launch Checklist

Pre-Launch (Week Before)

  • All tests passing (unit, integration, E2E)
  • Staging environment verified
  • Performance tested under load
  • Security review completed
  • Documentation updated
  • Support team trained
  • Monitoring dashboards ready
  • Rollback procedure tested
  • Communication drafted
  • Success metrics defined

Launch Day

  • Final smoke tests
  • Feature flag ready
  • Monitoring active
  • Team available
  • Communication sent
  • Metrics tracking
  • User feedback channel open
  • Rollback plan accessible

Post-Launch (First Week)

  • Adoption metrics tracked
  • User feedback collected
  • Performance monitored
  • Errors investigated
  • Success metrics reviewed
  • Team retrospective held
  • Documentation refined
  • Next iteration planned

Go-to-Market Strategy

Product Launches

Complete product launch:

// Coordinate launch activities
const launch = await $.launch.create({
  name: 'AI Assistant Launch',
  date: new Date('2024-12-01'),
  activities: [
    {
      type: 'email',
      audience: 'all-users',
      template: 'product-announcement',
      timing: 'launch-day',
    },
    {
      type: 'blog',
      title: 'Introducing AI Assistant',
      publish: 'launch-day',
    },
    {
      type: 'social',
      platforms: ['twitter', 'linkedin'],
      timing: 'launch-day',
    },
    {
      type: 'feature-flag',
      feature: 'ai-assistant',
      rollout: 'progressive',
    },
  ],
})

// Execute launch
await launch.execute()

Communication Channels

  • In-app notifications: Announce to active users
  • Email campaigns: Reach all users
  • Blog posts: Detailed announcements
  • Social media: Public announcements
  • Press releases: Media outreach
  • Webinars: Demo and training

User Onboarding

Onboarding Flows

Guide users through new features:

// Create onboarding tour
const tour = await $.onboarding.create({
  feature: 'new-dashboard',
  steps: [
    {
      target: '#dashboard-header',
      content: 'Welcome to the new dashboard!',
      position: 'bottom',
    },
    {
      target: '#metrics-widget',
      content: 'View your key metrics here',
      position: 'right',
    },
    {
      target: '#customize-button',
      content: 'Customize your dashboard layout',
      position: 'left',
    },
  ],
})

// Show to first-time users
on($.User.visits('dashboard'), async (user) => {
  if (!user.completedTours.includes('new-dashboard')) {
    await tour.show(user)
  }
})

Success Tracking

Track onboarding completion:

// Track onboarding progress
await analytics.track('Onboarding Step Completed', {
  userId: user.id,
  feature: 'new-dashboard',
  step: 3,
  totalSteps: 5,
})

// Track completion
await analytics.track('Onboarding Completed', {
  userId: user.id,
  feature: 'new-dashboard',
  duration: completionTime,
})

Launch Analytics

Key Metrics

Track launch success:

  • Adoption Rate: % of users using new feature
  • Time to Adoption: How long until users try feature
  • Engagement: How frequently feature is used
  • Retention: Do users keep using it
  • Satisfaction: User feedback and ratings

Dashboard

Monitor launch metrics:

// Launch dashboard
const dashboard = await $.dashboard.create({
  name: 'New Feature Launch',
  widgets: [
    { type: 'metric', metric: 'adoption_rate', target: 70 },
    { type: 'chart', metric: 'daily_active_users', period: '30d' },
    { type: 'funnel', steps: ['discovered', 'tried', 'adopted'] },
    { type: 'feedback', feature: 'new-dashboard', sentiment: true },
  ],
})

Best Practices

Do's

  1. Start small - Begin with limited rollout
  2. Monitor closely - Watch metrics during launch
  3. Collect feedback - Listen to early users
  4. Iterate quickly - Fix issues immediately
  5. Communicate clearly - Keep users informed
  6. Test thoroughly - Prevent major issues
  7. Have rollback ready - Be prepared to revert

Don'ts

  1. Don't launch on Friday - Avoid weekend issues
  2. Don't skip testing - Prevents embarrassing bugs
  3. Don't ignore feedback - Users tell you what's wrong
  4. Don't over-promise - Set realistic expectations
  5. Don't launch silently - Users need to know
  6. Don't forget training - Support team needs preparation

Next Steps


Launch Tip: Great launches are gradual, monitored, and reversible. Start small, learn fast, scale confidently.