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

chore: update upstream to v9.0.0#155
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"
>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai:clean No significant issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants