
Flutter has taken the mobile market by storm. A complete rewrite is not always practical. Existing users still expect new releases, business teams still need new features, and a large native application cannot simply disappear while its replacement is being developed. This is where Flutter Add-to-App comes in. Read about the current state of Add-to-App and the recommended migration strategy.

As part of a PoC for a client from the banking sector, we had to implement a business process that required some work to be performed in the background in a Flutter module. See our case and code examples of implementing background services in Flutter add-to-app.

For a business looking to build a mobile app, the choice between native and cross-platform development directly impacts the entire product development process. This article is packed with insights that will help you make an informed choice between these two approaches, aligning your technical needs with your business objectives.
The Flutter embedder is the platform-specific code that starts the Flutter engine and connects it to the operating system. It is the layer that allows Flutter to run on Android, iOS, desktop systems, or custom devices.
Simply put: the embedder is the native code that launches Flutter and hosts its rendering surface.
Even if you never modify it, the embedder affects:
When Flutter behaves differently on Android and iOS, the reason is often in the embedder, not in Dart code.
For most developers, the embedder already exists in their project as native code:
android/app/src/main/.../MainActivity.ktios/Runner/AppDelegate.swift (and SceneDelegate on newer iOS versions)These files:
This is the embedder layer you interact with indirectly.
Flutter does not translate widgets into native UI components.
The embedder follows a simple rule: Input → Engine → Pixels
A Container is never converted into a LinearLayout or UIView.
You should think about the embedder when:
For typical apps, the default embedder is enough.
Do not modify the embedder when:
Most problems belong to the framework layer, not the embedder.
The Flutter Embedder API is a low-level C-based API used to create custom embedders. It allows a host app to:
Official platforms use it internally, but it is also used for custom environments.
Because the embedder is replaceable, Flutter can run on:
All that is needed is native code that opens a window, forwards input, and hosts the Flutter engine.
The embedder is where platform channels terminate on the native side. It initializes plugins and enables communication between Dart and native APIs.