Programmer

Update Flutter 3.24: Rendering Halus Berkat Impeller

–

fluter

Flutter 3.24 menjadi salah satu pembaruan penting bagi developer yang memperhatikan kualitas visual dan performa aplikasi. Dirilis pada Agustus 2024 bersama Dart 3.5, versi ini membawa sejumlah perubahan pada framework, engine, tooling, serta kemampuan grafis Flutter. Salah satu bagian yang paling menarik adalah perkembangan Impeller, rendering engine modern yang dirancang untuk memberikan performa grafis yang lebih konsisten dan dapat diprediksi.

Jika sebelumnya pembahasan mengenai Flutter sering berfokus pada kemudahan membuat aplikasi Android, iOS, desktop, dan web dari satu codebase, Flutter 3.24 memperlihatkan bahwa kualitas rendering juga menjadi perhatian besar. Animasi, scrolling, teks, efek visual, hingga grafis 3D terus dikembangkan agar aplikasi tidak hanya terlihat bagus, tetapi juga terasa responsif ketika digunakan.

Hal ini penting karena pengalaman pengguna sangat dipengaruhi oleh performa visual. Animasi yang tersendat, scrolling yang patah-patah, atau tampilan yang tiba-tiba mengalami jeda dapat membuat aplikasi terasa kurang responsif meskipun fitur di dalamnya berjalan dengan benar.

Pada Flutter, kondisi tersebut sering disebut sebagai jank. Secara sederhana, jank adalah kondisi ketika frame tidak selesai dirender sesuai batas waktu yang diperlukan sehingga pengguna melihat gerakan yang tersendat atau frame yang terlewat. Flutter menargetkan sekitar 60 FPS pada perangkat 60 Hz, yang berarti sebuah frame memiliki waktu sekitar 16 milidetik untuk diproses. Pada perangkat dengan refresh rate 120 Hz, batas waktunya menjadi sekitar 8 milidetik.

Flutter 3.24 mencoba mengurangi sumber masalah tersebut melalui berbagai penyempurnaan engine, khususnya pada Impeller.

Mengenal Flutter 3.24 dan Fokus Perubahannya

Flutter adalah framework UI open source yang memungkinkan developer membuat aplikasi menggunakan bahasa Dart dengan pendekatan lintas platform. Framework ini memiliki engine yang bertanggung jawab antara lain menerjemahkan perintah gambar menjadi piksel, menangani rendering teks, menjalankan runtime Dart, dan mengelola berbagai kebutuhan visual aplikasi.

Pada Flutter 3.24, perubahan tidak hanya berada di tingkat widget atau API framework. Tim Flutter juga melakukan banyak pekerjaan pada engine.

Release notes Flutter 3.24 mencatat sejumlah perubahan pada Impeller, termasuk optimasi clipping, blending, pipeline rendering, tekstur Vulkan, glyph atlas, blur, gradient, alokasi memori, serta sejumlah perubahan pada backend Metal dan Vulkan. Artinya, peningkatan rendering pada versi ini bukan hanya berasal dari satu fitur tunggal, melainkan dari kumpulan optimasi pada berbagai bagian pipeline grafis.

Apa Itu Rendering Engine?

Rendering engine adalah komponen yang bertugas mengubah instruksi visual dari aplikasi menjadi tampilan yang akhirnya muncul di layar.

Misalnya ketika developer membuat sebuah Container berwarna biru, menambahkan gambar, teks, shadow, atau animasi, Flutter perlu mengubah semua instruksi tersebut menjadi operasi grafis yang dapat diproses oleh GPU.

Di sinilah engine seperti Skia dan Impeller memiliki peran penting.

Flutter framework menentukan apa yang harus digambar, sedangkan rendering engine membantu menentukan bagaimana instruksi tersebut diterjemahkan menjadi piksel di layar.

Karena itu, perubahan pada rendering engine dapat memberikan dampak besar terhadap pengalaman pengguna tanpa mengharuskan developer mengubah seluruh kode UI.

Apa Itu Impeller?

Impeller adalah rendering engine grafis modern yang dikembangkan khusus untuk Flutter. Flutter mendesain Impeller dengan tujuan memberikan performa yang lebih konsisten, terprediksi, dan sesuai dengan kemampuan API grafis modern seperti Metal dan Vulkan.

Sebelum Impeller berkembang, Flutter banyak bergantung pada Skia untuk proses rendering. Skia sendiri merupakan library grafis yang sangat matang dan digunakan oleh berbagai proyek besar.

Namun, kebutuhan Flutter terhadap performa animasi yang konsisten mendorong pengembangan rendering backend baru.

Impeller dirancang agar pipeline grafis lebih dapat diprediksi. Salah satu pendekatan pentingnya adalah mengurangi pekerjaan yang sebelumnya harus dilakukan secara dinamis ketika aplikasi sedang berjalan.

Mengapa Shader Compilation Berkaitan dengan Jank?

Untuk memahami keunggulan Impeller, kita perlu memahami shader.

Shader adalah program kecil yang dijalankan GPU untuk menentukan bagaimana piksel atau bagian tertentu dari gambar harus diproses. Shader digunakan untuk berbagai kebutuhan seperti warna, tekstur, efek cahaya, blur, dan efek visual lainnya.

Masalah dapat muncul ketika shader perlu dikompilasi ketika aplikasi sedang berjalan.

Jika proses tersebut terjadi tepat ketika pengguna menjalankan animasi atau membuka sebuah layar untuk pertama kalinya, waktu rendering sebuah frame dapat meningkat secara signifikan. Jika frame melewati batas waktunya, pengguna dapat melihat stutter atau jank.

Flutter DevTools bahkan menandai frame yang melakukan shader compilation secara khusus ketika melakukan analisis performa.

Impeller dirancang untuk mengurangi ketergantungan terhadap kompilasi shader secara mendadak ketika rendering berlangsung. Pendekatan ini membantu membuat waktu rendering lebih dapat diprediksi.

Namun, perlu dipahami bahwa Impeller bukan berarti semua bentuk jank otomatis hilang. Jank masih dapat disebabkan oleh kode Dart yang berat, rebuild widget berlebihan, operasi I/O, gambar berukuran besar, layout kompleks, atau pekerjaan lain yang melewati frame budget.

Karena itu, Impeller sebaiknya dipandang sebagai salah satu bagian dari strategi optimasi Flutter, bukan solusi tunggal untuk semua masalah performa.

Perkembangan Impeller pada Flutter 3.24

Salah satu alasan Flutter 3.24 menarik untuk dibahas adalah banyaknya penyempurnaan Impeller yang masuk ke engine.

Flutter mencatat berbagai perubahan terkait optimasi clipping, pipeline, blending, tekstur Vulkan, glyph atlas, blur, gradient, serta manajemen alokasi.

Impeller pada iOS

Pada iOS, perkembangan Impeller sudah jauh lebih matang dibandingkan tahap awal pengembangannya.

Flutter 3.24 hadir ketika tim Flutter sedang mempersiapkan penghapusan opsi untuk kembali ke renderer lama pada iOS. Dalam pengumuman resmi 3.24, Flutter menjelaskan bahwa mereka melakukan banyak peningkatan performa dan fidelity pada Impeller menjelang perubahan tersebut.

Salah satu contoh menarik adalah peningkatan rendering teks.

Tim Flutter menggunakan scrolling kumpulan emoji sebagai salah satu stress test untuk text rendering. Perbaikan pada Impeller membantu menghilangkan jank pada skenario tersebut sekaligus meningkatkan fidelity teks.

Flutter juga menyebut peningkatan pada text weight, spacing, dan kerning sehingga hasil rendering teks Impeller semakin mendekati renderer sebelumnya.

Hal tersebut penting karena rendering bukan hanya soal frame rate. Sebuah engine juga harus menghasilkan tampilan yang benar.

Animasi yang cepat tetapi teks terlihat salah tentu bukan pengalaman pengguna yang ideal.

Impeller pada Android

Berbeda dengan iOS, posisi Impeller di Android pada Flutter 3.24 masih dalam tahap preview.

Dalam pengumuman resmi Flutter 3.24, tim Flutter menjelaskan bahwa preview Impeller di Android diperpanjang karena terdapat tantangan yang berkaitan dengan bug Android 14 yang memengaruhi API yang digunakan Impeller untuk Platform Views. Flutter memilih untuk menunda menjadikan Impeller sebagai renderer default Android sampai rilis stabil berikutnya.

Jadi, pernyataan bahwa Impeller sudah sepenuhnya menjadi renderer default Android pada Flutter 3.24 perlu diluruskan.

Flutter 3.24 merupakan tahap penting dalam pengembangan Impeller Android, tetapi belum menjadi titik akhir perjalanan tersebut.

Release notes 3.24 juga menunjukkan berbagai pekerjaan engine yang berhubungan dengan Vulkan, termasuk pengelolaan tekstur, swapchain, format warna, dan integrasi HardwareBuffer.

Perkembangan tersebut kemudian berlanjut pada rilis-rilis Flutter setelah 3.24.

Dukungan Vulkan dan Android

Vulkan adalah API grafis modern yang memberikan akses lebih rendah terhadap GPU dibandingkan abstraksi grafis tingkat tinggi.

Dalam konteks Impeller, Vulkan menjadi salah satu backend penting untuk Android.

Pada Flutter versi modern, Impeller tersedia pada Android API 29 atau lebih baru dan dapat menggunakan Vulkan pada perangkat yang mendukungnya. Jika perangkat tidak memenuhi persyaratan yang dibutuhkan, Flutter memiliki mekanisme fallback ke renderer OpenGL lama.

Ini berarti developer tidak perlu menganggap seluruh perangkat Android memiliki kemampuan grafis yang sama.

Variasi hardware Android jauh lebih besar dibandingkan ekosistem iOS, sehingga pengujian di berbagai perangkat tetap penting.

Peningkatan Rendering Teks

Salah satu bagian yang sering tidak diperhatikan dalam pembahasan rendering adalah teks.

Developer mungkin menganggap teks sebagai elemen sederhana. Padahal, ketika teks menggunakan font tertentu, ukuran berbeda, emoji, transformasi, atau animasi, engine harus melakukan banyak pekerjaan untuk menghasilkan tampilan yang benar.

Flutter 3.24 membawa sejumlah perbaikan pada text rendering Impeller.

Tim Flutter secara khusus menyebut peningkatan performa ketika melakukan scrolling emoji dalam jumlah besar. Selain performa, fidelity juga diperbaiki pada aspek berat font, spacing, dan kerning.

Apa Itu Kerning?

Kerning adalah pengaturan jarak antara pasangan karakter tertentu agar teks terlihat lebih natural.

Contohnya, kombinasi huruf tertentu mungkin terlihat terlalu berjauhan jika setiap karakter diberi jarak yang sama. Sistem typography dapat mengatur jarak tersebut agar hasil visual lebih baik.

Bagi aplikasi yang banyak menggunakan teks, peningkatan seperti ini dapat memberikan manfaat yang cukup terasa.

Bagaimana Impeller Mempengaruhi Animasi?

Animasi pada aplikasi Flutter pada dasarnya terdiri dari perubahan visual yang harus ditampilkan frame demi frame.

Jika perangkat berjalan pada 60 Hz, Flutter memiliki sekitar 16 milidetik untuk menyelesaikan sebuah frame. Jika frame membutuhkan waktu lebih lama, frame tersebut dapat terlambat ditampilkan dan pengguna melihat gerakan yang tidak mulus.

Misalnya aplikasi memiliki animasi perpindahan halaman.

Jika setiap frame selesai dalam waktu yang konsisten, animasi akan terlihat halus.

Namun, jika beberapa frame membutuhkan waktu 25 atau 30 milidetik sementara frame lainnya hanya membutuhkan 8 sampai 10 milidetik, gerakan dapat terlihat tersendat.

Impeller mencoba membuat pekerjaan rendering GPU lebih predictable sehingga variasi waktu rendering dapat dikurangi pada skenario tertentu.

Tetapi developer tetap harus mengoptimalkan kode aplikasi.

Jika aplikasi melakukan kalkulasi besar di UI thread, misalnya memproses data dalam jumlah besar ketika animasi berlangsung, Impeller tidak otomatis menyelesaikan masalah tersebut.

Flutter sendiri menyarankan penggunaan isolate ketika pekerjaan komputasi berat mengganggu kemampuan main isolate untuk menghasilkan frame tepat waktu.

Efek Blur dan Backdrop Filter

Efek blur sering digunakan pada desain modern.

Contohnya adalah tampilan seperti kaca transparan, panel dengan background blur, atau efek visual yang sering disebut frosted glass.

Dalam Flutter, efek seperti ini dapat melibatkan operasi grafis yang cukup kompleks.

Pada Flutter 3.24, release notes menunjukkan berbagai perubahan terkait blur pada Impeller, termasuk optimasi Gaussian blur dan backdrop filter. Ada pula perubahan yang berkaitan dengan downsampling area pada backdrop filter.

