Stage 6: Native (@reactive/silk-native) - #15
Merged
Merged
Conversation
Graduate the native spike into a publishable package with context theming, recipe-driven Box/Stack/Inline/Text/Button, Expo example, RNW docs fixture, and packaging/perf gates — without teaching silk-core about React Native. Co-authored-by: Cursor <cursoragent@cursor.com>
🦋 Changeset detectedLatest commit: 9535b16 The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Opacity on the solid accent button blended the fill with the canvas and dropped white label contrast below 4.5:1; demo a layout-only style hatch instead. Co-authored-by: Cursor <cursoragent@cursor.com>
Removes states the code could never reach rather than restyling working code. ThemeProviderInner's appearance prop claimed `string | null | undefined`, but RN's useColorScheme only ever returns ColorSchemeName, so both nullable states were fictional; Button's density chain ended in a recipe fallback the required context density preempts; buttonColors set an identical borderWidth in all five branches and declared a backgroundColor it never left undefined; RnViewStyle exposed opacity and maxWidth no mapper emits. Caches resolveNativeFontFamily by stack — re-splitting a 106-char CSS font list dominated mapTextStyle. Hoisting default themes to module scope was tried and reverted: evaluating createTheme at import time defeats tree-shaking and blew every native gzip budget (Box 943 -> 3213 B against a 1300 B ceiling). Derives NativeShellState from an exported states array so the story and test matrices cannot drift, collapses the two fixture tsconfigs in packed-consumer-check into one helper, and replaces its substring scan for workspace: ranges with a per-dependency check that names the offender. Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit b009f6c. Configure here.
mapStackStyle relied on React Native's implicit solid default while mapButtonStyle sets borderStyle outright; spelling it out keeps the two mappers consistent and matches the web rail's `1px solid` shorthand. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Summary
@reactive/silk-native: contextThemeProvider/SilkProvider, recipe mappers (no CSS vars), and exemplar componentsBox/Stack/Inline/Text/Buttonsharing the sameThemeobject and recipe contracts as web.apps/native-spikewithapps/native-example(Expo) exit demo; add RNW Storybook stories, Native guide MDX, and aNativeShelldocs fixture with a tested state matrix.nativeIsolatedGzipperf budgets; document native theme delivery / escape hatches in ARCHITECTURE and API_POLICY.silk-corestays free of React Native views.Test plan
yarn workspace @reactive/silk-core build && yarn workspace @reactive/silk-native buildyarn workspace @reactive/silk-native test(mappers, conformance, RNW render/a11y)yarn workspace @reactive/silk-native-example testandexport:web(Metro consumability)yarn workspace @reactive/silk-docs test(includes NativeShell fixture)yarn test:packedandyarn test:perfMade with Cursor