Skip to Content

Deployment

WebF is a standard Flutter plugin, so deploying apps that use WebF follows the same process as deploying any other Flutter application. There are no special requirements or additional steps specific to WebF.

Overview

Since WebF integrates as a regular Flutter dependency, you can use all standard Flutter deployment workflows and tools. Your WebF-powered Flutter app is deployed exactly like any native Flutter app.

Platform Deployment

iOS App Store

To deploy your WebF Flutter app to the iOS App Store, follow the standard Flutter iOS deployment process:

  1. Configure your app:

    • Set up your app identifier in Xcode
    • Configure signing certificates
    • Update ios/Runner/Info.plist with required permissions
  2. Build for release:

    flutter build ios --release
  3. Submit to App Store:

    • Open ios/Runner.xcworkspace in Xcode
    • Archive your app (Product → Archive)
    • Upload to App Store Connect
    • Submit for review

Official Documentation: Flutter iOS Deployment Guide

Google Play Store

To deploy your WebF Flutter app to the Google Play Store, follow the standard Flutter Android deployment process:

  1. Configure your app:

    • Update android/app/build.gradle with signing configuration
    • Set up your keystore for release signing
    • Configure app permissions in AndroidManifest.xml
  2. Build for release:

    flutter build appbundle --release
  3. Submit to Play Store:

    • Upload the .aab file to Play Console
    • Complete store listing
    • Submit for review

Official Documentation: Flutter Android Deployment Guide

macOS App Store

Follow the standard Flutter macOS deployment process:

  1. Configure entitlements: Update macos/Runner/DebugProfile.entitlements and Release.entitlements
  2. Build: flutter build macos --release
  3. Submit: Package and upload using Xcode or xcrun altool

Official Documentation: Flutter macOS Deployment Guide

Windows

For Windows distribution:

  1. Build: flutter build windows --release
  2. Package: Use MSIX packaging or create an installer
  3. Distribute: Via Microsoft Store or direct download

Official Documentation: Flutter Windows Deployment Guide

Linux

For Linux distribution:

  1. Build: flutter build linux --release
  2. Package: Create .deb, .rpm, or AppImage packages
  3. Distribute: Via package managers or direct download

Official Documentation: Flutter Linux Deployment Guide

WebF App Content Deployment

While your Flutter app deployment is standard, you may also need to deploy the WebF app content that your WebF app loads. This depends on how you’re serving your WebF app content:

Remote WebF App Content

If your WebF app loads content from a remote URL (e.g., WebFBundle.fromUrl('https://myapp.com/')):

  1. Build your WebF app:

    # React example npm run build # Vue example npm run build
  2. Deploy to hosting:

    • Static hosting: Netlify, Vercel, GitHub Pages, AWS S3, etc.
    • CDN: CloudFlare, AWS CloudFront, etc.
    • Your own server: nginx, Apache, etc.
  3. Update bundle URL: Ensure your Flutter app points to the deployed WebF app content URL

Bundled WebF App Content

If you bundle WebF app content as assets (e.g., WebFBundle.fromUrl('assets:///assets/web/index.html')):

  1. Build your WebF app and copy output to Flutter assets directory:

    npm run build cp -r dist/* ../flutter_app/assets/web/
  2. Declare assets in pubspec.yaml:

    flutter: assets: - assets/web/
  3. WebF app content is included in your Flutter app bundle automatically

Over-the-Air Updates

One of WebF’s key benefits is the ability to update your WebF app content without submitting a new app version to app stores:

What Can Be Updated

WebF app content loaded remotely - Update instantly without app store review:

  • HTML, CSS, JavaScript files
  • React/Vue components
  • Business logic
  • UI styling and layouts

Cannot be updated without app store submission:

  • Flutter code and native plugins
  • Custom Flutter widgets (WidgetElement implementations)
  • Native modules (Dart-side implementations)
  • App binary and native dependencies

Best Practices

  1. Version your WebF app content: Use versioned URLs or cache-busting strategies
  2. Test thoroughly: Always test updates before deploying to production
  3. Gradual rollouts: Consider phased deployments to catch issues early
  4. Respect platform policies: Ensure updates comply with App Store and Play Store guidelines
  5. Cache management: Use appropriate cache headers and WebF’s caching features

Example: Remote Content Update

// Your Flutter app loads remote content WebFBundle.fromUrl('https://cdn.myapp.com/v1.2.0/index.html') // Update process: // 1. Build new WebF app content version // 2. Deploy to CDN with new version path // 3. Users get updated content on next app launch // 4. No app store submission needed!

Build Configuration

Release Optimization

For production builds, ensure proper optimization:

// Recommended WebF configuration for production WebFControllerManager.instance.initialize( WebFControllerManagerConfig( maxAliveInstances: 5, maxAttachedInstances: 3, autoDisposeWhenLimitReached: true, enableDevTools: false, // Disable in production ), );

ProGuard/R8 (Android)

If using code obfuscation, WebF works with standard ProGuard/R8 rules. No special configuration needed.

Code Signing

WebF doesn’t require any special code signing considerations. Use standard Flutter/platform signing:

  • iOS: Use your development/distribution certificates
  • Android: Use your keystore as normal
  • macOS/Windows/Linux: Follow platform-specific signing requirements

Store Compliance

WebF’s over-the-air update capabilities are fully compliant with both Apple App Store and Google Play Store policies when used responsibly.

Key points:

  • WebF uses interpreted code (HTML/CSS parsed by WebF, JavaScript via QuickJS)
  • Updates must not change your app’s fundamental purpose
  • Standard industry practice for code push solutions
  • Compliant with Apple’s Section 3.3.1b and Google Play policies

For detailed information on compliance, best practices, and examples of allowed vs non-allowed updates, see:

Store Guidelines - Comprehensive guide on iOS and Android compliance

Continuous Integration/Deployment

WebF works seamlessly with standard Flutter CI/CD pipelines:

GitHub Actions Example

name: Build and Deploy on: push: branches: [main] jobs: build-flutter: runs-on: macos-latest steps: - uses: actions/checkout@v3 - uses: subosito/flutter-action@v2 with: flutter-version: '3.x' - run: flutter pub get - run: flutter build ios --release - run: flutter build appbundle --release deploy-web-content: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '18' - run: npm ci - run: npm run build - name: Deploy to CDN run: | # Your deployment script aws s3 sync dist/ s3://your-bucket/

Fastlane Integration

WebF apps work with Fastlane for automated deployment:

# fastlane/Fastfile platform :ios do desc "Deploy to TestFlight" lane :beta do build_app(scheme: "Runner") upload_to_testflight end end platform :android do desc "Deploy to Play Store" lane :beta do gradle(task: "bundle", build_type: "Release") upload_to_play_store(track: "beta") end end

Troubleshooting

Common Deployment Issues

  1. WebF bundle not loading: Check asset paths and network permissions
  2. Performance issues: Ensure DevTools are disabled in production
  3. Memory warnings: Adjust maxAliveInstances based on device constraints
  4. Network errors: Verify remote content URLs are accessible

Platform-Specific Issues

  • iOS: Check Info.plist for required permissions (network access, etc.)
  • Android: Verify AndroidManifest.xml includes internet permission
  • All platforms: Test on actual devices before release

Resources

Official Flutter Deployment Guides

Platform Guidelines

WebF Resources

Next Steps

  • Review Advanced Topics for performance optimization
  • Set up monitoring and analytics for your production app
  • Plan your WebF app content update strategy
  • Configure CI/CD pipelines for automated deployments