Namun, developer sebaiknya tidak mengartikan perubahan ini sebagai jaminan bahwa semua efek blur otomatis berjalan pada 60 FPS atau lebih.

Performa tetap bergantung pada:

  • ukuran area yang diblur;
  • jumlah efek blur;
  • kompleksitas widget;
  • resolusi layar;
  • GPU perangkat;
  • jumlah layer;
  • dan pekerjaan lain yang terjadi dalam frame.

Karena itu, efek visual sebaiknya tetap diuji menggunakan perangkat nyata.

Manajemen Memori dan Pipeline Rendering

Selain frame rate, penggunaan memori juga penting.

Rendering engine harus mengelola texture, buffer, glyph atlas, pipeline, dan berbagai resource GPU.

Flutter 3.24 mencatat sejumlah pekerjaan Impeller yang berkaitan dengan alokasi sementara, glyph atlas, texture allocation, serta pipeline rendering. Release notes bahkan mencatat penambahan pelacakan ukuran alokasi MTLTexture per frame pada backend Metal.

Tujuan dari pekerjaan semacam ini bukan sekadar membuat angka penggunaan RAM menjadi lebih kecil dalam semua kondisi.

Yang lebih penting adalah membuat resource grafis dapat dikelola dengan lebih baik sehingga engine tidak melakukan pekerjaan atau alokasi yang tidak diperlukan.

Hal tersebut dapat membantu menjaga konsistensi performa, terutama pada aplikasi dengan UI yang kompleks.

Flutter GPU Membuka Jalan ke Grafis 3D

Salah satu fitur paling menarik dalam Flutter 3.24 adalah Flutter GPU.

Flutter GPU merupakan low-level graphics API yang memungkinkan developer membuat custom renderer menggunakan Dart dan GLSL tanpa harus menulis native platform code untuk setiap target.

Fitur ini berbeda dengan sekadar menambahkan widget baru.

Flutter GPU memberikan kontrol lebih rendah terhadap proses grafis, seperti render pass, attachment, vertex stage, dan pengiriman data ke GPU.

Apakah Flutter GPU Sudah Stabil?

Belum.

Pada saat Flutter 3.24 dirilis, Flutter GPU masih berada pada tahap early preview dan hanya tersedia melalui main channel karena masih bergantung pada fitur eksperimental.

Karena itu, developer aplikasi produksi sebaiknya tidak menganggap Flutter GPU sebagai pengganti API Flutter biasa.

Flutter GPU lebih cocok untuk developer yang membutuhkan eksperimen grafis tingkat rendah, custom renderer, visualisasi, atau pengembangan teknologi 3D.

Apa Hubungan Flutter GPU dengan Impeller?

Flutter GPU membutuhkan Impeller.

Hubungan sederhananya dapat digambarkan seperti ini:

Flutter Widget → Flutter Framework → Flutter GPU/custom renderer → Impeller → GPU perangkat

Flutter GPU memberikan akses lebih rendah kepada developer, sedangkan Impeller bertindak sebagai rendering backend yang menangani proses grafis di bawahnya.

Flutter GPU bahkan dapat digunakan untuk membangun solusi seperti custom 2D renderer, particle system, dan 3D scene.

Jadi, istilah “Deep 3D API” pada pembahasan Flutter 3.24 lebih tepat dijelaskan sebagai Flutter GPU, yaitu low-level graphics API dalam tahap preview, bukan sebagai API 3D matang yang sudah menjadi bagian standar pengembangan aplikasi Flutter.

Dukungan macOS pada Era Flutter 3.24

Flutter GPU pada periode 3.24 juga dapat digunakan pada macOS dengan Impeller, tetapi statusnya masih preview atau opt-in.

Dokumentasi pengenalan Flutter GPU pada saat itu mencantumkan iOS sebagai platform yang sudah menggunakan Impeller, sedangkan macOS dan Android masih berada pada tahap opt-in preview.

Karena itu, klaim bahwa Flutter 3.24 sudah menjadikan Impeller sebagai renderer default macOS juga perlu dibedakan dari kondisi versi Flutter yang lebih baru.

Saat ini dokumentasi Flutter menyatakan Impeller menjadi default di macOS mulai Flutter 3.47.

Informasi ini penting apabila artikel membahas Flutter 3.24 secara historis. Status sebuah fitur harus selalu dilihat berdasarkan versi yang sedang dibahas, bukan berdasarkan keadaan Flutter terbaru.

