Skip to content

chore: update upstream to v9.0.0 - #155

Open
devs-rootstrap wants to merge 17 commits into
masterfrom
update-upstream-v9.0.0
Open

devs-rootstrap wants to merge 17 commits into
masterfrom
update-upstream-v9.0.0

Conversation

@devs-rootstrap

Copy link
Copy Markdown
Collaborator

Integrating latest changes from obytes/react-native-template-obytes@v9.0.0

Copilot AI review requested due to automatic review settings July 16, 2026 12:42
@devs-rootstrap
devs-rootstrap requested a review from a team as a code owner July 16, 2026 12:42
@label-pr-severity-rs label-pr-severity-rs Bot added the ai:clean No significant issues label Jul 16, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 + @env TS 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 one createSelectors implementation 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 useMemo for 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 Item and SettingsItem variants. 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 thread src/lib/i18n/utils.tsx
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 thread src/lib/i18n/index.tsx
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 thread src/lib/api/client.tsx
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 thread eslint.config.mjs
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 thread package.json
Comment on lines 1 to +8
{
<<<<<<< HEAD
"name": "react-native-template",
"version": "1.9.0",
=======
"name": "obytesapp",
"version": "9.0.0",
>>>>>>> f6309e9
Comment thread app.config.ts
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"
>
@github-actions

Copy link
Copy Markdown

This PR is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 14 days

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai:clean No significant issues no-pr-activity

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants