Skip to content

[cli] Sync next with main: Expo SDK 56 + fixes, keeping Nativewind v5#610

Merged
danstepanov merged 70 commits into
nextfrom
next-sync-main-sdk56
Jul 2, 2026
Merged

[cli] Sync next with main: Expo SDK 56 + fixes, keeping Nativewind v5#610
danstepanov merged 70 commits into
nextfrom
next-sync-main-sdk56

Conversation

@danstepanov

@danstepanov danstepanov commented Jul 2, 2026

Copy link
Copy Markdown
Member

Description

Merges main into next so the next tag reflects everything recently released on main, while preserving the Nativewind v5 setup that is exclusive to next:

Brought over from main (66 commits):

  • Expo SDK 56 template upgrade (RN 0.85, React 19.2, TypeScript 6)
  • NativewindUI template cleanup and fixes (casing, search helper, datetime picker, icon types, header dependency)
  • Optional stack surfacing and preserved navigation dependencies
  • Windows-safe test harness, Bun lockfile snapshot ignores
  • Vexo analytics guard/lazy-load fixes, relative i18next imports
  • Node 22 release workflows, CLI tests on PRs + macOS matrix

Preserved from next (Nativewind v5):

  • base/package.json.ejs keeps nativewind@preview, react-native-css, postcss + @tailwindcss/postcss, tailwindcss v4 devDeps, and the per-package-manager lightningcss overrides — now on top of main's SDK 56 versions
  • Nativewind v5 template file set (postcss.config.mjs, prettier.config.js, no tailwind.config.js) and v5-style safe-area layouts
  • NativewindUI stays hidden from interactive prompts and excluded from test combinations until it supports Nativewind v5 (still reachable via --nativewindui flags, now serving main's cleaned-up templates)
  • All pending v5 changesets, plus a new changeset describing this sync
  • READMEs updated to reflect SDK 56 + Nativewind v5

Also fixed a merge hazard where configureProjectFiles.ts would have pushed the nativewind Container.tsx.ejs twice for drawer+tabs expo-router projects, and normalized remaining NativeWindUI casing to NativewindUI.

This sets up the follow-up step of bumping next to Expo SDK 57.

Related Issue

N/A — branch sync.

Motivation and Context

The end goal is main = Nativewind v4 + SDK 56, next = Nativewind v5 + SDK 57. This PR gets next up to date with main (SDK 56) while keeping Nativewind v5; the SDK 57 bump follows separately.

How Has This Been Tested?

  • bun run build in cli/ passes (tsc + ejslint over all templates)
  • Integration snapshots regenerated: 25 tests pass, snapshots confirm the v5 dependency shape (react-native-css, postcss, lightningcss overrides) on the SDK 56 base
  • Install-based test legs (expo install --fix + per-project typecheck) could not run in the sandbox because its network policy blocks api.expo.dev; CI should cover these

danstepanov and others added 30 commits October 15, 2025 17:26
Remove helpContainer, helpLink, and helpLinkText styles that are
defined but never referenced in any of the EditScreenInfo templates.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace SafeAreaView with Nativewind v4 safe area utility classes
(p-safe-offset-6) and add SafeAreaProvider at the app root for all
navigation variants. Fix className concatenation bug in EditScreenInfo
using template literals. Use interface + React.FC typing across all
Nativewind components. Only include Container.tsx when expo-router
navigation is selected, since it is unused otherwise.

Co-authored-by: Cursor <cursoragent@cursor.com>
Uncomment and add react-navigation test combinations for stack, tabs,
and drawer+tabs across all styling packages (stylesheet, nativewind,
unistyles). Bump changeset to minor for create-expo-stack and rn-new.

Co-authored-by: Cursor <cursoragent@cursor.com>
The CLI coerces importAlias to boolean true, generating @/* in tsconfig,
but 17 expo-router and Nativewind UI templates hardcoded ~/ imports which
did not match. Standardize all import paths to use @/ alias.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove safe area offset and add bg-white to the Container component
template for cleaner default styling.

Co-authored-by: Cursor <cursoragent@cursor.com>
Uncomment the Tabs and Drawer + Tabs navigation type options in the
interactive CLI flow so users can select them again.

Co-authored-by: Cursor <cursoragent@cursor.com>
The final message after scaffolding already offered help, but through a
bare email. Point it at ronindevs.com tagged utm_source=rn_new so the
highest-intent moment in the funnel is tracked and routes to a booking.
Link the team behind create-expo-stack to ronindevs.com (tagged
utm_source=rn_new) so visitors who want hands-on help have a path,
and so we can see how many arrive from the site.
main tracks the stable Expo version and next tracks the upcoming beta,
with next eventually merged into main. Notes that changes applying to
both lines should be opened against both branches, since the two are
not automatically kept in sync.
…ontext (closes #539)

React Native's built-in SafeAreaView only works on iOS and doesn't
properly handle notches/dynamic islands on all devices.
react-native-safe-area-context is already a dependency (used in
SafeAreaProvider in layout files) and is the recommended replacement.

Updated both base and nativewindui Container.tsx.ejs templates.
Make the homepage hero a single static title. Removes the glitch
distortion, the on-load appear/disappear animation, and the NativewindUI
hover-swap promo, along with their now-dead CSS (~497 lines: the
.glitch/.layers rules and the paths/movement/opacity/font keyframes).
Rename the www stack components to the canonical lowercase
(nativeWind.astro -> nativewind.astro, nativeWindUI.astro ->
nativewindui.astro) and fix the stackSection import. This also fixes the
case-mismatch that made astro dev throw a FailedToLoadModuleSSR error on
the homepage. Normalize the brand name NativeWind -> Nativewind in the
docs and READMEs. Leaves the withNativeWind metro API and the generated
changelogs untouched.
DavidJGrimsley and others added 24 commits June 25, 2026 23:43
Node 18 cannot require() the now ESM-only human-id pulled in by the
updated changesets dependency tree, which crashed changeset version in
the Release job. Bump to Node 22, matching the project's Node 20.19.4+
minimum, and pin next-release off floating latest to the same.
PR #604 (NativewindUI template fixes) merged into main without a changeset.
Add a patch changeset for create-expo-stack (and rn-new via the fixed
version group) so the fixes are captured in the next release.
Brings the next branch up to date with everything released on main
(Expo SDK 56 template upgrade, NativewindUI template fixes, optional
stack surfacing, Windows-safe test harness, CI updates) while
preserving the Nativewind v5 setup that is exclusive to next:

- base package.json keeps nativewind@preview, react-native-css,
  postcss + @tailwindcss/postcss, tailwindcss v4 devDeps, and the
  lightningcss overrides per package manager
- nativewind templates keep the v5 file set (postcss.config.mjs,
  prettier.config.js, no tailwind.config.js)
- NativewindUI remains hidden from interactive prompts and excluded
  from test combinations until it supports Nativewind v5
- READMEs updated to reflect SDK 56 + Nativewind v5
Snapshots now cover the merged state: SDK 56 base with the Nativewind
v5 dependency set, and nativewindui combinations removed while they
remain disabled on next.
@danstepanov danstepanov force-pushed the next-sync-main-sdk56 branch from d578cbd to f9e2003 Compare July 2, 2026 13:01
Expo Router's Tabs on SDK 56 passes ColorValue to tabBarIcon, which
broke typechecking of generated tabs projects against the base
TabBarIcon's color: string prop. Align it with the NativewindUI
TabBarIcon, which already made this change for SDK 56;
@expo/vector-icons accepts string | OpaqueColorValue so ColorValue fits
both Expo Router and React Navigation callers.
@danstepanov danstepanov force-pushed the next-sync-main-sdk56 branch from 5cc9a96 to 163e6ee Compare July 2, 2026 13:15
@danstepanov danstepanov merged commit 163e6ee into next Jul 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants