โ€ข

newsletter

Frameworks and libraries I use for my web and mobile projects

Cross platform development on mobile using Flutter, but also considering React native. Type safety as much as possible with pure functions, pattern matching, effect system. React with nextjs, preact, remix on web.


Sandro Maglione

Sandro Maglione

Software development

How do you choose which framework or library to use in your projects?

There is no absolute "correct" answer here ๐Ÿคจ

For me it comes down to:

  • Support (when was the last commit?)
  • Up to date with latest features of the language or toolchain (e.g. ESM)
  • Developer experience (how much setup is needed?)
  • Flexible (easy to swap with another library if necessary)
  • Type safety (the more the better)

Here are my current choices for web/mobile ๐Ÿ‘‡


Mobile: Cross platform, Flutter vs React native

I have a background in developing native Android apps. That was not fun ๐Ÿ˜’

Cross platform for my personal work is a not brainer. I use both dart and typescript since a long time.

Therefore: Flutter or React native?

I went with Flutter for the past few years:

  • Easier to install and configure
  • Faster to compose UI
  • More type safe (dart with sound null safety)

Effect (typescript): React native again?

I tried React native in the past. It was not fun ๐Ÿ˜’

The amount of configuration needed and the lack of features was overwhelming.

Nonetheless, the rise of effect in typescript and the grow of Expo are pushing me to reconsider React native again.

Alert: Possible React native (with effect) project incoming ๐Ÿ”œ

macro is coming in dart

Wait! Another big update may cause the definitive win of Flutter over React native.

Static metaprogramming ๐Ÿ‘€

Metaprogramming has the potential to solve all the major issues with dart, mostly related to code generation and build_runner.

Alert: Incoming project using macro once dart 3.4 lands ๐Ÿ”œ

There is more ๐Ÿคฉ

Timeless coding principles, practices, and tools that make a difference, regardless of your language or framework, delivered in your inbox every week.

Web: it depends ๐Ÿค”

On the web the battle is more intense.

Some tools are easy to pick:

  • vite
  • vitest
  • eslint
  • prettier

What about frameworks instead?

For me is all-in on react, the rest it really depends:

  • Mostly nextjs (but definitely not always ๐Ÿ™…โ€โ™‚๏ธ)
  • preact (smaller projects)
  • Remix (more control)
  • Vanilla typescript (for libraries)

Styling: tailwind (and never look back)

I tried close to all the solutions out there for styling with CSS.

Once I landed on tailwind I never came back ๐Ÿช„

I have been using v4 (alpha) for the last couple of weeks. It's mind-blowing ๐Ÿš€

  • No more configuration file
  • All styles defined in CSS
  • Faster (x10)

Type safety: required features

In any language and project:

  • Type system (I don't deal with dynamic languages, it's not fun ๐Ÿ˜ž)
  • Errors as values (Option and Either)
  • Pure functions (as much as possible)
  • Controlled effects (push IO to the edges)
  • Pattern matching

Since not many languages ship these features out of the box, I fallback to libraries ๐Ÿ’๐Ÿผโ€โ™‚๏ธ


Again, There is no absolute "correct" answer here. As developers we must continuously try new stuff and be open to new libraries, features, and patterns.

That's what makes it fun: everything changes fast and there is no time to get bored ๐Ÿš€

See you next ๐Ÿ‘‹

Start here.

Timeless coding principles, practices, and tools that make a difference, regardless of your language or framework, delivered in your inbox every week.