Technology Stack

Choose the stack for the release, not the résumé

Frameworks matter less than people sometimes hope, but they are not irrelevant. The stack decides how fast you can ship, how much a change costs six months later, and whether the next developer can read the code. Here is what we reach for at Eclipse Holdings Group and, more usefully, when we reach for something else instead.

Blueprint drawing of an unpopulated circuit board with three component footprints outlined in white line-work, each marked by a small amber indicator

Three slots, one bench

Every project starts on a board like this — the parts not yet chosen, and the choice written down before a line of code is written.

Pinned shelf Cross-platform

Expo for React Native mobile apps

Expo handles the build, testing and shipping workflow around React Native, which removes a great deal of the native build friction that used to define mobile projects. It is our default for cross-platform mobile work, and it pairs cleanly with GitHub Actions and Fastlane in the release pipeline.

The practical benefit is pace: a functioning test build on a real phone early in the project, and fewer certificate problems at submission time.

When Expo is the pick

  • A shipped phone build in week one, not month three.
  • Signing and store submission handled by a pipeline.
  • One codebase for iOS and Android, with the same release notes.
Tools on the bench
  • Expo
  • React Native
  • Flutter
  • Tauri
  • Avalonia
  • Firebase
  • Supabase
  • Fastlane
  • GitHub Actions
  • Sentry
  • Firebase Test Lab

Choosing between them

React Native and Flutter: how we choose

Neither wins on principle. We write the decision down during scoping so it can be revisited with evidence rather than argued about. The ruled rows below are how we work through it, field by field.

Shared logic
React Native
Suits products that share logic with a web front end — one TypeScript core between the app and the browser build.
Team fluency
React Native
Fits teams already fluent in JavaScript or TypeScript, and the contractors you can actually hire in Belgium and around it.
Screen shape
React Native
Best for applications built around forms, lists and standard navigation — the work that most business apps actually are.
Custom drawing
Flutter
Interfaces with heavy custom drawing, deliberate animation, or a canvas the design team wants to control pixel by pixel.
One language
Flutter
Fits a team that prefers a single language across the whole codebase, mobile and desktop alike.
Cost of change
Both
Neither is cheap to reverse after release. This is the row that makes the choice worth an hour of scoping rather than a Tuesday afternoon.
The record
Written down
We record the decision and the reasons during scoping. Six months later, the argument has an answer.

A ruled ledger like this ships with every project file, so a new developer who joins in month eight reads the same reasoning the client approved in month one.

Tauri Light footprint

Tauri for lighter desktop applications

Tauri builds cross-platform desktop apps with a smaller binary and tighter resource use than the heavier Electron approach. It fits admin tools, utilities and internal applications where the interface is web technology and the footprint matters. If the app must run on modest hardware in a back office, that difference is noticeable in daily use.

  • Admin tools and internal dashboards
  • Utilities where startup time is felt
  • Back-office hardware from the last decade
  • Web front end, native shell
Avalonia .NET home

Avalonia for .NET-oriented desktop work

Avalonia is the cross-platform desktop path for teams in a .NET environment, and it goes beyond Windows-only tooling. It suits business software and internal applications where the organisation's own developers will maintain the code later, since it follows patterns a .NET team already recognises. We pick it when the surrounding infrastructure makes .NET the natural home.

Windows

Native

macOS and Linux

From the same codebase

Backend choice

Firebase vs Supabase, decided by the data

The two backends cover different futures. Firebase gets a first version into users' hands quickly; Supabase leaves the data layer open enough that your own team can grow into it. Which one fits depends less on the framework and more on who keeps the lights on in year two.

Layer

Firebase

Supabase

Data model

Document store, flexible during early changes.

SQL with a real schema and readable queries.

Who maintains it

Fine while the studio holds the wheel.

Comfortable when your team is in SQL already.

Auth and push

Authentication, analytics and push, ready on day one.

Auth plus app backend, with the data inspectable.

Best fit

MVP and early-stage product delivery.

Teams planning to hire in-house later.

Firebase is frequently the backend companion to Flutter or React Native projects. When the data model is straightforward and the priority is getting something into users' hands, it is often the shortest route. Supabase is built around a SQL database, which makes it attractive when a team wants a more open backend layer they can inspect and query directly.

After the first release

Testing, monitoring and the release itself

Three parts of the stack never show up in a pitch deck's first slide, and they decide whether the product survives its second year. They are standard equipment on our projects, not optional extras.

Device testing

Firebase Test Lab for device coverage

Firebase Test Lab runs your app on real devices in the cloud rather than emulators, across a spread of hardware and OS versions. That matters because device fragmentation is a practical risk, not a theoretical one. We run automated passes on the matrix and then use physical handsets for the things automation cannot judge.

  • Automated pass across hardware and OS versions.
  • Handsets for the behaviour automation cannot see.
In production

Sentry for monitoring after release

Sentry tracks runtime errors and stability issues in production, which is the difference between knowing about a crash and hearing about it from an unhappy user weeks later. It records the stack trace, the device and the app version. For any application where reliability matters after launch, this is standard equipment rather than an optional extra.

  • Stack trace, device and version captured together.
  • Errors reach the team before users write in.
Release pipeline

Fastlane and GitHub Actions for releases

Fastlane automates the build and release steps for mobile apps, including the parts of store submission that people forget. Combined with GitHub Actions, it produces repeatable deployment workflows where a release is a defined sequence. Manual release steps are where release friction lives, and removing them is one of the cheaper improvements available to a project.

  • One command releases to both stores.
  • Signing, changelog and submission kept in the pipeline.

Together they turn release from a nervous afternoon into a step in a sequence. That is what most of the stack is for.

What we do with your answer

Tell us what you are building. We will tell you the stack.

Send a paragraph: the platforms you need, the data you keep, who maintains the software once it is live, and the release date you are working back from. In return you get a short written recommendation on framework, backend and release tooling, and the reasons on one page — the same ruled format we use on a project.

The recommendation is free, and it is written for a decision-maker rather than a developer. If we think another studio's stack is a better fit for what you described, the answer says so.