React Native Roadmap 2026-W35

Week of August 24–30, 2026

Items This Week

#TitleLabelLink
1React Native Enriched Markdown β€” native rich-text rendering🟦 RNRead
2Building a 3D AI Avatar in React Native with React Native Filament🟦 RNRead
3Introducing Observe β€” performance monitoring for Expo apps🟧 EXPORead
4Pasting images into TextInput with expo-paste-input🟧 EXPORead
5Inside SWSH's automated mobile release pipeline with Expo🟧 EXPORead

5-Day Action Plan

Β 


🟦 Chunk 1 β€” Render streamed Markdown with react-native-enriched-markdown

Goal: Improve the readability and responsiveness of streamed assistant or article content by rendering Markdown with native text primitives instead of a large JavaScript view tree.

Scope:

  • Add react-native-enriched-markdown to the selected content surface.
  • Render headings, emphasis, code, lists, and links used by the current content contract.
  • Wire link presses to the existing safe URL handler.
  • Add a loading/partial-stream fixture and compare it with the current renderer.

Out of scope: A full Markdown specification, custom editor, HTML rendering, syntax highlighting, and migrating every content surface.

Dependencies: The app already displays Markdown or streamed text and has an existing URL-safety policy.

Acceptance criteria:

  • The selected screen renders the supported Markdown fixtures without raw formatting markers.
  • Links open through the existing allowlisted handler.
  • Partial streamed content remains readable while new chunks arrive.
  • The screen has no native crash, unhandled link error, or noticeable layout jump for the fixture set.

Estimated effort: M

**Copy/paste this prompt:**

Implement the following React Native chunk for your mobile app:

Goal: Improve the readability and responsiveness of streamed assistant or article content by rendering Markdown with native text primitives instead of a large JavaScript view tree.

Files to create or modify:

  • src/components/EnrichedMarkdown.tsx β€” typed wrapper
  • src/screens/<ContentScreen>.tsx β€” migrate one surface
  • src/content/markdownFixtures.ts β€” verification fixtures
  • src/components/EnrichedMarkdown.test.tsx β€” behavior tests

Implementation instructions:

  1. Inventory the Markdown constructs used by the selected screen and map them to supported component props.
  2. Install and link the native package using the project’s current React Native setup.
  3. Create a wrapper that applies existing typography and forwards safe link presses.
  4. Replace one renderer instance and add fixtures for complete and partial streamed content.
  5. Verify on iOS and Android, then keep the old renderer available only for unsupported content if necessary.

Acceptance criteria verification checklist:

  • The selected screen renders the supported Markdown fixtures without raw formatting markers.
  • Links open through the existing allowlisted handler.
  • Partial streamed content remains readable while new chunks arrive.
  • The screen has no native crash, unhandled link error, or noticeable layout jump for the fixture set.

🟦 Chunk 2 β€” Prototype a bounded React Native Filament 3D surface

Goal: Validate whether a lightweight 3D visual can improve one product moment without committing the application to a broad game-engine or 3D architecture.

Scope:

  • Add the approved React Native Filament integration and one small test asset.
  • Create a single isolated 3D preview screen with camera, lighting, and loading/error states.
  • Expose only rotate and reset interactions.
  • Measure startup time and memory on one representative device.

Out of scope: Animated avatars, real-time AI generation, multiple scenes, physics, AR, and production asset pipelines.

Dependencies: A compatible native build, one licensed low-polygon asset, and a device capable of running the selected Filament version.

Acceptance criteria:

  • The preview loads the test asset on iOS and Android or clearly reports unsupported platform status.
  • The user can rotate and reset the model without blocking the rest of the app.
  • Loading and asset failure states are understandable to a non-technical tester.
  • The recorded device check shows no unacceptable crash, runaway memory growth, or navigation leak.

Estimated effort: M

**Copy/paste this prompt:**

Implement the following React Native chunk for your mobile app:

Goal: Validate whether a lightweight 3D visual can improve one product moment without committing the application to a broad game-engine or 3D architecture.

Files to create or modify:

  • src/screens/ModelPreviewScreen.tsx β€” isolated preview
  • src/components/filament/ModelViewer.tsx β€” renderer wrapper
  • assets/models/test-model.* β€” approved test asset
  • docs/filament-spike.md β€” device results and decision

Implementation instructions:

  1. Confirm the package/platform compatibility and add one small, licensed asset.
  2. Implement the isolated viewer with deterministic camera and lighting defaults.
  3. Add loading, failure, rotate, and reset states without coupling to product data.
  4. Navigate to the preview from a development-only entry point.
  5. Test on representative devices and record whether the spike is safe to continue.

Acceptance criteria verification checklist:

  • The preview loads the test asset on iOS and Android or clearly reports unsupported platform status.
  • The user can rotate and reset the model without blocking the rest of the app.
  • Loading and asset failure states are understandable to a non-technical tester.
  • The recorded device check shows no unacceptable crash, runaway memory growth, or navigation leak.

🟧 Chunk 3 β€” Instrument an Expo production screen with Observe

Goal: Turn real-user performance data into an actionable signal for one important Expo screen, with enough release context to diagnose regressions.

Scope:

  • Configure Observe for the app’s production release channel.
  • Track one screen-load span and one user interaction that matters to conversion or retention.
  • Attach the app version and route as searchable metadata.
  • Create one dashboard query or saved view for the signal.

Out of scope: Monitoring every route, custom backend tracing, alert escalation policy, and historical data cleanup.

Dependencies: EAS Observe access and an existing release pipeline are available; secrets remain in the platform environment.

