You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9959992
Browse filesBrowse the repository at this point in the historyBrowse files
| Plain TypeScript with XML | Supported: core's own Builder makes the views from your XML, as in the JavaScript build: `{{ }}` bindings, code-behind, custom components (`xmlns:my`) and ListView templates |
156
156
157
+
Core's own behavior comes with it on iOS, where the kit is core: RTL layout, Dynamic Type through
158
+
`ios-a11y-adjusts-font-size`, `font://` icons, `background-image: url()`, box shadows and the accessibility
159
+
properties render as in the JavaScript build, pixel for pixel. The web globals the NativeScript runtime provides are
160
+
there too: `crypto` (`randomUUID`, `getRandomValues`, and `subtle` with SHA digests, HMAC and RSA-OAEP),
161
+
`TextEncoder`/`TextDecoder`, `atob`/`btoa`, timers, `queueMicrotask` and `console`. `fetch` and `XMLHttpRequest`
162
+
are not yet available in a compiled release.
163
+
157
164
### Platforms
158
165
159
166
|| iOS | Android |
@@ -188,9 +195,12 @@ The compiler refuses what it cannot compile faithfully, and says so with the fil
188
195
`async`, more than one Angular `@Component` in a file, Vue `<style module>`, JSX spread attributes, and Vue
189
196
Options-API keys beyond the common ones.
190
197
-**Plugin native code the build does not carry yet:** a prebuilt `.framework` or `.a` (an `.xcframework` is
191
-
fine), a resource `.bundle`, a `.podspec`, Android `jniLibs`/`.so` files, and plugin hooks.
192
-
-**Not at parity yet:** RTL layout, Dynamic Type and font scale, `background-image: url()`, inset box shadows,
193
-
`font://` icons. Accessibility and localization are not yet checked against core.
198
+
fine), a resource `.bundle`, a `.podspec`, and Android `jniLibs`/`.so` files.
199
+
200
+
Your project's hooks run as they do for a JavaScript build: `before-prepare`/`after-prepare` and
201
+
`before-buildIOS`/`after-buildIOS` (`buildAndroid` on Android), with the same arguments. In a compiled build
202
+
`projectRoot` is the compiled project (`platforms/compiled/<platform>`), so a hook that edits the runtime's Xcode or
203
+
Gradle project under `platforms/ios` or `platforms/android` has nothing to change there.
194
204
195
205
## What your app may need
196
206
@@ -237,7 +247,18 @@ Treat a compiled release like any new build: compare it with the JavaScript rele
237
247
expected.
238
248
3. Watch for crashes as well as pixels: a screen can match and still fail on interaction.
239
249
240
-
A command that runs this comparison for you (`ns compiled verify`) is planned.
250
+
`ns compiled verify` does this for you on an iOS Simulator. It builds both releases, runs the same steps on each
251
+
(from the project's `verify.json`: taps, swipes, typing, waits and shots, each screen from a fresh launch), compares
252
+
every shot pixel by pixel once the screen settles, and fails on a difference or on an app that stops running. The
253
+
screenshots and a `report.json` go to `platforms/compiled/verify`.
0 commit comments