Skip to content

Commit 3027aa7

Browse files
Inzamamul HaqueInzamamul Haque
authored andcommitted
chore: scaffold mobile engineering labs workspace
1 parent b73943e commit 3027aa7

7 files changed

Lines changed: 164 additions & 2 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Changelog
2+
3+
All notable changes to this repository will be documented here.
4+
5+
## Unreleased
6+
7+
### Added
8+
9+
- Mobile Engineering Labs repository structure
10+
- React Native 0.86 performance-lab application
11+
- Typed Redux Toolkit foundation
12+
- React Native Testing Library configuration
13+
- iOS and Android native projects
14+
- Automated formatting, linting, TypeScript and Jest checks
15+
- Android CI build
16+
- Architecture, testing and performance documentation

‎LICENSE‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Inzamamul Haque
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

‎docs/decisions.md‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
## 5. `docs/decisions.md`
3+
4+
```markdown
5+
# Technical Decisions
6+
7+
| Decision | Reason |
8+
| --- | --- |
9+
| React Native CLI | Native build and profiling access without framework abstraction |
10+
| React Native 0.86 | Current stable New Architecture baseline |
11+
| Hermes | Production JavaScript runtime supplied by React Native |
12+
| Redux Toolkit | Same state technology can demonstrate naive and normalized approaches |
13+
| Deterministic event source | Makes benchmark runs repeatable |
14+
| FlatList first | Demonstrates React Native list fundamentals |
15+
| Metrics outside Redux | Prevents instrumentation from causing feed renders |
16+
| No backend | Removes network variability from the benchmark |
17+
| React Native Testing Library 14 | React 19-compatible component testing |
18+
| Node pinned through `.nvmrc` | Local and CI environments use the same runtime |
19+
20+
## Rejected for the Initial Lab
21+
22+
- Expo
23+
- A real WebSocket backend
24+
- FlashList
25+
- RTK Query
26+
- External image services
27+
- Side-by-side live benchmark execution
28+
- Hardcoded performance claims

‎docs/performance.md‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
2+
## 7. `docs/performance.md`
3+
4+
```markdown
5+
# Performance Methodology
6+
7+
No performance results are published yet.
8+
9+
## Rules
10+
11+
- Use the same device and OS
12+
- Use the same build type
13+
- Replay the same seeded event plan
14+
- Run implementations separately
15+
- Perform at least three runs
16+
- Report median results
17+
- Separate development diagnostics from release measurements
18+
- Document profiler overhead
19+
20+
## Planned Scenarios
21+
22+
| Scenario | Rows | Event Rate | Purpose |
23+
| --- | ---: | ---: | --- |
24+
| Targeted updates | 200 | 10/second | Row-render isolation |
25+
| Scroll pressure | 500 | 25/second | Frame responsiveness |
26+
| Stable keys | 200 plus prepend | Controlled | Component identity |
27+
| Pagination | 200 plus pages | 10/second | Growth and correctness |
28+
| Image experiment | Configurable | Controlled | Decode and memory pressure |
29+
30+
## Planned Evidence
31+
32+
- Screen-render count
33+
- `renderItem` invocation count
34+
- Row-component execution count
35+
- React commit activity
36+
- Event latency
37+
- JavaScript responsiveness
38+
- Android slow and frozen frames
39+
- Memory trend

‎docs/roadmap.md‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Roadmap
2+
3+
## React Native Feed Performance Lab
4+
5+
- [x] Product scope
6+
- [x] Architecture
7+
- [x] React Native CLI setup
8+
- [x] Typed Redux store
9+
- [x] Testing foundation
10+
- [x] iOS baseline build
11+
- [x] Android baseline build
12+
- [x] GitHub Actions
13+
- [ ] Domain entities and event contracts
14+
- [ ] Deterministic fixture generator
15+
- [ ] Static 200-row feed
16+
- [ ] Naive live-update pipeline
17+
- [ ] Render instrumentation
18+
- [ ] Optimized normalized pipeline
19+
- [ ] Event batching
20+
- [ ] Pagination
21+
- [ ] Image experiment
22+
- [ ] Device measurements
23+
- [ ] Screenshots and GIF
24+
- [ ] Final engineering review
25+
- [ ] MVP release tag
26+
27+
## Future Labs
28+
29+
- [ ] iOS Concurrency and Cache Lab
30+
- [ ] Android Offline Synchronization Lab

‎docs/testing.md‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Testing Strategy
2+
3+
## Current Tests
4+
5+
- Application shell rendering
6+
- Initial Redux state
7+
- Benchmark mode selection
8+
- Benchmark reset
9+
10+
## Planned Tests
11+
12+
- Deterministic fixture generation
13+
- Event ordering
14+
- Stale-event rejection
15+
- Normalized updates
16+
- Stable entity identity
17+
- Batch flushing
18+
- Pagination without duplicates
19+
- Targeted row rendering
20+
- Pause, resume, stop and reset
21+
22+
## Commands
23+
24+
```bash
25+
npm run test:ci
26+
npm run lint
27+
npm run typecheck
28+
npm run verify

‎react-native/realtime-feed-performance/ios/Podfile.lock‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2130,7 +2130,7 @@ EXTERNAL SOURCES:
21302130

21312131
SPEC CHECKSUMS:
21322132
FBLazyVector: 3c3be9a019176b5699455f7f66c5444b78a411c6
2133-
hermes-engine: 0bbe68ff3f906ce785aaaf4f3a0524c1cffe7eb1
2133+
hermes-engine: 6bf3443f7fdae5fba6dcd82618400c44faeb5d3c
21342134
RCTDeprecation: bccb6545c26db881ecddfd83a3f9ea82aba1605f
21352135
RCTRequired: b2f74764d596fc0051f00fee94b49bf41a6f7f5a
21362136
RCTSwiftUI: c6d6a31b849b9dfa64c33b55dc91ac15dd55774c
@@ -2139,7 +2139,7 @@ SPEC CHECKSUMS:
21392139
React: 4b2532a459d15e1adf6c22d3e399e5c85a94220f
21402140
React-callinvoker: 0b8ce4057e02a0bd15cf0532596e8eb8c0392e92
21412141
React-Core: 5af045531a540ba3f65f07de1e3f585ddfb27948
2142-
React-Core-prebuilt: 405cf395d66cf694faf9aed3483a21b5515cec85
2142+
React-Core-prebuilt: 0e1a650e783fed40472f91670103b7424d144afe
21432143
React-CoreModules: 99b194a721de84ccfc1be149a0de52647dc38c0e
21442144
React-cxxreact: b7e8e254074fd8111d147202b391ccf7816946a6
21452145
React-debug: 6bc17013f4dc724c23c91e1c83220251d1eacee6

0 commit comments

Comments
 (0)