GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Move main to Vega OS 2.0 and remove FlashList by khuatkdev · Pull Request #29 · AmazonAppDev/vega-scrolling-sample

Conversation

@khuatkdev

@khuatkdev khuatkdev commented Nov 10, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

Summary

Moves main to Vega OS 2.0 and removes FlashList, matching the branch layout of the other Vega samples.

  • Builds on Merge release-rn-83 into main and document branches #27 (release-rn-83 merged into main), and merges the release-rn-83 Vega OS 1.2 change so later merges from release-rn-83 stay clean.
  • Sets [os.version] min and target to 2.0 in manifest.toml.
  • Removes FlashList (grid, row, list switch, props and demo video). Its system bundle needs react-native-kepler-2, which Vega OS 2 does not ship, so the app exited at launch.
  • Fixes pagination after an empty or short page, the card memo image check, selectionStrategy in two demos, and the grid size. Adds unit tests for them.
  • README: Branches table (main Vega OS 2.0, release-rn-83 Vega OS 1.2, release-rn-0.72 RN 0.72), Vega SDK 2.0 note, and the vega run-app commands from docs(README): use current Vega CLI commands (vega virtual-device start, vega run-app) #26.
  • package.json scripts use build-vega. THIRD-PARTY-NOTICES regenerated.

Dependencies: removes @amazon-devices/shopify__flash-list and adds recyclerlistview 4.2.1, which vega-carousel loads at runtime. The lockfile resolves from public npm only.

Please merge #27 first, then this PR, both with "Create a merge commit" (not squash), so future merges from release-rn-83 stay clean.

Testing

  • Clean install from public npm with Vega SDK 2.0: doctor, lint, test (17 tests), type check and build all pass. On the current main, doctor and build fail because [os.version] is missing.
  • Ran on a Vega OS 2 virtual device: all seven tabs open and scroll, the grid reaches its last row, select and back work, no crashes.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
ewalkera and others added 10 commits July 8, 2026 11:46
@ewalkera
Upgrade vega-scrolling-sample to React Native 0.83
41a8e6f
Based on Kevin O's approved CR-286446486 ArbitraryDiff:
- Upgrade runtime to react_native_kepler_4 (manifest.toml)
- Upgrade all deps: RN 0.83, react 19.2, kepler-ui-components ~3.1,
  vega-carousel ~1.0, kepler-cli-platform ~0.22
- Halve all hardcoded pixel values for DIP (960x540 canvas on 1080p)
- Remove V1 carousel components (kepler-ui-components V1 unsupported on RN83)
- Update README with V2 carousel API docs and DIP section
@ewalkera
Add manifest needs section and regenerate package-lock
956f4f4
manifest.toml: Add [needs.module] declaration for
react_native_kepler_4 runtime — required by SDK validator.

package-lock.json: Regenerated with correct resolved versions
from npm install (node 22, --legacy-peer-deps).
@omidvara
Use scaleUxToDp for DIP scaling instead of hardcoded halved values (#12)
2fd6dbf
Add PixelUtils.ts (from KeplerTools-CoreUtils pattern) which scales
1080p UX values to dp using PixelRatio and the device's actual screen
height. This is future-proof across different device resolutions.
@anishamalde
Merge release-rn-83 into main
c31b4a9
@anishamalde
Add README branches section
616c371
@khuatkdev
Target Vega OS 1.2 on release-rn-83
b458a24
- manifest.toml: [os.version] min = target = 1.2, and the
  /com.amazon.vega.os@IVega_1_2 module in [needs], as the reference
  samples declare it for Vega OS 1.2.
- README: say which OS this branch targets and point Vega OS 2.0
  users to main.
@khuatkdev
Merge branch 'vega-os-1.2' into vega-os-2.0
574d936
@khuatkdev
Target Vega OS 2.0 and remove FlashList
f655858
- manifest.toml: [os.version] min = target = 2.0 (was 1.2 from
  release-rn-83) and drop the /com.amazon.vega.os@IVega_1_2 need, as
  the reference samples do on main. Vega SDK 2.0 refuses to build
  without [os.version].
- README: drop release-rn-83's Vega OS 1.2 note.
- Remove FlashList: its grid and row, the list switch, the FlashList-only
  card props and key extractors, and the demo video. On Vega OS 2.x the
  FlashList system bundle pulls in react-native-kepler-2, which the OS
  does not ship, so the app exited at launch.
- Declare recyclerlistview: vega-carousel imports it at runtime but lists
  it only as a devDependency; FlashList used to bring it in.
- package-lock.json: only the two dependency changes (npm uninstall /
  npm install from the base lockfile); every entry resolves from
  registry.npmjs.org.
- README: Carousel-only list sections and the Vega OS 2.0 / SDK 2.0
  requirement.
@khuatkdev
Fix pagination, card memo and demo props; add unit tests
f8f052d
- Pagination: stop after an empty or a short page (new
  setPaginationHasMore reducer), de-duplicate requests by the row length
  they were made from (lastRequestedPage -> lastRequestedOffset), and
  restore that offset after a failed request so a later focus retries.
- Card memo comparators compare the image URL at the resolution the card
  renders, not a fixed '300' entry; DEFAULT_IMAGE_RESOLUTION is unused
  and removed.
- VerticalScrollable and HeterogeneousItemViewScrollable honor their
  selectionStrategy prop (default 'anchored').
- The grid carousel fills its tab container instead of the whole screen.
- Docs pointer from CarouselCardRow to the README's pagination section.
- Unit tests: paginationThunks (including a focus that arrives while a
  request is in flight), cardMemo and carouselProps (demo props and grid
  size) each fail with their fix reverted. rowData (no empty rows) and
  noFlashList are regression guards for earlier changes.
- README: the Branches table now gives each branch's Vega OS (main
  2.0, release-rn-83 1.2, release-rn-0.72 not set), a "Check the
  branch first" note
  for Vega SDK 2.0, vega CLI commands, and pagination and focus sections
  that match the code, including how a short page ends a row.
  carousel-demo README: the app renders the V2 carousel only.
- package.json: build scripts use react-native build-vega; perfTest uses
  vega exec perf with the app's component id.
- THIRD-PARTY-NOTICES regenerated from the dependency tree installed
  from registry.npmjs.org.
@khuatkdev
README: launch commands that start the app; branch note
12b0680
- vega run-app only launches the app when it is given the component
  id; without it the command installs the VPKG and stops. Use the same
  lines as PR #26: the component id, -d VirtualDevice or -d <DSN>, and
  the Vega Virtual Device (VVD) name in the VPKG list.
- Branches heads-up: only main and release-rn-83 set [os.version];
  release-rn-0.72 does not.
@khuatkdev khuatkdev changed the title Vega os 2.0 Move main to Vega OS 2.0 and remove FlashList Nov 10, 2026
@anishamalde
Merge pull request #28 from AmazonAppDev/vega-os-1.2
a145958
Target Vega OS 1.2 on release-rn-83
anishamalde
anishamalde reviewed Nov 11, 2026
View reviewed changes
Comment thread src/utils/PixelUtils.ts Outdated
@@ -0,0 +1,10 @@
import {Dimensions, PixelRatio} from 'react-native';

const SCREEN_DP = Dimensions.get('window');

@anishamalde anishamalde Nov 11, 2026

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question: scaleUxToDp reads Dimensions.get('window') once at import, and SCREEN_DIMENSION in constants.ts does the same. Is it intentional to keep two separate sources of screen size, or should they share one? The one-time read is fine on TV, I'm just wondering if it's worth a short comment saying so.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@khuatkdev khuatkdev Nov 12, 2026

Copy link
Copy Markdown
Collaborator Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point. It makes sense to share one. I'll make this update.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
khuatkdev added 2 commits November 12, 2026 04:01
@khuatkdev
Read the screen size once, in PixelUtils
d6f8d91
SCREEN_DIMENSION in constants.ts now reuses the window size that
scaleUxToDp reads, so the app has one source of screen size. A comment
says the one-time read at import is intentional: the TV window size is
fixed for the app's lifetime. PixelUtils imports nothing from the app,
so this adds no import cycle. No value changes.
@khuatkdev
Merge branch 'pixelutils-one-source' into vega-os-2.0
9ed1604
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@anishamalde anishamalde anishamalde left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@khuatkdev @anishamalde @ewalkera @omidvara
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.