Skip to content

[Formulus] Upgrade Formulus from RN 0.83 -> RN 0.86 (or 0.87) #734

Description

@r0ssing

Component

  • formulus (React Native mobile app)
  • formulus-formplayer (React web app)
  • synkronus (Go backend server)
  • synkronus-cli (Command-line utility)
  • Documentation
  • Other (please specify)

Upgrade Formulus from RN 0.83 -> RN 0.86 (or 0.87)

Problem Statement

We are slowly getting a bit dated on React Native version 0.83...

  • RN 0.84: Hermes V1 by default. This brings runtime performance improvements. It also uses precompiled React Native binaries on iOS, which can significantly reduce clean iOS build times. Legacy Architecture code is removed from normal iOS builds, reducing build time and potentially app size.
  • RN 0.85: better animations. A new shared animation backend improves the infrastructure underneath both Animated and Reanimated. Native-driver animations can now animate layout properties, and Reanimated can take advantage of improvements that weren't previously possible.
  • RN 0.86: improved Android edge-to-edge support, particularly Android 15+, plus DevTools improvements and assorted rendering/Yoga fixes. Importantly, 0.86 has no user-facing breaking changes relative to 0.85.
  • RN 0.87: much better TypeScript API guarantees. The Strict TypeScript API is now the default. Types are generated directly from RN's source rather than separately maintained definitions, which should reduce cases where TypeScript says one thing while RN actually does another.
  • RN 0.87: faster Metro. React Native says source-map generation is about 2× faster and Metro uses about half the memory for source-map storage. It also has stable TypeScript/ESM Metro configs.
  • Keeping up with the ecosystem. This may actually be the biggest practical reason. React Native libraries increasingly test against newer RN releases. Staying on 0.83 eventually makes upgrades of Reanimated, screens, navigation, native modules, Android/iOS tooling, etc. increasingly awkward.

Planning

Maybe a target for v1.4.0?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions