Documentation Index
Fetch the complete documentation index at: https://docs.go-mizu.dev/llms.txt
Use this file to discover all available pages before exploring further.
Mobile adapters provide framework-specific defaults and optimizations for integrating Mizu with mobile clients.
Overview
import "github.com/go-mizu/mizu/mobile/adapters"
// Apply iOS-optimized defaults
app.Use(adapters.IOS(mobile.Options{
RequireDeviceID: true,
}))
Available Adapters
iOS Adapter
func IOS(opts mobile.Options) mizu.Middleware
Optimized for iOS applications:
- Parses iOS User-Agent patterns
- Infers APNS for push tokens
- Handles iOS version formats
app.Use(adapters.IOS(mobile.Options{
RequireDeviceID: true,
RequireAppVersion: true,
MinAppVersion: "2.0.0",
}))
Android Adapter
func Android(opts mobile.Options) mizu.Middleware
Optimized for Android applications:
- Parses Android User-Agent patterns
- Infers FCM for push tokens
- Handles Android version formats
app.Use(adapters.Android(mobile.Options{
RequireDeviceID: true,
RequireAppVersion: true,
MinAppVersion: "2.0.0",
}))
Flutter Adapter
func Flutter(opts mobile.Options) mizu.Middleware
Optimized for Flutter applications:
- Handles both iOS and Android
- Platform detection from headers
- Cross-platform push token handling
app.Use(adapters.Flutter(mobile.Options{
RequireDeviceID: true,
}))
React Native Adapter
func ReactNative(opts mobile.Options) mizu.Middleware
Optimized for React Native:
- Expo and bare workflow support
- Cross-platform handling
- JavaScript bridge considerations
app.Use(adapters.ReactNative(mobile.Options{
RequireDeviceID: true,
}))
Capacitor Adapter
func Capacitor(opts mobile.Options) mizu.Middleware
Optimized for Capacitor/Ionic:
- Web view detection
- Hybrid app handling
- Native plugin headers
app.Use(adapters.Capacitor(mobile.Options{
RequireDeviceID: true,
}))
Using Multiple Adapters
For backends serving multiple client types:
// Generic mobile middleware that handles all platforms
app.Use(mobile.WithOptions(mobile.Options{
RequireDeviceID: true,
}))
// Platform-specific routes if needed
app.Group("/ios", func(r *mizu.Router) {
r.Use(adapters.IOS(mobile.Options{}))
r.Get("/features", iosFeatures)
})
app.Group("/android", func(r *mizu.Router) {
r.Use(adapters.Android(mobile.Options{}))
r.Get("/features", androidFeatures)
})
Creating Custom Adapters
package myadapters
import (
"github.com/go-mizu/mizu"
"github.com/go-mizu/mizu/mobile"
)
func MyFramework(opts mobile.Options) mizu.Middleware {
// Apply framework-specific defaults
if opts.SkipPaths == nil {
opts.SkipPaths = []string{"/health"}
}
// Custom header handling
opts.OnMissingHeader = func(c *mizu.Ctx, header string) error {
// Framework-specific error format
return c.JSON(400, map[string]string{
"framework_error": "Missing " + header,
})
}
return mobile.WithOptions(opts)
}
Next Steps
Templates
Available templates
API Reference
Complete API documentation