NativeScript empowers you to access native platform APIs from JavaScript directly. Angular, Capacitor, Ionic, React, Svelte, Vue and you name it compatible.

Overview

NativeScript

Build Status

NativeScript empowers you to access native APIs from JavaScript directly. The framework currently provides iOS and Android runtimes for rich mobile development and can be utilized in a number of diverse use cases.

Setup and Installation

Contribute

$ git clone https://github.com/NativeScript/NativeScript.git
$ cd NativeScript

# setup workspace for development
$ npm run setup

# list all available commands to run
$ npm start

We love you and your PR's 🤗 . Please follow our contributing guide and see our code of governance to become as involved as you want to be.

@nativescript/*

Quick Links

Other source repos

Outside the source centralized in this repo, NativeScript consists of a few other source repos. Here are the major ones:

  • iOS runtime
    • npm
    • This repo contains the NativeScript iOS runtime — the code that hosts NativeScript iOS apps, and allows JavaScript code to be executed on iOS devices. The iOS runtime is written in a fun mix of C++, Objective-C, and more.
  • Android runtime
    • npm
    • This repo contains the NativeScript Android runtime — the code that hosts NativeScript Android apps, and allows JavaScript code to be executed on Android devices. The Android runtime is written in a fun mix of C++ and Java.
  • CLI
    • npm
    • This repo contains the NativeScript command-line interface, which lets you create, build, and run apps using the NativeScript framework. The CLI is written in TypeScript.
  • Docs
    • Docs
    • This repo contains the NativeScript framework documentation, which is available at http://docs.nativescript.org/. The docs are written in Markdown.

License

License

Made with ❤️

Comments
  • Implement CSS Box Shadow

    Implement CSS Box Shadow

    Would be great to see a CSS3 style box shadow for UI elements.

    Possible implementation: box-shadow: none|h-shadow v-shadow blur spread color |inset|initial|inherit;


    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    css ux 
    opened by lscown 169
  • 🚨 XCode 12 Status

    🚨 XCode 12 Status

    Update (09/27):

    We have released [email protected] with additional fixes for running on a real device.

    Details in this PR: https://github.com/NativeScript/ios-device-lib/pull/70

    Update (09/23):

    We have released [email protected] with fixes for running on a real device. This version reverted some changes from rc.0 - we expect this to run fine for both simulators and devices, however there may be other cases we need to take into account. Please try the latest RC (ideally revert manual changes in Podfiles, build configs etc and run ns clean) and if something isn't working, re-run with --log trace enable and share the logs with us.


    We released [email protected] that should allow building nativescript apps for the simulator using XCode12.

    Please try it

    npm i -g nativescript@rc
    

    And then cleaning your project (ns clean) and re-running it. The apps should build successfully, and deploy to the simulator(s). If this works for you, consider leaving a 👍 on this issue to let us know - and if it fails to build/run leave a comment with the output logs (re-run the build with --log trace to get more verbose logs).

    Known issues:

    • building with XCode 12 fails [Fix in RC]
    • deploying to an ios14 device (not simulator) gets stuck [Fix In RC1]
    • warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0 - this is a warning, that should not cause any issues with the build. If the build fails, it's likely related to another issue.
    • --release (and --env.production) not able to build the app. [Should Be OK in RC1]
    • running on a real device, the CLI cannot start/stop the app - the app has to be manually restarted. [Should be OK in RC2]
    • if you have a custom CFBundleName the cli will fail with No .ipa found in /.../platforms/ios/build/Debug-iphoneos directory.. [Looking into a fix]

    Related issues:

    • #8866
    • #8861
    • #8860
    • #8780
    • #8788
    • #8868
    • https://github.com/NativeScript/nativescript-cli/issues/5389
    in progress severity: critical 
    opened by rigor789 136
  • Move JS Processing to background thread or allow creation of other WebWorkers/Threads

    Move JS Processing to background thread or allow creation of other WebWorkers/Threads

    From what I understand everything runs on the primary thread. So this is a feature request -- but if done possible sooner would eliminate any later incompatibilities. Having the main thread run the interface and JS runtimes means that hiccups can and will occur frequently. Either the design where the interface is run on its own thread; and the engine is on its own or the ability to start webworks will eliminate these types of issues where you need to do any long running calculations.

    Please vote for this feature in our ideas portal.

    severity: high backlog feature 
    opened by NathanaelA 92
  • Security for the JS code

    Security for the JS code

    Think of ways to IP protection of the JavaScript which is packaged in the app packages.

    If you are interested in this feature please leave comment here and vote for this issue in our ideas portal.

    backlog severity: medium feature 
    opened by valentinstoychev 70
  • Error in properties.js from tns-core-modules

    Error in properties.js from tns-core-modules

    I upgraded my app from {N} v2.something to v3.0 and now I have an error inside the tns-core-modules (which I also updated to 3.0.0).

    Here is what I think is the relevant part:

    TypeError: Cannot read property 'prototype' of undefined
    File: "file:///data/data/org.nativescript.HonkMeNative/files/app/tns_modules/tns-core-
    modules/ui/core/properties/properties.js, line: 461, column: 33
    

    You can find the full stack-trace on PasteBin

    I can realize that I've messed up, as the defaul HelloWorld app works, until I replace it with my code, but I have no clue where to start investigating.

    It looks CSS related from snooping inside the code, but I have no CSS other than an empty module css and the default app.css.

    bug done 
    opened by surdu 63
  • iOS 14 and Nativescript

    iOS 14 and Nativescript

    Hello,

    Has anyone been able to run their Nativescript on iOS 14? Running
    "tns-ios": { "version": "6.5.1" }

    does not work with iOS 14.

    Running it in XCode 12 showed the error in main.m

    [runtime executeModule:@"./"]; Thread 1: EXC_BAD_ACCESS (code=1, address=0x2818dd0)

    Any ideas on how to resolve this issue?

    in progress 
    opened by mspusta78 59
  • Allow borders to be applied on a per-side basis in CSS

    Allow borders to be applied on a per-side basis in CSS

    I'm finding that I frequently need to put a border on one side of a UI component, but NativeScript currently does not support this. I'm requesting that the following CSS properties be added:

    • border-top-width
    • border-top-color
    • border-right-width
    • border-right-color
    • border-bottom-width
    • border-bottom-color
    • border-left-width
    • border-left-color

    To be consistent with CSS, I would also like the border-width and border-color shorthands to work like they do in CSS.

    screen shot 2015-09-30 at 8 17 47 am

    Update: You can vote for this feature at https://nativescript.ideas.aha.io/ideas/NS-I-110.

    Thanks.

    severity: high feature done css ux 
    opened by tjvantoll 58
  • Page Navigation Transitions

    Page Navigation Transitions

    Would be great to be able to customise the transitions between pages. Right now it's either animation or no animation. Both Android and iOS support custom transistions.

    severity: high feature done 
    opened by lscown 58
  • [MacOS] build android failed on app:mergeDebugAssets (unable to create new native thread)

    [MacOS] build android failed on app:mergeDebugAssets (unable to create new native thread)

    Did you verify this is a real problem by searching the NativeScript Forum and the other open issues in this repo?

    Yes

    Tell us about the problem

    tns build android failed on ':app:mergeDebugAssets' > unable to create new native thread

    Which platform(s) does your issue occur on?

    Android development on macOS Sierra

    Please provide the following version numbers that your issue occurs with:

    • tns info output
       ✔ Component nativescript has 4.0.0 version and is up to date.
       ✔ Component tns-core-modules has 4.0.0 version and is up to date.
       ✔ Component tns-android has 4.0.1 version and is up to date.
      
    • Cross-platform modules: (check the 'version' attribute in the node_modules/tns-core-modules/package.json file in your project)
      {
        "version": "4.0.0"
      }
      
    • Runtime(s): (look for the "tns-android" and "tns-ios" properties in the package.json file of your project)
          "tns-android": {
            "version": "4.0.1"
          }
      
    • Plugin(s): (look for the version number in the package.json file of your project) No plugin

    Please tell us how to recreate the issue in as much detail as possible.

    I just run tns create sample-project --template tns-template-tab-navigation-ng, then run tns build android and the error mentioned above appeared

    *note: run tns debug android --bundle completed without error

    tns doctor output

    ✔ Getting environment information 
    ✔ Your ANDROID_HOME environment variable is set and points to correct directory.
    ✔ Your adb from the Android SDK is correctly installed.
    ✔ The Android SDK is installed.
    ✔ A compatible Android SDK for compilation is found.
    ✔ Javac is installed and is configured properly.
    ✔ The Java Development Kit (JDK) is installed and is configured properly.
    ✔ Xcode is installed and is configured properly.
    ✔ xcodeproj is installed and is configured properly.
    ✔ CocoaPods are installed.
    ✔ CocoaPods update is not required.
    ✔ CocoaPods are configured properly.
    ✔ Your current CocoaPods version is newer than 1.0.0.
    ✔ Python installed and configured correctly.
    ✔ The Python 'six' package is found.
    No issues were detected.
    ✔ Getting NativeScript components versions information...
    ✔ Component nativescript has 4.0.0 version and is up to date.
    ✔ Component tns-core-modules has 4.0.0 version and is up to date.
    ✔ Component tns-android has 4.0.1 version and is up to date.
    ✖ Component tns-ios is not installed.
    

    tns debug android --log trace, output attached trace.log.zip

    Is there code involved? If so, please share the minimal amount of code needed to recreate the problem.

    No

    os: android needs more info 
    opened by ikhsan017 55
  • Feature Request: Paged Slider UI component

    Feature Request: Paged Slider UI component

    There is currently no abstraction for a "paged slider" component (not sure if there's a better name for it). It's where you can scroll horizontally between 'pages' of content, with your position indicated by dots below.

    You can see an example of this on the iOS home screen: 2013-06-11-01 10 32

    severity: high help wanted 
    opened by dbbk 54
  • change the outDir of the transpiled code

    change the outDir of the transpiled code

    I don't like the js files being generated next to my ts/ng files , it's so annoying , so I was trying to put the compiled/transpiled js files outside the app directory, as any Angular app.

    what I did is :

    I added outDir to the compilerOptions inside the tsconfig.json file

    {
        "compilerOptions": {
            "outDir": "./compiled/",
    ....
    

    and changed the main entrypoint inside app/package.json

    {
      "android": {
        "v8Flags": "--expose_gc"
      },
      "main": "./compiled/main.js",
    

    by doing so the app crashes since it can't find the main.js...

    what is the correct way to achieve that?


    Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

    feature severity: low 
    opened by AbanoubNassem 53
  • fix(ios): TextField keyboard handling with emoji, autofill, and shortcuts

    fix(ios): TextField keyboard handling with emoji, autofill, and shortcuts

    PR Checklist

    • [x] The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#commit-messages.
    • [x] There is an issue for the bug/feature this PR is for. To avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it.
    • [x] You have signed the CLA.
    • [x] All existing tests are passing: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/DevelopmentWorkflow.md#running-unit-tests-application.
    • [x] Tests for the changes are included - https://github.com/NativeScript/NativeScript/blob/master/tools/notes/WritingUnitTests.md.

    What is the current behavior?

    Emoji input and/or keyboard shortcuts were not handled properly.

    What is the new behavior?

    Keyboard handling is stable under all diverse cases. Added forms page to toolbox to confirm this behavior.

    closes https://github.com/NativeScript/NativeScript/issues/10108

    cla: yes 
    opened by NathanWalker 1
  • fix(android): Fixes web-view handling url (#10147)

    fix(android): Fixes web-view handling url (#10147)

    PR Checklist

    • [ ] The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#commit-messages.
    • [ ] There is an issue for the bug/feature this PR is for. To avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it.
    • [ ] You have signed the CLA.
    • [ ] All existing tests are passing: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/DevelopmentWorkflow.md#running-unit-tests-application.
    • [ ] Tests for the changes are included - https://github.com/NativeScript/NativeScript/blob/master/tools/notes/WritingUnitTests.md.

    What is the current behavior?

    What is the new behavior?

    Fixes/Implements/Closes #[Issue Number].

    cla: yes 
    opened by prabudevarrajan 11
  • Android - WebView issue - shouldOverrideUrlLoading

    Android - WebView issue - shouldOverrideUrlLoading

    Issue Description

    Android app is unable to handle custom URLs. Due to the following change.

    For e.g. if my app has a custom URL bookkeeper://action=close which is used to close the current screen

     webview.on(WebView.loadStartedEvent, function (args: LoadEventData) {  
          if ((args.url).indexOf('bookkeeper://action=close') === 0) { // This code is used to override the default webview for loading the URL
                    webview.stopLoading();
                    this.routerExtensions.back();
          }
    }
    

    What is happening is shouldOverrideUrlLoading is getting called in android webView and directly passing to Util.openURL API. So, the loadStartedEvent is not getting called.

    Reproduction

    Reproducible in nativescript android core 8.4.0 and above

    $ ns run/debug android

    Relevant log output (if applicable)

    OS: macOS 13.0.1
    CPU: (8) x64 Apple M1
    Shell: /bin/bash
    node: 16.15.0
    npm: 8.5.5
    nativescript: 8.4.0
    
    # android
    java: 18.0.1
    ndk: Not Found
    apis: Not Found
    build_tools: Not Found
    system_images: Not Found
    
    # ios
    xcode: 14.1/14B47b
    cocoapods: 1.11.3
    python: 3.9.13
    python3: 3.9.13
    ruby: 2.6.10
    platforms: 
      - DriverKit 22.1
      - iOS 16.1
      - macOS 13.0
      - tvOS 16.1
      - watchOS 9.1
    
    
    ### Dependencies
    
    ```json
    "dependencies": {
      "@angular/animations": "~14.2.0",
      "@angular/common": "~14.2.0",
      "@angular/compiler": "~14.2.0",
      "@angular/core": "~14.2.0",
      "@angular/forms": "~14.2.0",
      "@angular/platform-browser": "~14.2.0",
      "@angular/platform-browser-dynamic": "~14.2.0",
      "@angular/router": "~14.2.0",
      "@bradmartin/nativescript-urlhandler": "^2.0.1",
      "@nativescript-community/ble": "^3.1.11",
      "@nativescript-community/drawingpad": "^4.1.0",
      "@nativescript-community/perms": "^2.2.21",
      "@nativescript/angular": "^14.2.0",
      "@nativescript/appversion": "^2.0.0",
      "@nativescript/background-http": "^6.0.0",
      "@nativescript/camera": "^5.0.12",
      "@nativescript/core": "~8.4.1",
      "@nativescript/firebase-core": "^2.0.2",
      "@nativescript/firebase-messaging": "^2.0.2",
      "@nativescript/geolocation": "^8.0.2",
      "@nativescript/google-maps": "^1.3.0",
      "@nativescript/imagepicker": "^1.0.6",
      "@nativescript/iqkeyboardmanager": "^2.0.0",
      "@nativescript/secure-storage": "^3.0.0",
      "@nativescript/theme": "^3.0.2",
      "@nstudio/nativescript-barcodescanner": "^5.0.1",
      "@prabudevarrajan/filepicker": "^2.0.0",
      "@proplugins/nativescript-globalevents": "^1.4.1",
      "@proplugins/nativescript-platform": "^1.4.11",
      "@proplugins/nativescript-platform-css": "^1.8.1",
      "@ticnat/nativescript-image-cache": "^1.0.7",
      "@triniwiz/nativescript-toasty": "^4.1.3",
      "angular2-moment": "^1.9.0",
      "nativescript-material-icons": "^1.0.3",
      "nativescript-ngx-fonticon": "^7.0.0",
      "nativescript-sqlite": "^2.8.6",
      "nativescript-ui-listview": "^14.2.2",
      "nativescript-ui-sidedrawer": "~14.2.0",
      "reflect-metadata": "~0.1.12",
      "rxjs": "~7.5.0",
      "zone.js": "~0.11.5"
    },
    "devDependencies": {
      "@angular-devkit/build-angular": "~14.2.0",
      "@angular/compiler-cli": "~14.2.0",
      "@nativescript/android": "8.4.0",
      "@nativescript/ios": "8.4.0",
      "@nativescript/types": "^8.4.0",
      "@nativescript/webpack": "~5.0.6",
      "@ngtools/webpack": "~14.2.0",
      "nativescript-worker-loader": "^0.12.1",
      "terser-webpack-plugin": "^5.3.1",
      "typescript": "~4.7.0"
    }
    
    
    
    ### Environment
    
    _No response_
    
    ### Please accept these terms
    
    - [X] I have searched the [existing issues](https://github.com/NativeScript/NativeScript/issues) as well as [StackOverflow](https://stackoverflow.com/questions/tagged/nativescript) and this has not been posted before
    - [X] This is a bug report
    - [X] I agree to follow this project's [Code of Conduct](https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#coc)
    bug-pending-triage 
    opened by prabudevarrajan 2
  • docs: Fix a few typos

    docs: Fix a few typos

    There are small typos in:

    • apps/automated/src/ui/web-view/web-view.md
    • tools/notes/DevelopmentWorkflow.md

    Fixes:

    • Should read describe rather than decribe.
    • Should read control rather than controll.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    cla: yes 
    opened by timgates42 4
  • Error: Build input file cannot be found, when building NativeScript application with Xcode 14.1 using m1 mac

    Error: Build input file cannot be found, when building NativeScript application with Xcode 14.1 using m1 mac

    Issue Description

    When building nativescript cross-platform application for ios, i get the following error.

    Build input file cannot be found: 'xxx/platforms/ios/Build/Products/Debug-iphonesimulator/metadata-arm64.bin'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it?

    Reproduction

    xcode 14.1 ✔ Component nativescript has 8.4.0 version and is up to date. ✔ Component @nativescript/core has 8.4.1 version and is up to date. ✔ Component @nativescript/ios has 8.4.0 version and is up to date.

    i would be very grateful for help and a way out of this

    Relevant log output (if applicable)

    No response

    Environment

    No response

    Please accept these terms

    bug-pending-triage 
    opened by wontroba666 1
  • iOS: When execute more than one animation it is not canceled

    iOS: When execute more than one animation it is not canceled

    Issue Description

    When you run an animation and then run another on the same element on ios the first animation is not cancelled. In android it works fine, my animations types:

    view.animate({
                    scale: {
                        x: 1,
                        y: 1
                    },
                    duration: durationAnimation
                })
    

    Reproduction

    No response

    Relevant log output (if applicable)

    No response

    Environment

    OS: macOS 13.1
    CPU: (24) x64 AMD Ryzen 9 3900X 12-Core Processor            
    Shell: /bin/zsh
    node: 18.12.1
    npm: 8.19.2
    nativescript: 8.4.0
    
    # android
    java: 11.0.17
    ndk: Not Found
    apis: Not Found
    build_tools: Not Found
    system_images: Not Found
    
    # ios
    xcode: 14.2/14C18
    cocoapods: 1.11.3
    python: 3.11.1
    python3: 3.11.1
    ruby: 2.7.7
    platforms: 
      - DriverKit 22.2
      - iOS 16.2
      - macOS 13.1
      - tvOS 16.1
      - watchOS 9.1
    

    Dependencies

    "dependencies": {
      "@nativescript-community/text": "^1.5.11",
      "@nativescript-community/ui-canvaslabel": "^1.1.8",
      "@nativescript-community/ui-collectionview": "^4.0.64",
      "@nativescript-community/ui-label": "^1.2.16",
      "@nativescript-community/ui-lottie": "^5.0.3",
      "@nativescript-community/ui-material-cardview": "^7.0.31",
      "@nativescript-community/ui-material-tabs": "^7.0.31",
      "@nativescript-community/ui-material-textfield": "^7.0.33",
      "@nativescript-community/ui-svg": "^0.1.2",
      "@nativescript/core": "^8.4.1",
      "@nativescript/firebase-core": "^2.4.4",
      "@nativescript/firebase-messaging": "^2.4.4",
      "@nativescript/geolocation": "^8.1.0",
      "@nativescript/google-maps": "^1.4.9",
      "@nstudio/nativescript-shimmer": "^1.0.7",
      "axios": "^0.19.2",
      "moment": "^2.29.4",
      "nativescript-vue": "^3.0.0-beta.5",
      "patch-package": "^6.5.0",
      "pinia": "^2.0.27",
      "router-vue-native": "^2.0.0"
    },
    "devDependencies": {
      "@nativescript/android": "^8.4.0",
      "@nativescript/ios": "8.4.0",
      "@nativescript/tailwind": "^2.0.1",
      "@nativescript/types": "~8.4.0",
      "@nativescript/webpack": "~5.0.0",
      "@types/node": "~17.0.21",
      "sass": "^1.56.1",
      "sass-loader": "^13.2.0",
      "tailwindcss": "^3.1.8",
      "typescript": "~4.8.4",
      "vue": "^3.2.45"
    }
    

    Please accept these terms

    bug-pending-triage 
    opened by vallemar 0
Releases(8.4.2-core)
  • 8.4.2-core(Dec 29, 2022)

    Bug Fixes

    • android: backwards compat Java cast Float to Long for ApplicationSettings.getNumber (#10140) (7c1590a)
    • core: update metadata filtering for IOS 16 (#10133) (c461f1b)
    • ios: box shadow border radius (#10142) (6948f7c)
    • ios: navigatingTo event handling (#10120) (a4f28b8)
    • ios: reset additional insets if they're zero (#10134) (8b7d5ab)
    • listview: delegate handling removed from unloaded (#10138) (04c3d9a)
    • utils: ios to filter out null values (#10117) (4723114)
    Source code(tar.gz)
    Source code(zip)
  • 8.4.1-core(Dec 1, 2022)

  • 8.4.0-core(Nov 30, 2022)

    Features

    • android: support drawable in ImageSource (#10098) (75eefa6)
    • android: use NestedScrollView for vertical ScrollView (#9199) (cfaa813)
    • core: support css font-variation-settings (#9995) (a5e3e22)
    • core: support for external XML UI compilers (#10008) (75503ef)
    • HtmlView: selectable property (#10057) (ca9c092)
    • types-android: API Level 33 (#10113) (c1187fe)
    • types-ios: 16.1 (#10114) (da78e0b)
    • utils: dismissKeyboard, copyToClipboard, setWindowBackgroundColor, getCurrentActivity and getResource (#10089) (2e1d2c1)
    • webview: adds iosAllowInlineMediaPlayback property (#10014) (4a0e1c9)
    • TypeScript 4.8+ support and NativeClass decorator improvements (#10081) (7f069a7)

    Bug Fixes

    • android: application fallback for startActivity (#10062) (f3a5c16)
    • android: file manipulation threw exception inside worker (#10076) (25c862e)
    • android: file system normalizePath (#10077) (497a9db)
    • android: modal status bar props applied to wrong window (#10049) (6934645)
    • android: normalize for API >= 26 (#10083) (e687e9d)
    • android: tappable spans aren't visible on single-line labels (#10055) (5765707)
    • android: ApplicationSettings return precise stored numbers (#10094) (fd98690)
    • android: memory leak with EditableTextBase (#10052) (501d310)
    • android: prevent flashing activity on app start (#9190) (6a9484a)
    • android: shared SDK_VERSION (#10090) (0226f47)
    • core: ellipsis at the end for Labels with maxLines (#10005) (6c60eab)
    • core: prevent a circular reference because of SDK_VERSION (#10097) (c957b48)
    • core: Color.isValid returned true for null/undefined (#10040) (9091e43)
    • core: font-weight allow passing number (#10072) (5f3f1ac)
    • core: windows build (#10056) (7860d51)
    • color: floating point color values (66e8e39)
    • core: deprecation notes for WeakRef clear and get (3019181)
    • core: WeakRef deprecation notes (b83ed39)
    • ios: animation layer resilience (#10060) (6cabcab)
    • ios: Color.fromIosColor returns wrong value (#10059) (b7d340f)
    • ios: ensure autocorrect not applied silently on IOS16 (#10032) (40b9e35)
    • ios: frame navigatingTo event (#10096) (6148955)
    • ios: stability around canceling an animation (b8d5372)
    • webpack: prevent hmr from patching __onLiveSync multiple times (#10103) (42f5dc5)
    • webpack: support angular 15.x (#10106) (f100109)
    • webpack: close compiler after run (#10080) (59ca35b)
    • webpack: make NativeClass transformer backwards compatible (59624a4)

    Performance Improvements

    Breaking Changes

    utils/utils is just Utils

    • BEFORE
    import { layout } from '@nativescript/core/utils/utils'
    
    • AFTER
    import { Utils } from '@nativescript/core'
    
    Utils.layout
    

    This will affect some plugins. If you use a plugin that encounters this issue you can do the following:

    1. Add a quick webpack alias to mitigate for now:
    webpack.chainWebpack(config => {
        config.resolve.alias.set('@nativescript/core/utils/utils', '@nativescript/core/utils');
        config.resolve.alias.set('tns-core-modules/utils/utils', '@nativescript/core/utils');
        config.resolve.alias.set('tns-core-modules', '@nativescript/core');
    
    1. Contribute a pull request to the plugin author.

    WeakRef type

    Core uses the latest WeakRef types and you can update your tsconfig to latest targets.

    • BEFORE tsconfig.json
    "compilerOptions": {
      "target": "es2017",
      ...
      "lib": ["es6", "dom"],
    
    • AFTER
    "compilerOptions": {
      "target": "es2020",
      ...  
      "lib": ["esnext", "dom"],
    
    Source code(tar.gz)
    Source code(zip)
  • 8.3.6-core(Nov 12, 2022)

  • 5.0.9-webpack(Oct 6, 2022)

    What's Changed

    • chore(webpack): update webpack deps for react-nativescript by @shirakaba in https://github.com/NativeScript/NativeScript/pull/10045
    • chore: webpack updates by @rigor789 in https://github.com/NativeScript/NativeScript/pull/10050
    Source code(tar.gz)
    Source code(zip)
  • 8.3.5-core(Sep 23, 2022)

  • 8.3.4-core(Aug 20, 2022)

  • 8.3.3-core(Aug 11, 2022)

  • 8.3.2-core(Aug 2, 2022)

  • 8.3.1-core(Jul 21, 2022)

  • 8.3.0-core(Jul 14, 2022)

    Bug Fixes

    • android: connectivity reporting none on resume (#9915) (413fa2e)
    • android: content uri handling improvements (#9936) (9fcd440)
    • android: device language and region from system configuration. (#9868) (ad01e6b)
    • android: font icons had incorrect fallback size (#9914) (e8bed44)
    • android: Textfield focus fix (#9885) (fbd1e23)
    • core: allow View subclass to force onLayoutChangeListener (#9886) (6ccf5a2)
    • core: android wrong background state + current value accessors (#9883) (58a7206)
    • core: ensure platforms/android/core.aar is not included in pack (a1dff9a)
    • core: import fix (45dcada)
    • core: metadata filtering (#9946) (4a5e2e2)
    • core: navigatingToEvent allows access to resolvedPage now (#9954) (38142a6)
    • core: trace log using a wrong parameter (#9951) (cd5d2c2)
    • ensure reusable ProxyViewContainer re-adds native children (#9882) (0a082b3)
    • export 'dataSerialize' from utils (#9909) (a85a72d)
    • incorrect font icon size conversion to device pixels. (#9910) (d3718e5)
    • ios: apply proper border radius to box shadow and view sublayers (#9881) (b7e6128)
    • ios: do not convert tap event data to device pixels twice (#9935) (3681fd4)
    • ios: label measure correct height when using custom numberOfLines (#9945) (2ff0891)
    • ios: memory leak after using 'showModal' passing any Page as parameter (#9939) (4db4e4a)
    • ios: memory leak after using the 'presentViewControllerNavigation' (#9934) (957af32)
    • ios: proper disposal and recreation of iOS native views (#9879) (f548fdc)
    • live-sync: navigation history is now maintained (#9889) (665009b)
    • RootLayout: resilience around shadeCover options (e5fffa1)
    • TabView: item styling improvements for iOS 15+ (#9888) (7ccc949)
    • ui-mobile-base: Android http request body was not sent if method was DELETE (#9887) (57e4973)
    • webpack: NativeClass decorator should run after angular transformers in AOT mode (#9908) (c9f77a0)
    • webpack: unit test runner with node 18+ (#9952) (97a21bb)

    Features

    • android: runOnMain, postFrameCallback & removeFrameCallback (#9943) (49343cb)
    • application: expose inBackground and suspended (#9897) (8987bab)
    • core: iterable ObservableArray (#9824) (df74a8b)
    • core: maxLines support for all text components (#9884) (7ff7233)
    • ios: Utils.getRootViewController (29004d9)
    • mac: support for Mac Catalyst with ui-mobile-base (fc77c92)
    • RootLayout: add opened and closed events (#9893) (7b11b6a)
    • types-minimal: paired down typings optimized for smaller footprint editing environments (#9947) (f49e412)
    • Utils: dataSerialize, dataDeserialize, numberHasDecimals, numberIs64Bit (cab5947)

    Performance Improvements

    • cache UIFont construction based on FontDescriptor (#9948) (8756df3)

    BREAKING CHANGES

    • core: ObservableArray push will now handle arguments just like Array.prototype.push. Certain existing methods will now return ObservableArray instance instead. Callback arguments that contained an array argument themselves will now contain an ObservableArray argument.
    • android: Exposes language and region values from android system configuration. If you were working around locale handling because this wasn't originally the case you can likely remove extra conditions as this should reflect more accurately now.
    • ios: tapData.getX() and tapData.getY() will now return correctly in DIP, so any extra conversions (like calling toDevicePixels) twice must be changed.
    • core: When using navigatingToEvent event.entry, the backstackEntry object is now returned which has an entry property on it if you still need it.
    Source code(tar.gz)
    Source code(zip)
  • 8.2.5-core(Jun 15, 2022)

  • 8.2.4-core(Jun 4, 2022)

  • 8.2.3-core(Apr 25, 2022)

  • 8.2.2-core(Apr 7, 2022)

    Bug Fixes

    • ActionItem: rendering threw errors if it had a nested child. (#9821) (efa80c7)
    • android: gesture events fix (#9842) (2664783)
    • css: borderColor parse handling for hsl(a) color values (#9857) (da3bd2c)
    • ios: navigation button now allows using custom icon (#9835) (f88c158)
    • RootLayout: close popup views on live-sync (#9834) (6941466)
    • Utils.queueGC debounce and throttle with reuse of different settings (#9852) (9ce7455)

    Features

    • RootLayout: added topmost method to retrieve view at top (#9826) (3bb8fc2)
    • TouchManager: touchDelay property for nested tap control (c05145b)

    Performance Improvements

    • Improved live-sync functionality for RootLayout (#9836) (3537858)
    Source code(tar.gz)
    Source code(zip)
  • 8.2.1-core(Mar 9, 2022)

  • 8.2.0-core(Mar 8, 2022)

    Bug Fixes

    • android: a11y - do not provide content description for TextView elements (#9673) (dbaf203), closes #9588
    • android: api17 crash on a11y service (#9792) (2efcdf5)
    • android: boolean keyboardType should not set inputType (#9795) (9e6371f)
    • android: edge cases and compatibility with fragments 1.2.x (#9782) (6b41268)
    • android: fragment creation loaded/unloaded protection (ac2e944)
    • android: nested frames were sometimes not recreated (#9725) (902a4c6)
    • android: nested frames were sometimes not recreated (#9748) (cb648e3)
    • android: NullPointerException on navigation (#9669) (9b5d125), closes #8441
    • android: prevent error when detaching from unloaded ScrollView (#9666) (e59f3ff)
    • android: text-transform: capitalize behavior (#9598) (aa1c631), closes #7059
    • android: when hiding the keyboard make view lose focus to match ios behavior (#9786) (b78996a)
    • application instance creation occurs only within Application.run (a518249)
    • core: animation iteration correct for android css animations and iOS rotation (#9628) (608bb1e), closes #7712
    • core: Application handling of nativeApp instance (6c06c77)
    • core: parse template literal syntax with nested identifiers as expression. (#9744) (57cc4ed)
    • ensure android can access native app instance before bootstrap (f10cffc)
    • fs: wrong common paths (51b92f3)
    • ios: do not redraw if background image is 'none' (#9800) (402a7bb)
    • ios: force layout of view when changing the safe area insets (#9773) (a1ba1f6)
    • ios: proper UITabBarAppearance handling (6c71ce2)
    • ios: tabview background color with appearance api in iOS 15+ (#9617) (2749221)
    • ios: UIImage memory leaking after Image is disposed (#9777) (19d8869)
    • memory leaks around image picking/saving to device (7dcfecf)
    • qualifier matcher did not support multiple qualifiers for a single file. (#9720) (3d03f8f)
    • setup script to build only what's necessary (b05650c)
    • tear down views after a modal is closed (#9801) (b38337e)
    • time-picker: correction for super.disposeNativeView (c41e702)

    Features

    • android: content uri support for File (#9807) (c68d002)
    • android: tab view icon rendering mode (#9605) (66d8aff)
    • android: update ui-mobile-base to gradle7 (#9778) (c7df2d0)
    • background/foreground events (#9763) (b553a90)
    • bindable: allow "global" context for expressions inside bindings (#9734) (2cbb135)
    • binding expression parser additions and improvements (#9791) (716b831)
    • config: add new option for pathsToClean (08d5656)
    • config: cli.additionalPathsToClean to clean other paths with 'ns clean' (#9808) (3ec8c42)
    • core: add event when disposeNativeView is called (f038e6b)
    • core: support RGB alpha notation (#9699) (388d7ea)
    • datepicker: ability to show time via showTime property (#9570) (ab4e47a)
    • gestures: GestureEvents.gestureAttached added to modify native recognizers when needed (168a169)
    • improved background handling (#9615) (dde9e02)
    • improved converter and function call parsing mechanism for XML expressions (#9805) (c5856c6)
    • ios: allow dynamic ProMotion frame refresh rate changes (#9775) (b292495)
    • new expression parser for xml bindings (#9729) (90ceed1)
    • proper handling for bindings with converters that were undefined (#9813) (a1772c0)
    • root-layout: support gradient colors on shade cover (#9626) (d756eb5)
    • switch: :checked pseudo and color fixes (#9790) (6437352)
    • testID property for use with e2e testing without interfering with a11y (#9793) (8be543b), closes #9748
    • touch animations demo in toolbox (d7916d7)
    • types-android: updated types + api32 (#9774) (2393dad)
    • types-ios: iOS 15.2 (#9710) (25679a6)
    • types-ios: iOS 15.4 (#9806) (39164ef)
    • types-ios: reduced ios types to common types for optimized ts resolution (#9809) (6cd8b8e)
    • ui: TouchManager for ease in adding interactivity (26953ec)
    • Utils for queueGC, debounce and throttle (40c5984)

    Performance Improvements

    • ios: autoreleasepool for image extensions (fbefea4)
    • ios: prevent crash with image release (1fb687d)
    • ios: uifont and formatted string optimizations plus uiimage scaling (#9761) (9d3977e)
    • ios: UIImage memory leaks (#9783) (988f372)

    Breaking Changes

    For vanilla NativeScript users (using .xml views), several adjustments were made to the xml binding expressions parsing and you may need a few adjustments, for example:

    BEFORE:

    {{ default ? ' something' : ' something else' }}
    

    AFTER:

    Note: renamed default to variable name.

    {{ enableSubmit ? ' something' : ' something else' }}
    

    This is related to the fact that default is a reserved keyword and the expression parsing uses natural language syntax now.

    BEFORE:

    Note: This would apply to example usage: {{ variable | someConv }}

    getResources().someConv = {
       toView: function () {}
    }
    

    AFTER:

    getResources().someConv = function () {}
    

    This is related to improving/simplifying the convertors syntax with bindings.

    Source code(tar.gz)
    Source code(zip)
  • 5.0.6-webpack(Mar 8, 2022)

  • 5.0.5-webpack(Mar 8, 2022)

    Bug Fixes

    • webpack: exclude other platforms from require.context (#9686) (cb7bd2a), closes #9682
    • webpack: xml-namespace-loader incorrect dependency mapping (#9780) (151d6e8)

    Features

    Source code(tar.gz)
    Source code(zip)
  • 8.1.5-core(Oct 28, 2021)

  • 8.1.4-core(Oct 9, 2021)

    Bug Fixes

    • android: StringIndexOutOfBoundsException with invalid drawables (#9563) (8e76bbe)
    • background parsing color #9559 (#9560) (3e21748)
    • ios: ActionBar flat property using new appearance api for iOS 15 (#9558) (183b4d4)
    • ios: TextView respect editable binding (#9589) (2b2ce37)
    • ios: replace autofill string in textfield (#9555) (889f6d7)
    • style: CSS variables should be case-sensitive. (#9603) (02aa0f6)

    Features

    Source code(tar.gz)
    Source code(zip)
  • 8.1.3-core(Sep 18, 2021)

  • 8.1.2-core(Sep 15, 2021)

  • 8.1.1-core(Sep 12, 2021)

    Reverts

    • feat: requestLayout performance improvements (#9122) (e4ce17e)

    This commit breaks back-navigation in certain cases, most prominently with Button pseudo classes. Will target inclusion for 8.2.

    Source code(tar.gz)
    Source code(zip)
  • 8.1.0-core(Sep 12, 2021)

    Bug Fixes

    • allow ignoring reduce-css-calc w/ webpack without error (#9510) (0fd92b7)
    • android: dont dispose fragment on onloaded (#8793) (03b7715)
    • android: make less calls to native with getters around prop handling (#9119) (bca4d95)
    • android: onSaveInstanceState should not crash when no rootView is set (#9447) (ee3c4c2)
    • android: prevent potential crash when app goes to background (#9347) (47df889)
    • android: use nativeTextViewProtected internally (#9483) (71b856c)
    • backgroundGradient fix with android BorderDrawable (41ce315)
    • Color.darken fix (394209e)
    • css colors not parsed correctly within background property (453ea18)
    • include bundle-entry-points by default (ea0b3b0)
    • ios: actionBar title to use appearance api on ios15+ (#9534) (4edeb19)
    • ios: actionBar to use appearance api on ios13+ (#9530) (8e3f16d)
    • ios: actionitem coloring with 15+ (7e35fdf)
    • ios: prevent views from being measured if no native view (#9511) (56c50f2)
    • ios: resiliency to frame controller viewDidDisappear (a5fd53b)
    • modal: persist modal through configuration changes (#9533) (f3cd3d3)
    • styling: change transform parameters parsing (#9481) (dbaab58), closes #5202
    • webpack5: angular scss rule not ignoring regular scss (#9502) (093b369)
    • webpack: add virtualEntry before main entry (5a3a35d), closes #9469
    • webpack: use async type-checking in watch mode (5309f2d)

    Features

    • AbortController polyfill (#9333) (af281dd)
    • android: support clipToBounds (#9508) (5890667)
    • android: vector drawable support (#9464) (490f7dc)
    • autofillType property for edit text base (#9478) (4964d31)
    • color: added utilities and improved color parsing performance (#9110) (0ff2221)
    • config: added option for ignoredNativeDependencies (4cad76c)
    • core: make css parsers tree-shakable (#9496) (dce7408)
    • Frame replacePage by entry (#9460) (4a5bec1), closes #9497
    • handle config name (3bf55b7)
    • image-source: add saveToFileAsync, toBase64StringAsync & resizeAsync (#9404) (36900d7)
    • requestLayout performance improvements (#9122) (e4ce17e)
    • types-android: API 31 (b5b46273b)
    • types-ios: iOS 15 (cb8bf6f)
    • webpack: -v and --version flags (7530ee4)
    • webpack: export merge helper (53492ea)
    • webpack: try resolving compiler, but don't fail if not found (ff4359a)
    Source code(tar.gz)
    Source code(zip)
  • webpack-5.0.0(Sep 8, 2021)

    This is a major release of @nativescript/webpack that is now rebuilt from the ground up with ease of upgrading and customizing in mind.

    Most new projects were already using the beta version of @nativescript/webpack so there's a good chance your project is already compatible.

    The docs cover how the new configuration works: https://docs.nativescript.org/webpack.html

    Upgrading from @nativescript/webpack beta/rc

    If you are already using the beta or rc versions, update to 5.0.0 by changing the version in package.json or using the following command:

    npm i --save-dev @nativescript/webpack
    

    Upgrading from @nativescript/webpack <5

    To upgrade, delete your old webpack.config.js (create a backup if you have done any customizations to it) and then install the latest 5.0.0 version:

    npm i --save-dev @nativescript/webpack
    

    Initialize a new config:

    npx nativescript-webpack init
    

    The new config should look something like this:

    const webpack = require("@nativescript/webpack");
    
    module.exports = (env) => {
      webpack.init(env);
    
      // Learn how to customize:
      // https://docs.nativescript.org/webpack
    
      return webpack.resolveConfig();
    };
    

    Next step is to re-add your customizations if any. Please refer to the docs for examples.

    Source code(tar.gz)
    Source code(zip)
  • 8.0.11-core(Sep 7, 2021)

  • 8.0.10-core(Sep 3, 2021)

  • 8.0.9-core(Sep 2, 2021)

  • 8.0.8-core(Jun 15, 2021)

Owner
NativeScript
Empowering you to access native platform API’s from JavaScript directly.
NativeScript
🚀 React Native Segmented Control, Pure Javascript for iOS and Android

Installation Add the dependency: npm i react-native-segmented-control-2 Peer Dependencies Zero Dependency ?? Usage Import import SegmentedControl from

FreakyCoder 11 Nov 10, 2022
React-native-user-interface - Change React Native userinterface at runtime

react-native-user-interface change RN userinterface at runtime. Installation npm

Ahmed Eid 0 Jan 11, 2022
A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.

Ionic Ionic is an open source app development toolkit for building modern, fast, top-quality cross-platform native and Progressive Web Apps from a sin

Ionic 48.4k Jan 3, 2023
A 2020s compatible React Native keyboard avoiding view for Android and iOS that just works.

react-native-keyboard-shift Example Snack coming soon Until then: Clone this repo: git clone https://github.com/FullStackCraft/react-native-keyboard-s

Full Stack Craft 66 Aug 16, 2022
A music picker library for React Native. Provides access to the system's UI for selecting songs from the phone's music library.

Expo Music Picker A music picker library for React Native. Provides access to the system's UI for selecting songs from the phone's music library. Supp

Bartłomiej Klocek 60 Dec 29, 2022
Matomo wrapper for React-Native. Supports Android and iOS. Fixed issues for native platforms build that are present in the official package.

@mccsoft/react-native-matomo Matomo wrapper for React-Native. Supports Android and iOS. Fixed issues for native platforms build that are present in th

MCC Soft 4 Dec 29, 2022
Simple Application that helps individuals prioritize by directly comparing items in a list and ranking their importance to the individual

Analysis.Paralysis Simple Application that helps individuals prioritize by directly comparing items in a list and ranking their importance to them. Cu

Ryan Foster 0 Jun 19, 2022
Initiate immediate phone call for React Native on iOS and Android.

react-native-immediate-call-library Initiate immediate phone call for React Native on iOS and Android. Getting started Using npm: npm install react-na

null 7 Sep 7, 2022
React Native Stone SDK Implementation (Support for both Mobile and POS versions)

react-native-stone-pos Stone Android POS Native Module Installation Stone has a private packageCloud repository, so we need to have your token before

8Sistemas 9 Dec 10, 2022
An Animated Scrolling View for React Native applications, supported on both iOS and Android

react-native-focused-scroll An Animated Scrolling View for React Native applications, supported on both iOS and Android Preview react-native-focus-scr

Fatemeh Marzoughi (Saba) 3 Aug 12, 2022
Source code of JekyllEx Android App which can manage your Jekyll blog directly from your Android device!

JekyllEx Android App Built with ❤︎ by Gourav Khunger ?? Introduction JekyllEx is an Android App that allows you to manage a Jekyll Blog directly from

JekyllEx 24 Nov 8, 2022
Idaesbasic - An all in one project manager that stores everything in files directly into your project! 🤯

Idaesbasic - Project-Managment redefined Idaesbasic Everything is a file ?? With this project managment tool, everything is a file. Your todolists are

Ben Herbst 123 Nov 11, 2022
Simple library to decompress files .zip, .rar, .cbz, .cbr in React Native.

Uncompress React Native Simple library to decompress files .zip, .rar, .cbz and .cbr in React Native. Installation yarn add uncompress-react-native o

Adriano Souza Costa 40 Nov 24, 2022
A react native interface for integrating payments using PayPal

react-native-paypal Getting started Installation npm install react-native-paypal Android Specific Add this to your build.gradle maven { url "https:

eKreative 14 Sep 25, 2022
Make SIP calls from react-native using Linphone SDK

react-native-sip Make SIP calls from react-native using Linphone SDK Installation npm install react-native-sip Usage import { multiply } from "react-n

Woonivers 2 Jun 30, 2022
A demo for Android font typeface support in React Native!

A Step-by-step Guide to a Consistent Multi-Platform Font Typeface Experience in React Native Goal Be able to use font typeface modifiers such as fontW

Jules Sam. Randolph 53 Dec 23, 2022
A framework for building native applications using React

React Native Learn once, write anywhere: Build mobile apps with React. Getting Started · Learn the Basics · Showcase · Contribute · Community · Suppor

Meta 106.9k Jan 8, 2023
Wrapper for Kustomer SDK v2.0 for react native

This is a wrapper for Kustomer v2 Sdk for react native. This implements the kust

Shivam Rawat 2 Dec 30, 2021