DevTools untuk Mencari Jank

Performa aplikasi tidak cukup dinilai hanya dengan melihat apakah animasi terasa halus.

Developer membutuhkan alat untuk mengetahui frame mana yang lambat dan mengapa frame tersebut lambat.

Flutter DevTools menyediakan Performance view untuk menganalisis performa aplikasi mobile maupun desktop. Fitur ini mencakup Flutter frames chart, frame analysis, timeline events, dan berbagai alat debugging.

Membaca Frame Chart

Dalam aplikasi 60 FPS, target sederhananya adalah menyelesaikan sebuah frame dalam sekitar 16 milidetik.

Jika frame melewati batas tersebut, pengguna berpotensi melihat jank.

Performance view membantu developer melihat pekerjaan yang terjadi pada UI thread dan raster thread.

Jika masalah berasal dari UI thread, developer dapat memeriksa kode Dart, rebuild widget, kalkulasi, atau pekerjaan lain yang terlalu berat.

Jika masalah berada pada raster thread, developer dapat memeriksa kompleksitas visual, efek grafis, gambar, clipping, shader, dan operasi rendering lainnya.

Jangan Mengukur Performa dari Debug Mode

Ini merupakan hal yang sangat penting bagi developer Flutter.

Performa ketika aplikasi dijalankan dalam debug mode tidak selalu menggambarkan performa aplikasi produksi.

Dokumentasi Flutter menyarankan menggunakan profile mode ketika melakukan analisis performa. DevTools juga menjelaskan bahwa frame rendering time dalam debug mode tidak representatif terhadap performa release.

Contohnya:

flutter run --profile

Setelah aplikasi berjalan dalam profile mode, developer dapat membuka DevTools dan memeriksa frame chart untuk mencari sumber jank.

Cara Mengaktifkan atau Memeriksa Impeller

Pada Flutter versi yang mendukung Impeller, developer dapat menggunakan opsi command line untuk mengaktifkannya ketika pengujian diperlukan.

Contohnya:

flutter run --enable-impeller

Opsi tersebut berguna terutama ketika developer ingin menguji perilaku aplikasi dengan Impeller secara eksplisit.

Dokumentasi Flutter juga menyediakan opsi untuk menonaktifkan Impeller ketika melakukan debugging:

flutter run --no-enable-impeller

Pada Flutter 3.24, konteks platform perlu diperhatikan. iOS sudah menjadi fokus utama stabilisasi Impeller, sedangkan Android masih dalam periode preview.

Apakah Developer Harus Selalu Memaksa Impeller?

Tidak selalu.

Untuk aplikasi produksi, pilihan renderer sebaiknya mengikuti konfigurasi dan dukungan platform pada versi Flutter yang digunakan.

Flag --enable-impeller sangat berguna untuk pengujian, debugging, dan eksperimen.

Yang lebih penting adalah melakukan pengujian pada perangkat nyata yang menjadi target aplikasi.

Terutama pada Android, jumlah variasi perangkat sangat besar sehingga satu perangkat kelas atas tidak dapat digunakan sebagai representasi seluruh ekosistem.

Apa Dampaknya bagi Developer Flutter?

Perkembangan Impeller memberikan beberapa konsekuensi penting bagi developer.

Pertama, developer mendapatkan rendering backend yang semakin matang.

Kedua, aplikasi dengan animasi, scrolling, teks, dan efek visual dapat memperoleh manfaat dari berbagai optimasi engine tanpa perlu menulis ulang seluruh UI.

Ketiga, developer mendapatkan akses ke kemampuan grafis tingkat rendah melalui Flutter GPU untuk kebutuhan eksperimen dan aplikasi yang membutuhkan rendering khusus.

Namun, ada satu hal yang perlu ditekankan: menggunakan Flutter 3.24 dan Impeller bukan berarti aplikasi otomatis menjadi bebas jank.

Jank dapat berasal dari banyak lapisan.

Misalnya, aplikasi memiliki ListView dengan terlalu banyak widget kompleks. Atau terdapat proses parsing JSON berukuran besar di main isolate. Bisa juga karena gambar terlalu besar, widget terlalu sering rebuild, atau efek visual terlalu berat.

Impeller hanya menangani bagian tertentu dari keseluruhan pipeline.

Karena itu, pendekatan yang tepat adalah menggabungkan rendering engine yang baik dengan praktik optimasi aplikasi yang baik.

