Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
  • May 11 2019 09:03

    janbiedermann on master

    update config for example and t… (compare)

  • May 11 2019 08:43

    janbiedermann on master

    further readme split up (compare)

  • May 11 2019 08:24

    janbiedermann on master

    fix travis config (compare)

  • May 11 2019 08:21

    janbiedermann on master

    fix links (compare)

  • May 11 2019 08:19

    janbiedermann on master

    exclude specs in fixtures clean up a bit corrections in readme and 8 more (compare)

  • May 11 2019 06:09

    janbiedermann on master

    update branch for compilation t… add es6_modules_string branch t… (compare)

  • May 10 2019 20:11

    janbiedermann on master

    let var be let (compare)

  • May 10 2019 18:42

    janbiedermann on master

    add test to execute ruby with c… (compare)

  • May 10 2019 17:18

    janbiedermann on master

    update doc for branches and PRs (compare)

  • May 10 2019 13:00

    janbiedermann on master

    keep test_apps folder for tests (compare)

  • May 10 2019 12:21

    janbiedermann on master

    simplify a bit spec add owl to dependencies test for 'public/assets' add te… and 2 more (compare)

  • May 09 2019 21:53
    francescoagati closed #2
  • May 09 2019 21:53
    francescoagati commented #2
  • May 09 2019 21:47
    janbiedermann commented #2
  • May 09 2019 16:02
    francescoagati opened #2
  • May 09 2019 16:01
    francescoagati starred isomorfeus/opal-webpack-loader
  • May 04 2019 02:19

    janbiedermann on master

    document file tree more accurat… (compare)

  • May 03 2019 16:30
  • May 03 2019 15:42

    janbiedermann on 0.7.3


  • May 03 2019 15:41

    janbiedermann on 0.7.3


Isomorfeus Robot
[slack] <janbiedermann> Who said React Native needs alot of extra work for writing apps? No more, :isomorfeus: rules.
[slack] <janbiedermann> (Well, for common cases 😉)
[slack] <janbiedermann> Its still early. But, let me see if this works ...
[slack] <Forrest Chang> very nice!
Isomorfeus Robot
[slack] <janbiedermann> Yeehaa 🏇
[slack] <janbiedermann> Rendering SVG
[slack] <janbiedermann> one more thing, let me try ...
[slack] <janbiedermann> Even a button works! (cheating a bit)
Isomorfeus Robot
[slack] <janbiedermann> So nice, i am very happy so far. Tomorrow fix some render issues and component resolution issues. Hot reloading does not work anymore in ReactNative, maybe i broke it, not sure what changed.
Isomorfeus Robot
[slack] <janbiedermann> :general: has one more item, that is to wrap the other React Native API, for web, luckily, the react-native-web project implemented most of these, fantastic, so Mobile/Web App is absolutely possible.
[slack] <janbiedermann> I mean while using a lot ReactNative special things even on the Web, or the other way around.
Isomorfeus Robot
[slack] <janbiedermann> i named the import mobile_and_tablet.js and the loader mobile_and_tablet_loader.rb
Isomorfeus Robot
[slack] <janbiedermann> > the renderer, where in web react expects children as args to createElement, in native a array is expected
This actually wrong, there are just some components who demand children as array, renderer in this respect works perfect. Maybe just need to wrap the components affected to convert children to a array.
Isomorfeus Robot
[slack] <janbiedermann> isomorfeus-react 16.13.7:
• repair Component resolution issues, one found by @Tomasz Lemkowski, thanks 👍
• improve performance a bit, by 0 to 12% depending on use case. (also benefits React Native)
• prepare for React Native and Isomorfeus Professional
[slack] <janbiedermann> Oh, and:
• improve hot reloading, now hot reloading also works with themes, like Mui Themes (notifying @frédéric ZINGG)
Isomorfeus Robot
[slack] <janbiedermann> isomorfeus-react 16.13.8.:
• repair a problem with Hot Reloading on React Native
Isomorfeus Robot
[slack] <janbiedermann> Today, well, yesterday now actually, i woke up and had a idea how to improve render for speed.
This is the result:
[slack] <janbiedermann> on the left ~16.13.6 on the right 16.13.9, very nice, specifically times for interactions in "select row" and "partial update" dropped significantly. (ignore version numbers in table headers, they would need manual update for which i am to lazy)
[slack] <janbiedermann> especially for LucidComponent and LucidMaterial::Component
[slack] <janbiedermann> This should help React Native performance even more, but i can't measure that yet.
[slack] <janbiedermann> so:
isomorfeus-react 16.13.9:
• improve performance
[slack] <janbiedermann> With such performance i took the liberty to sacrifice a bit in favor of correct ruby semantics and reducing code duplication.
Isomorfeus Robot
[slack] <janbiedermann> isomorfeus-react 16.13.10: Sacrifice a super tiny bit of performance in favor of correct ruby semantics and reducing code duplication.
Isomorfeus Robot

[slack] <janbiedermann> Today i wanted to get electron working, but i stopped before i started, because to have desktop apps, electron is actually not necessary.
For macOS there is now Catalyst, which allows to to build a ios project for macOS to get a Desktop App.
For windows there is: https://github.com/Microsoft/react-native-windows
For Linux, macOS and Windows there is: https://github.com/status-im/react-native-desktop
No need to introduce electron.

That means :isomorfeus: has now only 2 targets: web and native, with native covering ios, android, desktop, tv
imports are called web.js etc, and native.js
loaders are called web_loader.rb and native_loader.rb

Simplifies things. Very nice.

So instead today i got transport working on native 🙂

Much better, and now, again, i try to focus on arango to get it working to enable most cool features.

[slack] <janbiedermann> I would like to introduce General Plan :general: for :react: Native :fbmetro: :watchman: and :electron: Support:
✅ gradually integrate :react: native support for environment detection on_mobile? on_ios?
• support several implementation strategies:

  1. web first, mobile second: map them all via React::Components::Elements to Text and others with proper styling or some other appropriate component. (i did that mapping for the demo)
  2. mobile first, web second: https://github.com/necolas/react-native-web - making the react native components available to the web
  3. mobile + web: https://github.com/react-native-elements/react-native-elements , looks like there equal in weight
    and at the same time leaves another question open: What about regular components that use React.createElement('div')?
    Maybe they want to emphasize the fact, that there is no DOM. But well, for most cases it does not matter, at least in :isomorfeus: . If the DOM is used, well, DOOM is spelled very close to DOM anyway.
    ✅ figure out event handling in :react: native: same as react web technically, just a small set of events, mapping to web events seems logic, can be done in the prop conversion code:
    on_press <-> on_click, on_change_text <-> on_change, on_submit_text <-> on_blur (super easy, but check all possible events)
    ✅ figure out a :isomorfeus: compatible way to boot the app: figured it out 🙂 in my experimental app. Easy to integrate.
    ✅ figure out a way to handle react -router :router:: figured it out, works just the same as for web, very nice 😃
    • figure out how to support react-jss: React native has its own Styling, very similar to ReactJss, however styling is limited. But it is possible to write styles for mobile + web. Theming does not seem to be available though. Needs some experimentation, maybe the react jss code works. If the theming code works that would be enough. If not, it will be required to adapt LucidComponents accordingly. (react-native-elements has theming, maybe use code from there)
    ✅ 📵 material-ui :mui: is not supported.
    • map html elements (react-native-elements has h1...h4, maybe use code from there)
    ✅ svg https://github.com/react-native-community/react-native-svg and canvas https://github.com/iddan/react-native-canvas support , needs mapping
    ✅ server communication/transport: Websockets work just the same, server must be explicitly specified though, localhost may be device local, but:
    • cookies dont work, so authentication must use a separate way, no problem here.
    • syncing of data
    • persistent data store (also useful for web): https://github.com/react-native-community/async-storage, https://developer.mozilla.org/en-US/docs/Web/API/Storage, i dentical API, :isomorfeus: just needs to provide a wrapper for both.
    • run specs in native (with isomorfeus-puppetmaster, which currently uses puppeteer, but may use testcafe in the future)
    • Wrap non Component React Native API for Ruby
    ✅ debugging works, js wise, choosing debug from dev menu of simulator, opens chrome devtools for remote debugging, nice. opal-devtools don't work with this, would be nice to get them working too. Not sure if possible.
    ✅ get hot reloading with metro :fbmetro: and watchman :watchman: working

The goal of all of this is, to create native apps with the least effort from :isomorfeus: users point of view. The user creates the web app and, maybe with a few ifs added, it will just work on native. Or the other way around.

[slack] <janbiedermann> Oh, environment detection is a issue for Desktop, as i have no idea how to detect the environment for those desktop implementations. Will do it "on the job".
Isomorfeus Robot
[slack] <frédéric ZINGG> nice, did not know about react-native-desktop.
Isomorfeus Robot
[slack] <janbiedermann> Seems i found the perfect, comprehensive toolkit for shared web + mobile development:
[slack] <janbiedermann> react-native-paper :paper: https://reactnativepaper.com/
[slack] <janbiedermann> Looks like it supports all of :mui: . I expect to add direct support for :paper: soon.
Isomorfeus Robot
[slack] <janbiedermann> I like the class names: LucidPaper::Component ... 😉
Isomorfeus Robot
[slack] <janbiedermann> React Native version 62 is out, thats 0.62.0, so now, i guess, i have to go through all the setup procedure again ...
Isomorfeus Robot

[slack] <janbiedermann> Also, as i am working on :isomorfeus: pro, getting the subscription agreement ready, i noticed it is a lot of effort to get things setup for pro, with separate repos, code interaction and the agreement text and bla bla bla ....

So, considering the current situation of the world and the main reason :isomorfeus: exists: EMPOWERMENT, i decided to give up on :isomorfeus: PRO and instead make PRO part of standard :isomorfeus: and all under MIT License of course.

This is way less trouble for me to get things rolling, set up etc.

I still offer professional consulting, training, support for :isomorfeus:

Isomorfeus Robot
[slack] <janbiedermann> To clarify :isomorfeus: comes with PRO included
Isomorfeus Robot
[slack] <janbiedermann> The upcoming version of isomorfeus requires :redis: redis
Isomorfeus Robot
[slack] <frédéric ZINGG> is redis replacing iodine ?
[slack] <frédéric ZINGG> or no link at all.
[slack] <janbiedermann> no link at all, iodine is the rack server, redis used as sessions store
But i consider to replace iodine with agoo, but need to test first
As :isomorfeus: requires redis anyway now, no need to stick with iodine.
The reason for iodine was to keep setup simple.
Agoo requires redis for pubsub, for iodine redis is optional for pubsub.
[slack] <janbiedermann> Oh, i forgot, we can have session store in db too
[slack] <janbiedermann> Well, this obviously needs some more thought 🤣
Isomorfeus Robot
[slack] <frédéric ZINGG> ha ok, so without REDIS, what managed pubsub ?
[slack] <frédéric ZINGG> iodine ?
[slack] <janbiedermann> right
[slack] <frédéric ZINGG> ok, so this is why I got confused.
[slack] <janbiedermann> np
[slack] <janbiedermann> i am not so happy with iodine because of the connection/request stalls we experience. Maybe agoo is more reliable, need to experiment.
If agoo is in fact more stable, i will drop iodine support, but then :redis: will be a requirement.