Acceptance criteria:

  • A production-like release emits the selected screen-load signal.
  • The saved view filters the signal by app version and route.
  • A stakeholder can identify whether the screen is slow without reading raw logs.
  • The instrumentation adds no visible UI change or unhandled runtime error.

Estimated effort: S

**Copy/paste this prompt:**

Implement the following React Native chunk for your mobile app:

Goal: Turn real-user performance data into an actionable signal for one important Expo screen, with enough release context to diagnose regressions.

Files to create or modify:

  • src/observability/observe.ts β€” initialization helpers
  • src/navigation/ScreenPerformance.tsx β€” route instrumentation
  • docs/observe-dashboard.md β€” saved-view instructions
  • app.config.ts β€” release-safe configuration

Implementation instructions:

  1. Confirm the current Observe SDK setup for the Expo SDK in use.
  2. Initialize it from the app entry point and centralize route metadata.
  3. Instrument one screen and one meaningful interaction with stable names.
  4. Ship an internal or staging release and verify the saved view.
  5. Check bundle/runtime output for secrets, duplicate initialization, and noisy events.

Acceptance criteria verification checklist:

  • A production-like release emits the selected screen-load signal.
  • The saved view filters the signal by app version and route.
  • A stakeholder can identify whether the screen is slow without reading raw logs.
  • The instrumentation adds no visible UI change or unhandled runtime error.

🟧 Chunk 4 β€” Add image and sticker paste with expo-paste-input

Goal: Let users paste images, GIFs, and stickers directly into one React Native composer, reducing friction for support, chat, or content creation flows.

Scope:

  • Install and configure expo-paste-input for the selected TextInput.
  • Handle pasted text using the existing input behavior.
  • Detect pasted image/GIF/sticker content and show a local preview before submission.
  • Add cancel, replace, and unsupported-content states.

Out of scope: Uploading to a production CDN, rich-text editing, clipboard history, and changing the message submission API.

Dependencies: An existing composer and local preview/upload abstraction are available; native development builds are supported.

Acceptance criteria:

  • Pasting ordinary text behaves exactly as it did before.
  • Pasting a supported image, GIF, or sticker shows a preview without crashing.
  • The user can remove or replace the pending media before submission.
  • Unsupported or oversized content receives a clear message and does not alter the draft.

Estimated effort: M

**Copy/paste this prompt:**

Implement the following React Native chunk for your mobile app:

Goal: Let users paste images, GIFs, and stickers directly into one React Native composer, reducing friction for support, chat, or content creation flows.

Files to create or modify:

  • src/components/Composer.tsx β€” paste integration
  • src/hooks/usePastedMedia.ts β€” normalized paste state
  • src/components/PastedMediaPreview.tsx β€” preview and actions
  • src/components/Composer.test.tsx β€” text/media cases

Implementation instructions:

  1. Install the package and configure the native module for the current Expo development build.
  2. Keep the existing text-change path intact and add a separate normalized media callback.
  3. Render a preview with remove/replace actions and enforce the existing size/type limits.
  4. Connect the preview to the current submit boundary without changing the backend contract.
  5. Verify text, image, GIF, sticker, unsupported, cancel, and replacement flows on both platforms.

Acceptance criteria verification checklist:

  • Pasting ordinary text behaves exactly as it did before.
  • Pasting a supported image, GIF, or sticker shows a preview without crashing.
  • The user can remove or replace the pending media before submission.
  • Unsupported or oversized content receives a clear message and does not alter the draft.

🟧 Chunk 5 β€” Ship one repeatable Expo release workflow

Goal: Make internal Expo releases reproducible and auditable so a developer can build, distribute, and verify a mobile release without manual dashboard steps.

Scope:

  • Define one EAS workflow for the project’s internal release channel.
  • Pin the build profile and environment-variable contract.
  • Add an explicit validation step for typecheck and app configuration.
  • Publish the workflow usage and rollback instructions.

Out of scope: Store submission automation, multi-platform release matrices, OTA rollout policy, and replacing the existing CI provider.

Dependencies: EAS access, an existing eas.json, and a working internal distribution profile are available.

Acceptance criteria:

  • A developer can trigger the workflow from the documented command or repository action.
  • The workflow fails before building when typecheck or app configuration validation fails.
  • The resulting build is available in the intended internal distribution channel.
  • The release notes identify the commit, profile, and environment without exposing secrets.

Estimated effort: M

**Copy/paste this prompt:**

Implement the following React Native chunk for your mobile app:

Goal: Make internal Expo releases reproducible and auditable so a developer can build, distribute, and verify a mobile release without manual dashboard steps.

Files to create or modify:

  • .eas/workflows/internal-release.yml β€” workflow definition
  • eas.json β€” pinned internal profile
  • scripts/validate-release.ts β€” preflight checks
  • docs/releasing.md β€” runbook and rollback

Implementation instructions:

  1. Inspect the current EAS profiles and identify the smallest internal release path.
  2. Create the workflow with checkout, dependency install, typecheck/config validation, and EAS build steps.
  3. Use platform-managed secrets and explicitly list required environment variable names.
  4. Run the workflow from a test branch and verify the generated build in the internal channel.
  5. Document how to rerun, cancel, identify the commit, and roll back to the previous build.

Acceptance criteria verification checklist:

  • A developer can trigger the workflow from the documented command or repository action.
  • The workflow fails before building when typecheck or app configuration validation fails.
  • The resulting build is available in the intended internal distribution channel.
  • The release notes identify the commit, profile, and environment without exposing secrets.