NativeScript Versions Save

⚡ Empowering JavaScript with native platform APIs. ✨ Best of all worlds (TypeScript, Swift, Objective C, Kotlin, Java). Use what you love ❤️ Angular, Capacitor, Ionic, React, Solid, Svelte, Vue with: iOS (UIKit, SwiftUI), Android (View, Jetpack Compose), Dart (Flutter) and you name it compatible.

8.5.5-core

10 months ago

Bug Fixes

  • animation: css keyframes (685d61c)
  • Application: orientation & systemAppearance root classes (7f09b92)

8.5.4-core

10 months ago

Bug Fixes

  • android: improve content uri handling (#10316) (77f252e)
  • animation: avoid uncaught reject on cancel (#10309) (622f365)
  • Application: inBackground handling & missing once (#10307) (e430555)
  • ensure Application instance initialized early (#10315) (0401b09)
  • shared-transition: race condition with interactive updates (#10312) (25cc49d)
  • shared-transitions: layer opacity set back to original on next tick (#10310) (0956cb0)

8.5.3-core

11 months ago

Bug Fixes

Performance Improvements

8.5.2-core

1 year ago

Bug Fixes

  • ios: resilience to nativeView access under edge cases (#10276) (4551da0)

Features

8.5.1-core

1 year ago

Bug Fixes

Features

  • ios: new a11y properties for managing font scale (#10260) (7aaa1d8)
  • text: valueFormatter for easy and flexible input auto-formatting (#10264) (b3abc5f)
  • transitions: support zIndex on ios shared elements + support page props on android (#10261) (f4b2722)

8.5.0-core

1 year ago

Bug Fixes

Features

Performance Improvements

Breaking Changes

Most projects will be unaffected by these but in an effort to be clear as possible, we will note the following:

  1. Event binding callbacks prefer a properly typed argument:

Potential issue:

error TS2339: Property 'newValue' does not exist on type 'EventData'.

2611       if (e.newValue) {

Possible causes:

Application.on(Application.orientationChangedEvent, (event) => {

Solution:

Application.on(Application.orientationChangedEvent, (event: OrientationChangedEventData) => {
  1. Android labels are vertical align middle by default.

This means that potentially if you were using margins to position, for example on font icon labels, they may appear mis-positioned intially after updating. You should be able to remove custom margin handling to simplify.

  1. Page transitions have improved their API to provide more platform control and introduced a breaking change to the method signatures on iOS. If you had created a custom by extending the Transition class:
  • BEFORE:
animateIOSTransition(containerView: UIView, fromView: UIView, toView: UIView, operation: UINavigationControllerOperation, completion: (finished: boolean) => void): void {
    toView.transform = CGAffineTransformMakeScale(0, 0);
    fromView.transform = CGAffineTransformIdentity;

    switch (operation) {
        case UINavigationControllerOperation.Push:
            containerView.insertSubviewAboveSubview(toView, fromView);
            break;
        case UINavigationControllerOperation.Pop:
            containerView.insertSubviewBelowSubview(toView, fromView);
            break;
    }

    var duration = this.getDuration();
    var curve = this.getCurve();
    UIView.animateWithDurationAnimationsCompletion(
        duration,
        () => {
            UIView.setAnimationCurve(curve);
            toView.transform = CGAffineTransformIdentity;
            fromView.transform = CGAffineTransformMakeScale(0, 0);
        },
        completion
    );
}
  • AFTER:
animateIOSTransition(transitionContext: UIViewControllerContextTransitioning, fromViewCtrl: UIViewController, toViewCtrl: UIViewController, operation: UINavigationControllerOperation): void {
    const toView = toViewCtrl.view;
    const fromView = fromViewCtrl.view;
    toView.transform = CGAffineTransformMakeScale(0, 0);
    fromView.transform = CGAffineTransformIdentity;

    switch (operation) {
        case UINavigationControllerOperation.Push:
            transitionContext.containerView.insertSubviewAboveSubview(toView, fromView);
            break;
        case UINavigationControllerOperation.Pop:
            transitionContext.containerView.insertSubviewBelowSubview(toView, fromView);
            break;
    }

    var duration = this.getDuration();
    var curve = this.getCurve();
    UIView.animateWithDurationAnimationsCompletion(
        duration,
        () => {
            UIView.setAnimationCurve(curve);
            toView.transform = CGAffineTransformIdentity;
            fromView.transform = CGAffineTransformMakeScale(0, 0);
        },
        (finished) => {
            transitionContext.completeTransition(finished);
        }
    );
}

Notes

  • Android WeakRef usage is now standardized and aligned with iOS and latest JavaScript standards to universally use deref instead of the deprecated get API. In 8.4, iOS allowed usage of deref but Android still required get. With 8.5 you can now use deref the same everywhere.
  • If you were using an iterator over an iOS NSArray, always make sure it's using proper platform API, for example:

Incorrect:

// collection: NSArray
for (var i = 0; i < collection.count; i++) {
    const obj = collection[i];

Correct:

// collection: NSArray
for (var i = 0; i < collection.count; i++) {
    const obj = collection.objectAtIndex(i);

5.0.14-webpack

1 year ago

feat(webpack): support tsconfig.app.json when present (https://github.com/NativeScript/NativeScript/commit/ebb827fb8e4cf2ebc82ca66bea386ddc654711f7)

fix(webpack): notify CLI even if there are compilation errors (https://github.com/NativeScript/NativeScript/commit/605998455595a2d35b7f0f73b2cde08c0516361c)

8.4.7-core

1 year ago

Bug Fixes

  • core: allow CoreTypes declarations to be auto generated (#10183) (9f76fea)
  • ios: race condition when setting preferredContentSize on view controller (#10179) (ed14e24)
  • ios: race conditions with nativeView (#10182) (c42c3c5)

8.4.6-core

1 year ago

Bug Fixes

  • core: ScrollView event wiring sequencing improvement (#10178) (75821ea)

8.4.5-core

1 year ago

Bug Fixes

  • core: improve loaded/unloaded handling (18b911e)
  • core: improve loaded/unloaded handling to be stable and consistent (#10170) (c9e29aa)
  • ios: embedder usage of window (#10167) (a69a9d6)