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%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 />
}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-announcement2. 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 progressive3. 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 --reportLaunch 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
- Start small - Begin with limited rollout
- Monitor closely - Watch metrics during launch
- Collect feedback - Listen to early users
- Iterate quickly - Fix issues immediately
- Communicate clearly - Keep users informed
- Test thoroughly - Prevent major issues
- Have rollback ready - Be prepared to revert
Don'ts
- Don't launch on Friday - Avoid weekend issues
- Don't skip testing - Prevents embarrassing bugs
- Don't ignore feedback - Users tell you what's wrong
- Don't over-promise - Set realistic expectations
- Don't launch silently - Users need to know
- Don't forget training - Support team needs preparation
Next Steps
- Feature Flags → - Master feature flags
- Rollouts → - Progressive rollout strategies
- Testing → - A/B testing guide
- Go-to-Market → - Launch strategy and planning
Launch Tip: Great launches are gradual, monitored, and reversible. Start small, learn fast, scale confidently.