[jitsi-users] Personalize mobile app using React Native or Swift


#1

Hi guys,

I am planning on extending the existing react native app for my own setup and would like to know what you would recommend as best approach to accomplish this. In short want to add login, and other specific features and integrate with the video calls.

Option 1: Extend the app with Swift code

Option 2: Extend the app with React Native

I did a pilot with option 2 but had to do lots of tweaks like changing the React version to be compatible and so on. Having that said, is there a best practice?

Best,
Jose


#2

Hi guys,

I am planning on extending the existing react native app for my own setup and would like to know what you would recommend as best approach to accomplish this. In short want to add login, and other specific features and integrate with the video calls.

Option 1: Extend the app with Swift code

In my mind Option 1 would be good if:

1.1. You're embedding `JitsiMeetView` in your purely native iOS app,
your customizations are outside of the visible rectangle of
`JitsiMeetView`. For example, if your login is a screen of your purely
native iOS app which then navigates to `JitsiMeetView`.

1.2. You have source code written in Swift that you'd like to reuse in
`JitsiMeetView` so you may expose it to `JitsiMeetView`, react-native,
and JavaScript in the form of a react-native native module and then
consume if in the JavaScript source code of `JitsiMeetView`.

Option 2: Extend the app with React Native

Option 2 to me is the way to go if you want to modify what's inside
the visible rectangle of `JitsiMeetView`. Then I'd suggest writing
JavaScript source code like we do, building your own Jitsi Meet app or
SDK for iOS from the modified source code.

I did a pilot with option 2 but had to do lots of tweaks like changing the React version to be compatible and so on. Having that said, is there a best practice?

The version of react-native is tied to the version(s) of react but we
are the one who make sure that the versions of react and react-native
in package.json are compatible. Of course, if you need a newer version
of react like 16 for your purposes, you're diverting from us and
you'll have to fiddle with the react-native version as well. (We'll
update to react 16 and the latest compatible release of react-native
as soon as react 16 is stable.)

Please keep is posted and let us which way you decide to go, why you
made that choice, etc.

···

On Wed, Sep 13, 2017 at 7:40 AM, Jose Simoes <simoes83@gmail.com> wrote:


#3

Hi everyone,

Back to this topic.. and as requested by Lyobomir, providing my 2 cents on what we ended up doing. In short, while option 1 seemed the best (based on the explanations provided) we option for option 2. While we didn’t need to change anything on the Jitsi Meet part, we didn’t want to maintain 2 separate apps due to resources (people) constraints.

My main concern was performance but react native seems to do the trick. The Android app is live for a few days now and the iOS will be released next week. Hope it helps other people thinking about extending their apps as well.

Best,
Jose

···

On 13 Sep 2017, at 15:46, Lyubomir Marinov <lyubomir.marinov@jitsi.org> wrote:

On Wed, Sep 13, 2017 at 7:40 AM, Jose Simoes <simoes83@gmail.com> wrote:

Hi guys,

I am planning on extending the existing react native app for my own setup and would like to know what you would recommend as best approach to accomplish this. In short want to add login, and other specific features and integrate with the video calls.

Option 1: Extend the app with Swift code

In my mind Option 1 would be good if:

1.1. You're embedding `JitsiMeetView` in your purely native iOS app,
your customizations are outside of the visible rectangle of
`JitsiMeetView`. For example, if your login is a screen of your purely
native iOS app which then navigates to `JitsiMeetView`.

1.2. You have source code written in Swift that you'd like to reuse in
`JitsiMeetView` so you may expose it to `JitsiMeetView`, react-native,
and JavaScript in the form of a react-native native module and then
consume if in the JavaScript source code of `JitsiMeetView`.

Option 2: Extend the app with React Native

Option 2 to me is the way to go if you want to modify what's inside
the visible rectangle of `JitsiMeetView`. Then I'd suggest writing
JavaScript source code like we do, building your own Jitsi Meet app or
SDK for iOS from the modified source code.

I did a pilot with option 2 but had to do lots of tweaks like changing the React version to be compatible and so on. Having that said, is there a best practice?

The version of react-native is tied to the version(s) of react but we
are the one who make sure that the versions of react and react-native
in package.json are compatible. Of course, if you need a newer version
of react like 16 for your purposes, you're diverting from us and
you'll have to fiddle with the react-native version as well. (We'll
update to react 16 and the latest compatible release of react-native
as soon as react 16 is stable.)

Please keep is posted and let us which way you decide to go, why you
made that choice, etc.