chore: update upstream to v9.0.0#155
Open
devs-rootstrap wants to merge 17 commits into
Open
Conversation
…ate related components
…nhance documentation
…ck Form for form handling
feat: React Native Template v10 - Major Upgrade
There was a problem hiding this comment.
Pull request overview
This PR syncs the template with upstream obytes/react-native-template-obytes@v9.0.0, introducing the newer “feature-based” structure, updated styling stack (Uniwind + CSS theme file), and updated tooling/docs to match upstream conventions.
Changes:
- Migrates styling/theming toward Uniwind and a CSS-driven theme (
src/global.css), updating related UI hooks/components. - Reworks environment configuration toward a unified
env.ts+@envTS path mapping. - Adds/updates example feature modules (feed/auth/settings/onboarding), along with Jest + Maestro + docs updates to reflect the new structure.
Reviewed changes
Copilot reviewed 133 out of 149 changed files in this pull request and generated 18 comments.
Show a summary per file
| File | Description |
|---|---|
| uniwind-types.d.ts | Adds generated Uniwind type declarations. |
| tsconfig.json | Updates TS path mapping and include list (adds env.ts). |
| src/lib/utils.ts | Updates utilities; currently includes unresolved merge conflict markers. |
| src/lib/test-utils.tsx | Updates RTL/Jest helpers; currently includes unresolved merge conflict markers. |
| src/lib/index.tsx | Removes previous src/lib barrel exports. |
| src/lib/i18n/utils.tsx | Refactors i18n helpers; currently includes unresolved merge conflict markers. |
| src/lib/i18n/react-i18next.d.ts | Updates react-i18next typing augmentation. |
| src/lib/i18n/index.tsx | Refactors i18n initialization; currently includes unresolved merge conflict markers. |
| src/lib/hooks/use-selected-theme.tsx | Moves theme selection to Uniwind; currently includes unresolved merge conflict markers. |
| src/lib/hooks/use-is-first-time.tsx | Refactors hook export style. |
| src/lib/hooks/index.tsx | Adds lint directive and re-exports hooks. |
| src/lib/env.js | Removes old env loader from src/lib. |
| src/lib/auth/index.tsx | Removes old auth store location (moved to features). |
| src/lib/api/utils.tsx | Moves/shared API utils; currently includes unresolved merge conflict markers. |
| src/lib/api/provider.tsx | Updates React Query provider module. |
| src/lib/api/interceptors.ts | Adds axios interceptors for auth headers + case conversion. |
| src/lib/api/index.ts | Updates API exports. |
| src/lib/api/client.tsx | Adds axios client; currently includes unresolved merge conflict markers. |
| src/lib/api/axios.d.ts | Adds axios typing workaround for interceptor handler typing. |
| src/global.css | Introduces Tailwind/Uniwind CSS theme configuration under src/. |
| src/features/style-demo/style-screen.tsx | Adds new style demo screen under feature structure. |
| src/features/style-demo/components/typography-demo.tsx | Adds typography demo component; currently includes unresolved merge conflict markers. |
| src/features/style-demo/components/title.tsx | Adds shared demo section title; currently includes unresolved merge conflict markers. |
| src/features/style-demo/components/inputs-demo.tsx | Adds inputs demo; currently includes unresolved merge conflict markers. |
| src/features/style-demo/components/colors-demo.tsx | Adds colors demo; currently includes unresolved merge conflict markers. |
| src/features/style-demo/components/buttons-demo.tsx | Adds buttons demo; currently includes unresolved merge conflict markers. |
| src/features/settings/settings-screen.tsx | Adds new settings screen under feature structure (uses env + i18n keys). |
| src/features/settings/components/theme-item.tsx | Adds theme selection item; currently includes unresolved merge conflict markers. |
| src/features/settings/components/settings-item.tsx | Adds settings row component; currently includes unresolved merge conflict markers. |
| src/features/settings/components/settings-container.tsx | Adds grouped settings container UI. |
| src/features/settings/components/language-item.tsx | Adds language selection item; currently includes unresolved merge conflict markers. |
| src/features/settings/components/delete-account-item.tsx | Adds delete-account item (currently has broken imports that must be fixed). |
| src/features/onboarding/onboarding-screen.tsx | Adds onboarding screen under feature structure. |
| src/features/feed/post-detail-screen.tsx | Adds post detail screen under feature structure. |
| src/features/feed/feed-screen.tsx | Adds feed list screen using FlashList. |
| src/features/feed/components/post-card.tsx | Adds post card component (currently uses non-deterministic image selection). |
| src/features/feed/api.ts | Adds feed API hooks (React Query Kit + axios client). |
| src/features/feed/add-post-screen.tsx | Adds add-post screen (TanStack Form + zod). |
| src/features/auth/use-auth-store.tsx | Adds auth store under feature structure; currently includes unresolved merge conflict markers. |
| src/features/auth/login-screen.tsx | Adds login screen wired to the new auth store. |
| src/features/auth/components/login-form.tsx | Adds login form using TanStack Form + zod. |
| src/features/auth/components/login-form.test.tsx | Adds login form unit tests. |
| src/components/ui/utils.tsx | Refactors UI utils; currently includes unresolved merge conflict markers. |
| src/components/ui/use-theme-config.tsx | Switches theme config hook to Uniwind; currently includes unresolved merge conflict markers. |
| src/components/ui/text.tsx | Refactors Text component; currently includes unresolved merge conflict markers. |
| src/components/ui/select.tsx | Refactors Select; currently includes unresolved merge conflict markers. |
| src/components/ui/progress-bar.tsx | Refactors ProgressBar; currently includes unresolved merge conflict markers. |
| src/components/ui/modal.tsx | Refactors Modal; currently includes unresolved merge conflict markers. |
| src/components/ui/modal-keyboard-aware-scroll-view.tsx | Updates keyboard-aware BottomSheet scroll view; currently includes unresolved merge conflict markers. |
| src/components/ui/input.tsx | Refactors Input; currently includes unresolved merge conflict markers. |
| src/components/ui/index.tsx | Switches Svg interop approach to withUniwind via StyledSvg. |
| src/components/ui/image.tsx | Refactors Image wrapper; currently includes unresolved merge conflict markers. |
| src/components/ui/icons/*.tsx | Refactors icon components (several now rely on className styling). |
| src/components/ui/form-utils.ts | Adds TanStack Form field error extraction helper. |
| src/components/ui/focus-aware-status-bar.tsx | Switches status bar styling to Uniwind; currently includes unresolved merge conflict markers. |
| src/components/ui/checkbox.tsx | Refactors Checkbox/Radio/Switch; currently includes unresolved merge conflict markers. |
| src/components/ui/button.tsx | Refactors Button; currently includes unresolved merge conflict markers. |
| src/components/typography.tsx | Removes old non-feature typography demo component. |
| src/components/title.tsx | Removes old non-feature title component. |
| src/components/colors.tsx | Removes old non-feature colors demo component. |
| src/components/buttons.tsx | Removes old non-feature buttons demo component. |
| src/app/onboarding.tsx | Routes onboarding to feature screen; currently includes unresolved merge conflict markers. |
| src/app/feed/add-post.tsx | Routes add-post to feature screen; currently includes unresolved merge conflict markers. |
| src/app/feed/[id].tsx | Routes post detail to feature screen; currently includes unresolved merge conflict markers. |
| src/app/+html.tsx | Adds eslint disable comment for dangerouslySetInnerHTML on web. |
| src/app/(app)/style.tsx | Routes style tab to feature screen; currently includes unresolved merge conflict markers. |
| src/app/(app)/settings.tsx | Routes settings tab to feature screen; currently includes unresolved merge conflict markers. |
| src/app/(app)/index.tsx | Routes feed tab to feature screen; currently includes unresolved merge conflict markers. |
| src/app/(app)/_layout.tsx | Updates app tabs layout; currently includes unresolved merge conflict markers. |
| src/app/_layout.tsx | Updates root providers/css/theme/auth hydration; currently includes unresolved merge conflict markers. |
| src/api/common/client.tsx | Removes old axios client location. |
| scripts/i18next-syntax-validation.js | Updates i18n syntax validation; currently includes unresolved merge conflict markers. |
| README.md | Updates README content; currently includes unresolved merge conflict markers. |
| prompts/* | Removes several prompt markdown files. |
| metro.config.js | Updates Metro config for Uniwind; currently includes unresolved merge conflict markers. |
| lint-staged.config.js | Updates lint-staged tasks (notably JSON handling). |
| jest.config.js | Updates Jest ignore patterns and setup filename. |
| jest-setup.ts | Expands Jest mocks for Reanimated/MMKV/localization. |
| global.css | Removes root CSS entry (moved to src/global.css). |
| eslint.config.mjs | Switches ESLint configuration style; currently includes unresolved merge conflict markers. |
| env.ts | Adds unified environment schema + runtime env object. |
| eas.json | Updates EAS profiles; currently includes unresolved merge conflict markers. |
| docs/src/content/docs/** | Updates documentation to match upstream structure/tools (Uniwind, TanStack Form, feature-based APIs). |
| claude.md | Adds project overview/dev workflow guide. |
| babel.config.js | Removes NativeWind-specific Babel preset/plugins. |
| app.config.ts | Updates Expo config + font plugin; currently includes unresolved merge conflict markers. |
| .vscode/settings.json | Updates editor settings (disables Prettier, enables ESLint fixes); currently includes unresolved merge conflict markers. |
| .maestro/** | Updates Maestro flows and string quoting. |
| .gitignore | Ignores ios/ and android/. |
| .github/workflows/** | Updates workflow YAML formatting and some messages. |
| .github/actions/** | Adds composite EAS build action and tweaks composite action YAML formatting. |
| .env | Adds example env file for the new env strategy. |
| tests/components/ui/*.test.tsx | Updates UI tests; currently includes unresolved merge conflict markers. |
| package.json | Updates scripts/deps; currently includes unresolved merge conflict markers. |
| pnpm-lock.yaml | Updates lockfile; currently includes unresolved merge conflict markers. |
Comments suppressed due to low confidence (6)
src/lib/utils.ts:16
- This file still contains unresolved git merge-conflict markers (e.g.,
<<<<<<< HEAD). TypeScript will not compile until the conflict is resolved and only onecreateSelectorsimplementation remains.
src/lib/test-utils.tsx:15 - Unresolved merge-conflict markers are present here (e.g.,
<<<<<<< HEAD). Jest setup/helpers will fail to parse until the conflict is resolved.
src/lib/api/utils.tsx:45 - Unresolved merge-conflict markers are present in
getUrlParameters/pagination helpers. This file will not compile until the conflict is resolved and only one implementation remains.
src/features/settings/components/theme-item.tsx:6 - This file still has unresolved merge-conflict markers at the top (and later in the
useMemofor selecting the theme). It will not compile until resolved.
src/features/settings/components/settings-item.tsx:8 - Unresolved merge-conflict markers are present, and the file currently contains both
ItemandSettingsItemvariants. This will break compilation until the conflict is resolved.
src/features/settings/components/language-item.tsx:12 - Unresolved merge-conflict markers are present at the top and in the language list memoization. This file will not compile until the conflict is resolved.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
1
to
+7
| import type TranslateOptions from 'i18next'; | ||
| <<<<<<< HEAD | ||
| import { changeLanguage as i18nChangeLanguage, t } from 'i18next'; | ||
| import memoize from 'lodash.memoize'; | ||
| import { useCallback } from 'react'; | ||
| import { NativeModules, Platform } from 'react-native'; | ||
| ======= |
Comment on lines
+1
to
+8
| <<<<<<< HEAD | ||
| import { getLocales } from 'expo-localization'; | ||
| import i18n, { dir, use } from 'i18next'; | ||
| ======= | ||
| /* eslint-disable react-refresh/only-export-components */ | ||
| import { getLocales } from 'expo-localization'; | ||
| import i18n from 'i18next'; | ||
| >>>>>>> f6309e9 |
Comment on lines
+1
to
+8
| import axios from 'axios'; | ||
| <<<<<<< HEAD:src/api/common/client.tsx | ||
|
|
||
| import { Env } from '@/lib/env'; | ||
| ======= | ||
| import Env from 'env'; | ||
| >>>>>>> f6309e9:src/lib/api/client.tsx | ||
|
|
Comment on lines
+7
to
+16
| <<<<<<< HEAD:src/lib/auth/index.tsx | ||
| import { createSelectors } from '../utils'; | ||
| import { getToken, removeToken, setToken, type TokenType } from './utils'; | ||
|
|
||
| interface AuthState { | ||
| ======= | ||
| type AuthState = { | ||
| >>>>>>> f6309e9:src/features/auth/use-auth-store.tsx | ||
| token: TokenType | null; | ||
| status: 'idle' | 'signOut' | 'signIn'; |
| @@ -0,0 +1,91 @@ | |||
| import Env from 'env'; | |||
Comment on lines
+7
to
23
| <<<<<<< HEAD | ||
| import pluginJest from 'eslint-plugin-jest'; | ||
| import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; | ||
| import reactCompiler from 'eslint-plugin-react-compiler'; | ||
| import simpleImportSort from 'eslint-plugin-simple-import-sort'; | ||
| import sonarjs from 'eslint-plugin-sonarjs'; | ||
| import tailwind from 'eslint-plugin-tailwindcss'; | ||
| ======= | ||
| import reactCompiler from 'eslint-plugin-react-compiler'; | ||
| >>>>>>> f6309e9 | ||
| import testingLibrary from 'eslint-plugin-testing-library'; | ||
| // eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member, import/namespace | ||
| import eslintPluginUnicorn from 'eslint-plugin-unicorn'; | ||
| import unusedImports from 'eslint-plugin-unused-imports'; | ||
| import { configs, parser } from 'typescript-eslint'; | ||
|
|
||
| const __dirname = path.dirname(fileURLToPath(import.meta.url)); | ||
|
|
||
| <<<<<<< HEAD | ||
| export default defineConfig([ | ||
| globalIgnores([ |
Comment on lines
+16
to
21
| <<<<<<< HEAD | ||
| if (message.includes('$t(') && !/\$t\(\w+:\w+(?:\.\w+)*\)/g.test(message)) { | ||
| ======= | ||
| if (message.includes('$t(') && !/\$t\(\w+:\w+(?:\.\w+)*\)/.test(message)) { | ||
| >>>>>>> f6309e9 | ||
| throw new SyntaxError( |
Comment on lines
1
to
+8
| { | ||
| <<<<<<< HEAD | ||
| "name": "react-native-template", | ||
| "version": "1.9.0", | ||
| ======= | ||
| "name": "obytesapp", | ||
| "version": "9.0.0", | ||
| >>>>>>> f6309e9 |
Comment on lines
47
to
49
| orientation: 'portrait', | ||
| icon: './assets/icon.png', | ||
| userInterfaceStyle: 'automatic', |
Comment on lines
3
to
+13
| import Svg, { Path } from 'react-native-svg'; | ||
|
|
||
| export const CaretDown = ({ ...props }: SvgProps) => ( | ||
| <Svg | ||
| width={12} | ||
| height={13} | ||
| fill="none" | ||
| {...props} | ||
| className="stroke-black dark:stroke-white" | ||
| > | ||
| <Path | ||
| strokeLinecap="round" | ||
| strokeLinejoin="round" | ||
| strokeWidth={1.5} | ||
| d="M9.75 4.744 6 8.494l-3.75-3.75" | ||
| /> | ||
| </Svg> | ||
| ); | ||
| export function CaretDown({ ...props }: SvgProps) { | ||
| return ( | ||
| <Svg | ||
| width={12} | ||
| height={13} | ||
| fill="none" | ||
| {...props} | ||
| className="stroke-black dark:stroke-white" | ||
| > |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integrating latest changes from obytes/react-native-template-obytes@v9.0.0