Integration
Test a Flutter App on a Cloud Device
Flutter needs no special handling here, which is the honest summary: build for the simulator rather than a physical device, upload the result, and it runs on a cloud device in a browser tab. There is no Flutter plugin to install and no configuration to add. The things worth knowing are which build flag produces a build a simulator can run, that cloud builds can do the building for you, and how the AI test agent identifies Flutter list rows.
How it works
- 01
Build for the simulator, not the device
The default iOS build targets physical hardware and produces an .ipa, which will not install on a simulator. Pass --simulator to get a .app instead. On Android the ordinary debug .apk works as-is.
# iOS -> build/ios/iphonesimulator/Runner.app flutter build ios --simulator --debug # Android flutter build apk --debug - 02
Or build it in the cloud
Run vibeview build --cloud from the project root and the build runs on VibeView’s builders, which have the Flutter SDK: the iOS build needs no Mac, the Android build no Android SDK. The CLI (0.42.0 and later) recognizes the project by its pubspec.yaml and suggests the two commands above, then saves them to vibeview.json. The finished build lands in your app’s build history, ready to open on a device. The builders have FVM too, so a project that pins its Flutter release in .fvmrc builds with that release when the command runs fvm flutter.
npm install -g vibeview vibeview login vibeview build --cloud --platform all - 03
Upload and open a device
Upload the artifact once and start a session against it. Uploads are capped at 500 MB. From there the device is a browser tab you can hand to anyone with a link — useful on Flutter projects specifically, where the same build runs both platforms and reviewers usually only ever see one of them.
npm install -g vibeview vibeview login vibeview upload-app build/ios/iphonesimulator/Runner.app - 04
Writing tests against Flutter lists
One Flutter-specific detail worth knowing if you use the AI test agent (beta). Flutter list rows routinely reuse a single accessibility identifier across every row, so an identifier alone cannot say which row a step meant. The agent folds the row label into the element identity — or its position when the row has no label — so a recorded tap replays against the right row rather than the first one. You do not configure this; it matters because it means per-row identifiers are not something you need to add.
- 05
What this does not do
There is no Flutter driver integration and no importer for existing integration_test suites — VibeView tests are recorded or written in its own format. If you have a Flutter test suite you trust, keep it. This is for putting the running app in front of people and for checking screens visually, not for replacing a suite that works.
Full setup instructions live in the documentation.
More integrations
App Store Connect & TestFlight
One App Store Connect API key sends your iOS and Apple TV builds to TestFlight testers.
CircleCI
Run your tagged test groups on live cloud devices from CircleCI, with results in the job.
Claude Code
Your coding agent runs the app on a live device and checks the result itself.
Add Flutter to your pipeline
Start free and run your first check on a live device.