[{"data":1,"prerenderedAt":28},["ShallowReactive",2],{"articolo-grafica-performante-in-flutter-con-impeller-il-nuovo-motore-di-rendering":3,"comments-article-grafica-performante-in-flutter-con-impeller-il-nuovo-motore-di-rendering":27},{"id":4,"title":5,"slug":6,"excerpt":7,"body":8,"cover_image":9,"cover_remote_url":10,"cover_credit":11,"video_url":15,"status":16,"published_at":17,"meta_title":18,"meta_description":19,"category":20,"author":24},64,"Grafica performante in Flutter con Impeller: il nuovo motore di rendering","grafica-performante-in-flutter-con-impeller-il-nuovo-motore-di-rendering","Impeller ha sostituito Skia come motore di rendering predefinito in Flutter. Scopri come funziona, quali problemi risolve e come sfruttarlo al meglio nelle tue app.","## Cos'è Impeller\n\nImpeller è il motore di rendering che ha sostituito Skia come backend grafico predefinito di Flutter. A partire da Flutter 3.10 è attivo per impostazione predefinita su iOS, mentre dalla versione 3.27 è diventato il rendering di default anche su Android (con dispositivi Vulkan-capable), lasciando Skia come fallback.\n\nLa motivazione principale dietro Impeller è risolvere uno dei problemi storici di Flutter: lo **shader jank**. Con Skia, i frame potevano risultare a scatti la prima volta che un particolare effetto grafico veniva mostrato, perché lo shader corrispondente doveva essere compilato a runtime. Questo generava micro-stuttering fastidioso, soprattutto durante le animazioni.\n\n## Come Impeller elimina lo shader jank\n\nLa strategia di Impeller è **compilare gli shader in fase di build** anziché a runtime. Invece di generare shader dinamicamente durante l'esecuzione, Impeller utilizza un set predefinito e ridotto di shader, compilati offline durante la build dell'engine. Questo significa che al primo utilizzo di un effetto non c'è alcuna pausa per la compilazione.\n\nImpeller sfrutta le API grafiche moderne native di ogni piattaforma:\n\n- **Metal** su iOS e macOS\n- **Vulkan** su Android (con fallback OpenGL ove necessario)\n- Supporto sperimentale anche per altre piattaforme\n\n## Verificare quale motore è in uso\n\nSu Android puoi disattivare esplicitamente Impeller (per debugging o compatibilità) modificando il file `AndroidManifest.xml`:\n\n```xml\n\u003Capplication ...>\n    \u003Cmeta-data\n        android:name=\"io.flutter.embedding.android.EnableImpeller\"\n        android:value=\"false\" \u002F>\n\u003C\u002Fapplication>\n```\n\nSu iOS l'equivalente si configura nel file `Info.plist`:\n\n```xml\n\u003Ckey>FLTEnableImpeller\u003C\u002Fkey>\n\u003Cfalse\u002F>\n```\n\nInoltre puoi forzare o disabilitare Impeller da riga di comando durante lo sviluppo:\n\n```bash\n# Disabilita Impeller\nflutter run --no-enable-impeller\n\n# Abilita Impeller esplicitamente\nflutter run --enable-impeller\n```\n\n## Impatto sui custom shader\n\nSe nella tua app usi shader personalizzati tramite `FragmentProgram`, Impeller li supporta ma con alcune differenze rispetto a Skia. Gli shader vanno dichiarati nel `pubspec.yaml`:\n\n```yaml\nflutter:\n  shaders:\n    - shaders\u002Fripple.frag\n```\n\nE caricati nel codice Dart:\n\n```dart\nimport 'dart:ui';\n\nFuture\u003CFragmentShader> loadShader() async {\n  final program = await FragmentProgram.fromAsset('shaders\u002Fripple.frag');\n  return program.fragmentShader();\n}\n```\n\nÈ importante ricordare che Impeller supporta un sottoinsieme più ristretto di GLSL rispetto a Skia. Alcune funzionalità avanzate degli shader potrebbero comportarsi in modo diverso, quindi è sempre bene testare i custom shader su entrambi i motori.\n\n## Testare le performance\n\nPer verificare i benefici reali di Impeller nella tua app, usa il profiling in modalità profile:\n\n```bash\nflutter run --profile\n```\n\nApri il DevTools e analizza la scheda **Performance**. Cerca eventuali frame che superano i 16 ms (per 60 fps) o gli 8 ms (per 120 fps). Con Impeller, i picchi legati alla compilazione degli shader al primo rendering dovrebbero essere assenti.\n\n## Buone pratiche con Impeller\n\n- **Testa sempre in modalità profile o release**: la modalità debug non riflette le reali performance del rendering.\n- **Verifica i dispositivi Android più vecchi**: se un dispositivo non supporta Vulkan, Impeller potrebbe usare un fallback OpenGL con performance diverse.\n- **Segnala i bug grafici**: durante la transizione da Skia, alcuni effetti (blur, gradienti complessi) possono rendere in modo leggermente diverso. Il team Flutter è attivo nel raccogliere feedback su GitHub.\n- **Non abusare degli effetti costosi**: BackdropFilter e blur restano operazioni onerose anche con Impeller; usali con parsimonia nelle liste scrollabili.\n\n## Conclusione\n\nImpeller rappresenta un cambiamento profondo nell'architettura grafica di Flutter, mirato a offrire animazioni fluide e prevedibili fin dal primo frame. Con la sua adozione come motore predefinito su iOS e Android, la maggior parte degli sviluppatori ne trae beneficio senza modifiche al codice. Conoscerne il funzionamento aiuta però a diagnosticare eventuali differenze di rendering e a sfruttare al meglio il nuovo pipeline grafico.","https:\u002F\u002Fflutter.it\u002Fstorage\u002Farticles\u002Fa969b5c7-65a7-4354-9fcf-bb3e32b70ec4.jpg","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1559713043-2563d981f58d?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w5NzA2NTJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3ODczMTU4NDR8&ixlib=rb-4.1.0&q=80&w=1080",{"name":12,"author_url":13,"photo_url":14},"Meagan Carsience","https:\u002F\u002Funsplash.com\u002F@mcarsience_photography","https:\u002F\u002Funsplash.com\u002Fphotos\u002Fa-blurry-image-of-a-rainbow-colored-wheel-obfMwn3BNLI",null,"published","2026-08-12T04:00:34+00:00","Impeller in Flutter: il nuovo motore di rendering","Scopri Impeller, il motore di rendering che sostituisce Skia in Flutter: come elimina lo shader jank e come configurarlo su iOS e Android.",{"id":21,"name":22,"slug":23},2,"Novità","novita",{"id":25,"name":26},1,"Flutter Bot",[],1793098124286]