Kapan Flutter 3.24 Menjadi Pilihan Menarik?

Flutter 3.24 sangat relevan untuk developer yang ingin memahami arah perkembangan rendering Flutter.

Untuk aplikasi bisnis seperti dashboard, e-commerce, aplikasi edukasi, aplikasi internal, atau aplikasi layanan, manfaat terbesar kemungkinan lebih terasa melalui peningkatan engine dan stabilitas rendering daripada penggunaan API grafis tingkat rendah.

Sementara itu, developer yang membuat aplikasi dengan visual kompleks dapat memperhatikan perkembangan Impeller dan Flutter GPU secara lebih serius.

Contohnya adalah:

  • aplikasi visualisasi data;
  • aplikasi dengan animasi kompleks;
  • aplikasi multimedia;
  • eksperimen 3D;
  • game sederhana;
  • particle effects;
  • custom renderer;
  • dan aplikasi yang membutuhkan efek grafis khusus.

Untuk kebutuhan tersebut, kemampuan Flutter GPU menjadi salah satu bagian menarik dari arah perkembangan Flutter 3.24.

Hal yang Perlu Diperhatikan Sebelum Migrasi

Sebelum memperbarui proyek lama ke Flutter 3.24, sebaiknya developer tidak hanya menjalankan flutter upgrade kemudian langsung melakukan deployment.

Lakukan pengujian secara bertahap.

Pertama, jalankan aplikasi menggunakan versi Flutter baru.

Kedua, periksa halaman yang memiliki animasi dan scrolling berat.

Ketiga, periksa aplikasi pada perangkat kelas bawah yang masih termasuk target pengguna.

Keempat, periksa Platform Views seperti WebView, kamera, atau komponen native lainnya jika aplikasi menggunakannya.

Kelima, gunakan Flutter DevTools untuk mengukur frame performance.

Hal ini semakin penting karena perubahan rendering engine dapat memperlihatkan masalah yang sebelumnya tidak terlihat.

Pada Flutter 3.24 sendiri terdapat berbagai perbaikan lanjutan setelah rilis awal. Misalnya, versi 3.24.3 memperbaiki masalah performa Android terkait thread engine dan sejumlah masalah Impeller di iOS, termasuk masalah mesh gradient, backdrop filter pada iPad tertentu, dan memory leak pada Platform Views.

Artinya, bila menggunakan keluarga Flutter 3.24, menggunakan patch release terbaru dalam seri tersebut lebih masuk akal daripada berhenti di 3.24.0, terutama untuk mendapatkan perbaikan bug.

Flutter 3.24 Membawa Perubahan Apa pada Rendering?

Secara keseluruhan, Flutter 3.24 dapat dilihat sebagai salah satu tahap penting dalam perjalanan Flutter menuju rendering engine yang lebih modern.

Impeller mendapatkan banyak penyempurnaan internal.

Text rendering diperbaiki.

Optimasi pipeline grafis terus dilakukan.

Dukungan Vulkan untuk Android dikembangkan.

Blur dan berbagai operasi grafis mendapatkan optimasi.

Flutter GPU diperkenalkan sebagai preview untuk kebutuhan rendering tingkat rendah.

Dan DevTools memberikan alat yang semakin baik untuk menganalisis frame serta mencari sumber jank.

Yang menarik, perubahan tersebut tidak hanya mengejar angka FPS. Konsistensi waktu rendering merupakan bagian penting dari pengalaman visual.

Aplikasi yang mampu menghasilkan frame secara konsisten akan terasa lebih responsif dibandingkan aplikasi yang memiliki frame rate tinggi tetapi sering mengalami lonjakan waktu rendering.

Jadi, Seberapa Besar Pengaruh Impeller?

Pengaruh Impeller paling mudah dipahami jika kita melihatnya sebagai perubahan pada fondasi rendering Flutter.

Developer tidak perlu mengganti seluruh widget hanya untuk mendapatkan manfaat dari engine.

Ketika aplikasi menggunakan widget standar Flutter, engine tetap berada di bawahnya dan menangani proses rendering.

Dengan semakin matangnya Impeller, Flutter berusaha membuat pipeline tersebut lebih modern dan predictable.

Namun, hasil akhir tetap dipengaruhi perangkat dan kode aplikasi.

Aplikasi sederhana dengan kode yang buruk tetap dapat mengalami jank.

