Why I Built My Portfolio with Flutter Web
A deep dive into Flutter Web for portfolio sites — what works, what doesn't, and what surprised me.
When I decided to build my personal portfolio, I had plenty of options — plain HTML/CSS, React, Next.js, Astro. I picked Flutter Web, and I’d make the same choice again.
Why Flutter?
I’m a Flutter developer by trade. Writing my portfolio in the same framework I use daily meant I could move fast, reuse patterns I already know, and showcase Flutter itself as a skill right inside the portfolio.
What Actually Impressed Me
Pixel-perfect design across platforms. Flutter renders on a canvas — no browser quirks, no inconsistent CSS box models. What you see in your editor is what your visitors see.
Animations are first-class. The AnimationController API is expressive enough that I could add the rotating ring, fade-in hero, and skill bar animations without reaching for a single external library.
Responsive layout is straightforward. With LayoutBuilder and custom breakpoints, adapting the UI from mobile to desktop took minutes, not hours.
The Challenges
Flutter Web’s biggest weakness is SEO. The app renders inside a <canvas> element — search engine crawlers can’t index your text content easily. That’s exactly why this blog exists separately, as a plain Jekyll site. Important content lives here where Google can read it.
Initial load time is another trade-off. The Wasm/CanvasKit bundle is large. I mitigate this with a loading screen, but it’s something to be aware of.
The Verdict
For a developer portfolio where you want to demonstrate Flutter skill and wow visitors visually, Flutter Web is a fantastic choice. Pair it with a statically-generated blog (like this one!) for SEO content, and you get the best of both worlds.
Have questions about Flutter Web? Reach out at musawwer.is-a.dev or open an issue on my GitHub.