React Native Roadmap 2026-W35
Week of August 24β30, 2026
Items This Week
| # | Title | Label | Link |
|---|---|---|---|
| 1 | React Native Enriched Markdown β native rich-text rendering | π¦ RN | Read |
| 2 | Building a 3D AI Avatar in React Native with React Native Filament | π¦ RN | Read |
| 3 | Introducing Observe β performance monitoring for Expo apps | π§ EXPO | Read |
| 4 | Pasting images into TextInput with expo-paste-input | π§ EXPO | Read |
| 5 | Inside SWSH's automated mobile release pipeline with Expo | π§ EXPO | Read |
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-markdownto 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 wrappersrc/screens/<ContentScreen>.tsxβ migrate one surfacesrc/content/markdownFixtures.tsβ verification fixturessrc/components/EnrichedMarkdown.test.tsxβ behavior tests
Implementation instructions:
- Inventory the Markdown constructs used by the selected screen and map them to supported component props.
- Install and link the native package using the projectβs current React Native setup.
- Create a wrapper that applies existing typography and forwards safe link presses.
- Replace one renderer instance and add fixtures for complete and partial streamed content.
- 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 previewsrc/components/filament/ModelViewer.tsxβ renderer wrapperassets/models/test-model.*β approved test assetdocs/filament-spike.mdβ device results and decision
Implementation instructions:
- Confirm the package/platform compatibility and add one small, licensed asset.
- Implement the isolated viewer with deterministic camera and lighting defaults.
- Add loading, failure, rotate, and reset states without coupling to product data.
- Navigate to the preview from a development-only entry point.
- 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 helperssrc/navigation/ScreenPerformance.tsxβ route instrumentationdocs/observe-dashboard.mdβ saved-view instructionsapp.config.tsβ release-safe configuration
Implementation instructions:
- Confirm the current Observe SDK setup for the Expo SDK in use.
- Initialize it from the app entry point and centralize route metadata.
- Instrument one screen and one meaningful interaction with stable names.
- Ship an internal or staging release and verify the saved view.
- 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-inputfor 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 integrationsrc/hooks/usePastedMedia.tsβ normalized paste statesrc/components/PastedMediaPreview.tsxβ preview and actionssrc/components/Composer.test.tsxβ text/media cases
Implementation instructions:
- Install the package and configure the native module for the current Expo development build.
- Keep the existing text-change path intact and add a separate normalized media callback.
- Render a preview with remove/replace actions and enforce the existing size/type limits.
- Connect the preview to the current submit boundary without changing the backend contract.
- 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 definitioneas.jsonβ pinned internal profilescripts/validate-release.tsβ preflight checksdocs/releasing.mdβ runbook and rollback
Implementation instructions:
- Inspect the current EAS profiles and identify the smallest internal release path.
- Create the workflow with checkout, dependency install, typecheck/config validation, and EAS build steps.
- Use platform-managed secrets and explicitly list required environment variable names.
- Run the workflow from a test branch and verify the generated build in the internal channel.
- 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.