-
Notifications
You must be signed in to change notification settings - Fork 24
Refactor mobile app with Neobrutalism UI using Expo and NativeWind #209
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
base: main
Are you sure you want to change the base?
Changes from all commits
18440c1
1e01b04
665fcca
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,37 +1,8 @@ | ||
| # Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files | ||
|
|
||
| # dependencies | ||
| node_modules/ | ||
|
|
||
| # Expo | ||
| .expo/ | ||
| dist/ | ||
| web-build/ | ||
| expo-env.d.ts | ||
|
|
||
| # Native | ||
| .kotlin/ | ||
| *.orig.* | ||
| *.jks | ||
| *.p8 | ||
| *.p12 | ||
| *.key | ||
| *.mobileprovision | ||
|
|
||
| # Metro | ||
| .metro-health-check* | ||
|
|
||
| # debug | ||
| npm-debug.* | ||
| yarn-debug.* | ||
| yarn-error.* | ||
|
|
||
| # macOS | ||
| npm-debug.log* | ||
| yarn-debug.log* | ||
| yarn-error.log* | ||
| # MacOS | ||
| .DS_Store | ||
| *.pem | ||
|
|
||
| # local env files | ||
| .env*.local | ||
|
|
||
| # typescript | ||
| *.tsbuildinfo |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,8 +13,12 @@ | |
| "resizeMode": "contain", | ||
| "backgroundColor": "#ffffff" | ||
| }, | ||
| "assetBundlePatterns": [ | ||
| "**/*" | ||
| ], | ||
| "ios": { | ||
| "supportsTablet": true, | ||
| "bundleIdentifier": "com.splitwiser.mobile", | ||
| "infoPlist": { | ||
| "NSPhotoLibraryUsageDescription": "Allow Splitwiser to select a group icon from your photo library." | ||
| } | ||
|
|
@@ -25,11 +29,29 @@ | |
| "backgroundColor": "#ffffff" | ||
| }, | ||
| "edgeToEdgeEnabled": true, | ||
| "permissions": ["READ_MEDIA_IMAGES"] | ||
| "permissions": ["READ_MEDIA_IMAGES"], | ||
| "package": "com.splitwiser.mobile" | ||
| }, | ||
| "web": { | ||
| "favicon": "./assets/favicon.png" | ||
| "favicon": "./assets/favicon.png", | ||
| "bundler": "metro" | ||
| }, | ||
| "plugins": [ | ||
| "expo-router", | ||
| "expo-font", | ||
| [ | ||
| "expo-build-properties", | ||
| { | ||
| "android": { | ||
| "newArchEnabled": true | ||
| }, | ||
| "ios": { | ||
| "newArchEnabled": true | ||
| } | ||
|
Comment on lines
+45
to
+50
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# First, locate and examine the package.json file
find . -name "package.json" -type f | head -20Repository: Devasy23/splitwiser Length of output: 103 🏁 Script executed: #!/bin/bash
# Check the structure to understand where mobile/package.json is
ls -la mobile/ 2>/dev/null | head -20Repository: Devasy23/splitwiser Length of output: 1069 🌐 Web query:
💡 Result: Short answer: Reanimated 4.1.1 requires the React Native New Architecture (Fabric) — it does not support the legacy (old/Paper) architecture. It is compatible with recent React Native releases (supported 0.78–0.82 in the official compatibility matrix) and expects react-native-worklets 0.5.x or 0.6.x as a peer dependency. If you need to stay on the old architecture, use Reanimated 3.x. [1][2] Sources:
🌐 Web query:
💡 Result: Short answer: NativeWind 4.1.23 (released Nov 4, 2024) is a v4 release and does not ship full, explicit support for React Native's New Architecture (Fabric/TurboModules). NativeWind v5 is the release that documents explicit New Architecture / RN 0.81+ requirements and new styling features that rely on the New Architecture — upgrade to v5 if you need full New-Architecture support. [1][2][3][4] Sources
🌐 Web query:
💡 Result: Short answer: Yes. react-native-svg added Fabric / New Architecture support back in the v13 major release, and v15.12.1 (released Jul 31, 2025) is compatible with newer React Native releases (adds RN 0.81.0 support and related fixes). [1][2] Sources:
🌐 Web query:
💡 Result: Short answer
What to check / do
References
If you want, I can: (a) check which react-native-svg version you have and recommend an exact upgrade, or (b) list commands to enable/disable the New Architecture for iOS/Android and run a quick compatibility checklist. 🏁 Script executed: #!/bin/bash
# Read the mobile/package.json to see actual dependency versions
cat -n ./mobile/package.jsonRepository: Devasy23/splitwiser Length of output: 1716 Upgrade nativewind to v5 for full React Native new architecture support. The concern about
Action: Upgrade nativewind from 4.1.23 to 5.x to ensure full new architecture compatibility with your React Native 0.81.5 setup. 🤖 Prompt for AI Agents |
||
| } | ||
| ] | ||
| ], | ||
| "scheme": "splitwiser", | ||
| "extra": { | ||
| "eas": { | ||
| "projectId": "afe97159-52c4-425a-9ce3-c56d4f2cb568" | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'; | ||
| import { useFonts } from 'expo-font'; | ||
| import { Stack } from 'expo-router'; | ||
| import * as SplashScreen from 'expo-splash-screen'; | ||
| import { useEffect } from 'react'; | ||
| import { Inter_400Regular, Inter_700Bold } from '@expo-google-fonts/inter'; | ||
| import { SpaceGrotesk_400Regular, SpaceGrotesk_700Bold } from '@expo-google-fonts/space-grotesk'; | ||
| import "../global.css"; | ||
| import { StatusBar } from 'expo-status-bar'; | ||
|
|
||
| // Prevent the splash screen from auto-hiding before asset loading is complete. | ||
| SplashScreen.preventAutoHideAsync(); | ||
|
|
||
| export default function RootLayout() { | ||
| const [loaded] = useFonts({ | ||
| Inter_400Regular, | ||
| Inter_700Bold, | ||
| SpaceGrotesk_400Regular, | ||
| SpaceGrotesk_700Bold, | ||
| }); | ||
|
|
||
| useEffect(() => { | ||
| if (loaded) { | ||
| SplashScreen.hideAsync(); | ||
| } | ||
| }, [loaded]); | ||
|
Comment on lines
+22
to
+26
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Add error handling for font loading failures. The Consider handling the error state from - const [loaded] = useFonts({
+ const [loaded, error] = useFonts({
Inter_400Regular,
Inter_700Bold,
SpaceGrotesk_400Regular,
SpaceGrotesk_700Bold,
});
useEffect(() => {
- if (loaded) {
+ if (loaded || error) {
SplashScreen.hideAsync();
}
}, [loaded]);
+
+ if (error) {
+ console.error('Font loading error:', error);
+ }
🤖 Prompt for AI Agents |
||
|
|
||
| if (!loaded) { | ||
| return null; | ||
| } | ||
|
|
||
| return ( | ||
| <ThemeProvider value={DefaultTheme}> | ||
| <Stack> | ||
| <Stack.Screen name="index" options={{ headerShown: false }} /> | ||
| </Stack> | ||
| <StatusBar style="dark" /> | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial StatusBar positioning may be incorrect. The
The current positioning might cause the StatusBar to remount unnecessarily during navigation transitions. Consider moving it outside the return (
<ThemeProvider value={DefaultTheme}>
+ <StatusBar style="dark" />
<Stack>
<Stack.Screen name="index" options={{ headerShown: false }} />
</Stack>
- <StatusBar style="dark" />
</ThemeProvider>
);
🤖 Prompt for AI Agents |
||
| </ThemeProvider> | ||
| ); | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Overly broad asset bundle pattern may include unnecessary files.
The pattern
"**/*"includes all files under the app directory in the asset bundle. This may inadvertently include build artifacts, cache files, or other non-asset files. Consider restricting the pattern to only necessary asset directories or file types, e.g.,["assets/**/*", "**/*.ttf"](if using fonts and other specific assets).🤖 Prompt for AI Agents