Skip to content

feature request: Proposal: Evaluate migration from React Native CLI to Expo for improved DX and maintainability #6971

@ag21o9

Description

@ag21o9

Feature Description

Proposal: Evaluate migration from React Native CLI to Expo

Problem

The current Rocket.Chat React Native app is built using the React Native CLI and relies heavily on manual native configuration. This leads to:

  • Complex setup for new contributors
  • Dependency conflicts (Node/React version alignment)
  • Longer onboarding time
  • Increased maintenance overhead for native modules
  • Difficult environment reproducibility

During local setup, contributors often face issues related to:

  • Peer dependency mismatches
  • Native build configuration
  • Version compatibility

Proposed Direction

Explore the feasibility of gradually adopting Expo (prebuild/dev-client approach) to improve:

  • Developer experience
  • Faster onboarding for contributors
  • Easier dependency management
  • Reduced native configuration complexity
  • Improved testing and iteration speed

This does NOT necessarily mean a full immediate migration, but rather:

  • Evaluating compatibility with existing native modules
  • Identifying blockers
  • Creating a migration roadmap if feasible

Possible Approach

  1. Audit current native dependencies and Expo compatibility
  2. Test running the project using Expo Dev Client
  3. Document modules requiring custom native support
  4. Propose a phased migration strategy (if viable)

Motivation and Use Case

Expected Benefits

  • Faster setup for contributors
  • Reduced environment-related issues
  • Improved long-term maintainability
  • Easier experimentation and feature development

Implementation Ideas

Willing to Contribute

I would like to take ownership of:

  • Initial feasibility study
  • Dependency compatibility analysis
  • Proof-of-concept setup
  • Documentation for migration path

Would love feedback from maintainers on whether this direction aligns with project goals.

Is this feature available in the API or web version?

Available in API

Rocket.Chat Server Version

No response

Rocket.Chat App Version

No response

Device Name

No response

OS Version

No response

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions