8000 Move to react native · Issue #420 · LiamMorrow/LiftLog · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Move to react native #420

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
LiamMorrow opened this issue Mar 12, 2025 · 4 comments
Open

Move to react native #420

LiamMorrow opened this issue Mar 12, 2025 · 4 comments
Assignees
Labels

Comments

@LiamMorrow
Copy link
Owner
LiamMorrow commented Mar 12, 2025

LiftLog has come a long way since its inception. It started as a blazor app, then moved into Blazor MAUI. I've always wanted it to be more of a native app rather than a webview. This would make navigation feel a lot better and hopefully increase render performance. Being able to publish directly to web rather than an app is also one of the main benefits I got out of it, however it is mainly useful to me as a developer.

The Blazor tooling in vscode has not really gotten much better in the years since I started, and many issues are left open for a while. In order to improve DEVEX, a rewrite into react-native with expo is being undertaken. You can follow along its progress in the react-native branch. I expect this to take at LEAST a couple months of solid work.

Drawbacks:

  • No longer uses tailwind. Nativewind was looked at, however it seemed to cause many issues at runtime. This is not so bad as the react native styling is more flex based by default
  • Although I love typescript, C# has many features that JS does not (language level pattern matching being one I'll miss sorely). Additionally a native decimal type is used prolifically. Also linq.

Additional niceties:

  • Aside from a much faster dev loop, I am able to utilize the MUCH larger ecosystem, and Tolgee is one of these things. Translating the app will now be MUCH better where a user can simply submit a translation by ALT clicking a string
  • Overscroll effects should now work on android. This is small, but it makes the app feel a lot more native
  • Components will be rendered with their native elements, not in a webview.
  • Along with the ecosystem, we gain access to libraries which deal with icloud/google drive backup - allowing more users to back up to the cloud (don't worry, self hosted backup won't go anywhere)
@LiamMorrow LiamMorrow self-assigned this Mar 12, 2025
@LiamMorrow LiamMorrow pinned this issue Mar 12, 2025
@LiamMorrow
Copy link
Owner Author
LiamMorrow commented Mar 12, 2025

The plan will be (in no strict order, these will have subtasks depending on the area of the app and may be done in parallel, e.g. settings might all be done at once):

  • Port all presentation components
  • Port storage - this will be tricky as we use secure storage in .NET so we may need to have an update out w 8000 hich migrates away from this. Maybe I can find a way to read from it in our new rn project
  • Port state (unsure if I will use state management, or context). This will be a LARGE task
  • Port smart components
  • Port pages
  • Change build scripts

Ideally when it is all done, we should be able to run the cypress test suite against the RN web build

@LiamMorrow
Copy link
Owner Author

I have been working at this in the react-native branch. It's coming together somewhat quickly.

I have decided:

  1. Redux for state
  2. We should be able to read from our original storage
  3. There can be a couple more smart components to prevent more prop drilling

@Kovah
Copy link
Kovah commented Apr 30, 2025

Hi Liam! Liftlog looks really great and I'm keen to try it out. Will there be a seamless upgrade to the new version once it's released?

@LiamMorrow
Copy link
Owner Author

G'day @Kovah yeah that's the plan. There will be a transition period where I move the settings into a place where the new app will be able to read them, but your progress and plans is already in a compatible location.

At worst case, if a user does not use the current version of liftlog, before the react version goes out, they will lose settings (stuff like theme and whatnot, nothing crititcal)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants
0