Skip to content
localisyncDocs
Open panel

Platform setup and limits

The Flutter SDK targets Android, iOS, Web, macOS, Windows and Linux with Flutter 3.44 / Dart 3.12 as its minimum toolchain. A build result, automated runtime test and physical-device test are different evidence. Platform CI configuration alone does not certify a successful run.

Flutter 3.44.0 (minimum) and 3.47.6 passed normal/minimum dependency and desktop-example checks in actual Ubuntu 24.04, Windows Server 2022 and macOS 15 CI runs. Flutter 3.44.8 also ran locally on macOS. These passes identify their source commits; final-commit CI after the native preparation correction remains open. Earlier passes are not substituted for that remaining gate. Android emulator and iOS simulator results are recorded separately from physical devices.

Both integration paths also passed on a physical iPhone 16 Pro running iOS 27.0.1 in profile mode, including offline first rendering, two-address failures, manual activation, locale changes, retained form/navigation state and persistent cache across separate app processes. These checks used device loopback servers, not production internet/TLS.

Complete Flutter examples ran in actual Safari 26.6.2 and Chrome 154 locally, and actual Safari and Microsoft Edge in CI, alongside Chromium 153, Firefox 155 and WebKit 26.6. JavaScript builds passed across these browsers. Wasm builds executed Wasm in Chrome/Edge; Safari, Firefox and WebKit used the JavaScript fallback. Adapter-only Dart Wasm checks are not evidence of Flutter Wasm rendering in those browsers.

Controlled iPhone repeats completed all three 30-pair startup/cache profiles. The earlier large frame gap did not recur in the near-limit profile, but a dense-ICU repeat recorded 50–58 ms frame intervals during cache preparation while the app remained foregrounded. Native thermal state was recorded. After removing redundant contract-data copying between isolates, the latest physical run passed all three 30-pair profiles while foregrounded, with no frame or event-loop interval above 50 ms. The historical 571 ms observation remains unexplained and is a documented limitation accepted for 0.1.0. This is not a universal frame guarantee; different thermal conditions and mixed stage timings prevent a general speedup claim.

Physical Android, minimum-OS/minimum-hardware devices and real production-network measurements remain open. Windows Server CI does not certify a physical Windows 10 device. Treat the floors below as targets until the relevant device/OS gate runs.

Platform Application setup
Android API 24+ Add the INTERNET permission to the main manifest. Use HTTPS in release builds. Emulator host loopback is 10.0.2.2.
iOS 15+ Use HTTPS under App Transport Security. Configure application signing separately. Simulator testing does not certify device deployment.
macOS 12+ A sandboxed application needs the outgoing network client entitlement. Cache lives in application support.
Windows 10+ Build using the supported Visual Studio C++ toolchain; use application support persistence.
Linux Use the current supported Flutter Linux distribution/toolchain and writable application-support location.
Web Configure exact CORS origins on the distribution. IndexedDB must be available for persistent cache. JS and Wasm builds are separate checks.

Consult the current official Flutter support matrix for OS/architecture and browser combinations. Browsers differ in Wasm capabilities; a successful JavaScript build does not prove a Wasm runtime on every browser. Cookies are not required.

The public setup file is distinct from private worker/mTLS configuration. Operators set SDK_PUBLIC_CONFIG_FILE on the management API. Its strict JSON fields are protocol: 1, two addresses, a trustedKeys map of Ed25519 public PEM values, and allowDevelopmentHttp. pnpm releases:prepare creates sdk-public.json next to the existing local release settings. Production configuration must use HTTPS and disable development HTTP.

Missing/invalid setup returns an unavailable state, not fabricated server addresses. Current project membership is checked before returning public configuration. The runtime SDK never calls the management setup endpoint.

Catalog payloads are limited to 1 MiB, expanded release content to 100 MiB, keys to 10,000 and values to 50,000. A value is at most 16 KiB UTF-8. ICU allows at most 32 parameters, ten nested expressions and 1,000 AST nodes. Defaults are a 256 MiB cache, 15-second request timeout and 60-second update cycle. Only the selected locale and its explicit fallback chain are fetched.

On native platforms, signature/content verification and preparation run through isolate adapters. On Web, bounded preparation yields between work batches. Browser compute() is not described as a background worker. Benchmark your actual device and data size before setting a frame budget.

Construct the native platform client on Flutter’s root isolate after WidgetsFlutterBinding.ensureInitialized(). Filesystem adapters enforce this boundary because POSIX file locks are process-scoped. The root isolate retains the cache transaction lock; private workers verify and write immutable blobs without controlling activation metadata. Pure Dart applications can inject their own storage/transport ports.

Cookie preferences

Your choice applies to localisync.com and docs.localisync.com. You can change it at any time using Cookie settings.