Wi-Fi

Wi-Fi APIs are more restricted than many developers expect. Scanning can reveal location, connecting can change global device state, and some platforms deliberately avoid app-level Wi-Fi management.
This reference is for the exact API shape. If you are wiring the feature into an app for the first time, start with the Wi-Fi guide, then return here when you need operation names, request types, provider contracts, or platform configuration details.

Public API

Item
Value
Effect helper or entrypoint
ctx.effects.wifi()
Provider trait or host contract
WifiHost
Test provider or test entrypoint
MemoryWifiHost
Primary request types
WifiPermissionRequest / WifiScanRequest / WifiConnectRequest
Primary success types
WifiAvailability / WifiPermission / WifiScanResult / WifiConnection
Error type
WifiError
CLI value
wifi

Operations

Method or operation
Purpose
Request
Success
availability
Read adapter state and connected network where available.
()
WifiAvailability
request_permission
Ask for Wi-Fi/nearby-network/location permission where required.
WifiPermissionRequest
WifiPermission
scan_networks
Scan for networks using prefix, hidden-network, and timeout controls.
WifiScanRequest
WifiScanResult
connect_network
Request connection to one network.
WifiConnectRequest
WifiConnection
disconnect_network
Request disconnection from a network.
WifiDisconnectRequest
()

Provider contract

Register a WifiHost with .with_wifi_host(...). Use MemoryWifiHost in tests. Providers should report unavailable, permission-denied, and policy-restricted states instead of assuming failure means no networks exist.
Providers should return typed errors for unsupported operations, denied permissions, unavailable hardware, cancellation, timeouts, and platform policy restrictions. Silent success is not acceptable because reducers need a truthful result to update state and explain what happened.

Platform configuration

The CLI adds Android Wi-Fi, network, nearby Wi-Fi, and older fine-location permissions where needed. iOS requires Wi-Fi information or hotspot entitlements and location usage text for some flows. Desktop providers must use the platform network APIs or return unsupported errors.
When a CLI value exists, fission add-capability <value> --project-dir . records the capability in fission.toml and updates generated target files where Fission can do that deterministically. Android generated configuration lives in platforms/android/AndroidManifest.xml. iOS generated configuration lives in platforms/ios/Info.plist and platforms/ios/Entitlements.plist when entitlements are required. Desktop package metadata is reviewed during packaging because Windows, macOS, and Linux use different permission and distribution systems.

Runtime behavior

Capability calls are queued from reducers through ctx.effects. The active shell resolves the request with the registered provider and then dispatches the configured success or error action. Missing providers should produce typed unsupported errors. Packaging mistakes usually show up as denied permissions, missing entitlements, missing route registration, or provider-specific failures.
Fission
A cross-platform, GPU-accelerated user interface framework for Rust. MIT licensed.
Copyright (c) 2026 Fission
Ready to use today. Widget APIs are expected to remain stable; some runtime and shell APIs may change before 1.0.0.
Fission 0.7.0