Sebaliknya, aplikasi dengan UI kompleks yang dioptimalkan dengan baik dapat memanfaatkan kemampuan renderer dengan lebih efektif.

Karena itu, Impeller sebaiknya bukan dianggap sebagai tombol ajaib untuk mempercepat semua aplikasi, melainkan sebagai fondasi grafis yang dirancang agar Flutter dapat menghasilkan rendering yang lebih konsisten.

AspekFlutter Sebelum Perkembangan ImpellerFlutter 3.24 dengan Perkembangan Impeller
Rendering engineBanyak menggunakan SkiaImpeller semakin matang sebagai backend rendering modern
Fokus performaRendering umum dan optimasi SkiaRendering yang lebih predictable dan optimasi pipeline
ShaderRisiko shader compilation ketika runtimePendekatan Impeller dirancang untuk mengurangi shader jank
iOSSkia menjadi bagian penting dari sejarah renderer FlutterImpeller menjadi fokus utama dan semakin matang
AndroidSkia menjadi renderer utama dalam periode sebelumnyaImpeller masih dalam tahap preview pada 3.24
VulkanDigunakan sebagai bagian dari perkembangan rendering AndroidDukungan dan optimasi Vulkan terus dikembangkan
Text renderingRenderer lama menjadi baselineImpeller 3.24 meningkatkan performa dan fidelity teks
Emoji scrollingDapat menjadi stress test untuk text renderingFlutter melaporkan peningkatan yang menghilangkan jank pada skenario emoji scrolling
BlurOperasi blur dapat menjadi beban renderingImpeller mendapatkan sejumlah optimasi blur dan backdrop filter
Memori GPUBergantung pada pipeline rendererImpeller mendapatkan berbagai optimasi dan tooling pengukuran resource
Flutter GPUBelum tersedia sebagai API utamaDiperkenalkan sebagai low-level graphics API dalam tahap preview
3DMembutuhkan solusi tambahan atau pendekatan lainFlutter GPU membuka eksperimen custom renderer dan 3D
macOSImpeller belum menjadi defaultPada era 3.24 masih opt-in preview
DevToolsSudah memiliki alat profilingFrame chart dan frame analysis membantu mendeteksi jank
Target 60 FPSSekitar 16 ms per frameTarget tetap sekitar 16 ms, tetapi renderer terus dioptimalkan
Target 120 FPSSekitar 8 ms per frameMembutuhkan optimasi aplikasi dan rendering yang lebih ketat
Dampak bagi developerOptimasi banyak berfokus pada kode dan widgetOptimasi kode tetap penting, sementara engine rendering semakin matang

Pada akhirnya, Flutter 3.24 bukan sekadar update yang membawa beberapa API baru. Versi ini memperlihatkan arah yang cukup jelas: Flutter ingin memiliki fondasi rendering yang semakin modern, konsisten, dan mampu menangani kebutuhan grafis yang lebih kompleks.

Impeller menjadi bagian terpenting dari perjalanan tersebut. Pada iOS, perkembangannya sudah sangat matang. Pada Android, Flutter 3.24 menjadi tahap penting dalam proses preview dan pengujian. Sementara itu, Flutter GPU membuka kemungkinan baru untuk developer yang membutuhkan kontrol grafis lebih rendah.

Bagi developer aplikasi biasa, manfaat paling realistis dari perkembangan ini adalah pengalaman UI yang semakin konsisten, terutama pada animasi, scrolling, teks, dan berbagai operasi grafis yang dilakukan engine.

Sedangkan bagi developer yang tertarik dengan visualisasi, game, efek grafis, atau 3D, Flutter GPU menunjukkan bahwa Flutter mulai menyediakan jalur yang lebih fleksibel untuk bereksperimen dengan rendering tingkat rendah.

Namun, satu prinsip tetap berlaku: renderer yang lebih baik tidak menggantikan kode aplikasi yang teroptimasi. Developer tetap perlu menggunakan profile mode, memeriksa frame melalui DevTools, menghindari pekerjaan berat pada main isolate, mengoptimalkan widget, serta menguji aplikasi pada perangkat target.

Dengan pendekatan tersebut, perkembangan Impeller pada Flutter 3.24 dapat dimanfaatkan secara lebih maksimal untuk menghasilkan aplikasi yang bukan hanya cepat dibuat, tetapi juga terasa halus ketika digunakan.

Facebook
Twitter
LinkedIn