# Release notes

# LIFF version and release date

Beginning with LIFF v2.2.0, LIFF will follow Semantic Versioning (SemVer). For more information, see LIFF versioning policy.

CDN path

We provide two CDN paths: fixed and edge. If you use the CDN edge path, you are always up-to-date with the latest MINOR and PATCH updates. If you use the CDN fixed path, you need to manually update your URL with each update.

For more information, see LIFF SDK (sdk.js) update policy in the LIFF versioning policy documentation.

# Current version

When you use the CDN edge path (https://static.line-scdn.net/liff/edge/2/sdk.js), you can always use the latest features of LIFF v2.

LIFF v2.3.1: July 16, 2020

# Version list

When you use the CDN fixed path (e.g. https://static.line-scdn.net/liff/edge/versions/2.3.1/sdk.js), you can use the features of the specified LIFF version.

2020/07/16

# We've released LIFF v2.3.1

The changes in LIFF v2.3.1 are as follows:

There are no feature updates in this release.

# Problems with the LIFF SDK npm package documentation were fixed

We fixed an issue with the npm official site documentation for the LIFF SDK npm package that was experimentally released.

# Installation and usage instructions of the LIFF SDK npm package were moved

We moved the installation and usage instructions of the LIFF SDK npm package from the npm official website to the LINE Developers site. For more information, see Use the npm package.

2020/07/15

# New feature has been added to the LIFF header

As announced on July 6, 2020, a new feature has been added to the LIFF header.

LIFF header design to be improved

# The LIFF app icon is no longer displayed

The icon in the upper left corner of the LIFF app is no longer displayed.

# The share button has been added

LIFF apps with the size of the LIFF app view set to Full include a share button in the header. When a user taps the share button, the following options appear:

Item Description
Share Shares the URL of the current page via a LINE message.
Refresh Reloads the current page.

Enable Module mode of the LIFF app in the LINE Developers console to hide the share button.

Operating environment

The share button will be available on LINE versions 10.12.0 or later for iOS and Android.

2020/07/01

# LIFF SDK released as an npm package

Until now, to include the LIFF SDK in a LIFF app, it was necessary to Specify the CDN path.

On July 1, 2020, we released the LIFF SDK npm package on a trial basis. Now you can use npm and Yarn to install the LIFF SDK.

For more information on the LIFF SDK npm package, see https://www.npmjs.com/package/@line/liff.

The available LIFF SDK versions as an npm package is v2.3.0 or later. The features of future LIFF SDK versions will be announced on this page.

npm package trial

The npm package is available on a trial basis. It may be changed or deleted in the future without notice.

2020/06/29

# We've released LIFF v2.3.0

This feature has been added in LIFF v2.3.0:

# You can now use paths and query parameters in the LIFF endpoint URL

You can now use paths (/path) and query parameters (?key=value) added to the LIFF endpoint URL in the LIFF tab of the LINE Developers console.

If setting Methods for converting additional information in the LIFF URL to Concatenate in LIFF apps, the access to the LIFF app is redirected to the URL that combines Endpoint URL including the paths and query parameters, and additional information set to LIFF URL.

For more information, see Opening a LIFF app in the LIFF documentation.

When executing the liff.permanentLink.createUrl() method, an exception is thrown if the current page URL doesn't start with the URL specified in Endpoint URL.

Especially when setting Methods for converting additional information in the LIFF URL to Replace (Backward compatibility mode), the paths and query parameters (/2020campaign/?key=value) specified in Endpoint URL may not be included in the secondary redirect URL. In this case, you can't get a permanent link because the liff.permanentLink.createUrl() method meets the above conditions.

For more information, see liff.permanentLink.createUrl() in the LIFF v2 API reference.

# You can now get the send results of liff.shareTargetPicker()

Before the spec change, the LIFF app was able to confirm whether the target picker was displayed, but not whether the message was sent after that.

After the change, the LIFF app is able to check whether the message has been sent, so you can change the behavior of the LIFF app depending on the user's situation.

Note
  • The return value of liff.shareTargetPicker() is changed due to this spec change.
  • This spec change doesn't affect users using LINE 10.3.0 - 10.10.0.

For more information, see liff.shareTargetPicker() in the LIFF v2 API reference.

# An error code returned by liff.sendMessages() added

Previously, if passing the wrong parameters to liff.sendMessages(), 400 was returned as the error code of LiffError. After the spec change, INVALID_ARGUMENT is returned instead.

As long as the processing isn't split by error codes, this spec change doesn't effect your LIFF app.

For more information, see our News coverage for June 29, 2020.

2020/06/15

# LIFF v2.2.0: LIFF error codes added

The LiffError codes passed when Promise is rejected in the following methods have been made more detailed, making the cause of the problem easier to understand.

For more information, view the Error Response descriptions for these methods:

2020/04/30

# LIFF v2.1.13: liff.getLineVersion() and liff.id added to LIFF v2

We added the liff.getLineVersion() method and the liff.id property to LIFF v2.

liff.getLineVersion() allows you to get the user's LINE version.

If a user opens the LIFF app using LINE's in-app browser, the LINE version of the user is returned as a string. If a user opens the LIFF app using an external browser, null is returned.

liff.id is the property that holds the LIFF app ID (String type) passed to liff.init().

Learn more about liff.getLineVersion() and liff.id in the LIFF v2 API reference.

2020/04/03

# liff.isApiAvailable() added to LIFF v2

We added the method liff.isApiAvailable() to LIFF v2. This method checks whether a specified API can be used in the environment where the LIFF app was launched.

Note

The number of APIs you can specify is limited. Currently, you can only specify liff.shareTargetPicker(). We'll notify you when more APIs can be checked with liff.isApiAvailable() in the future.

# Check if share target picker is available

By executing liff.isApiAvailable() before you execute liff.shareTargetPicker(), you can avoid the user getting an error message on their screen if the share target picker isn't available in their device environment.

if (liff.isApiAvailable('shareTargetPicker')) {
  liff.shareTargetPicker([
    {
      type: "text",
      text: "Hello, World!"
    }
  ])
    .then(
      alert("ShareTargetPicker was launched")
    ).catch(function(res) {
      alert("Failed to launch ShareTargetPicker")
    })
}

Learn more from liff.isApiAvailable() in the LIFF v2 API reference.

2020/03/03

# liff.shareTargetPicker() and liff.ready added to LIFF v2

We added liff.shareTargetPicker() and liff.ready to LIFF v2.

# liff.shareTargetPicker()

Execute the liff.shareTargetPicker() method to display the target picker (screen for selecting a group or friend) and send the message created by the developer to the selected target. This message appears to your group or friends as if you had sent it.

target picker

For more information, see Sending messages to a user's friend (share target picker) in the LIFF documentation.

Target picker operating environment

Target picker is supported on 10.3.0 for both LINE for iOS and LINE for Android.

# liff.ready

With liff.ready, you can get the Promise object that resolves when you run liff.init() for the first time after starting the LIFF app. If you use liff.ready, you can execute any process after the completion of liff.init().

For more information, see liff.ready in the LIFF v2 API reference.

2020/02/07

# Notice about LIFF v1 APIs and discontinuation schedule change

We announced that the end-of-life of LINE Front-end Framework (LIFF) server API was scheduled for March 31, 2020. Due to feedback received, we will continue to provide the API.

As for LIFF v1, we will announce the discontinuation schedule as soon as it is decided. In the meantime, we recommend that you migrate from v1 to v2 as soon as possible.

Feature Schedule before this update Schedule after this update
LIFF v1 Client API Scheduled for discontinuation Scheduled for discontinuation (This has not changed)
LIFF v1 Server API Scheduled for discontinuation on March 31, 2020 Support continues
LIFF v1 will still be discontinued

As announced on October 16, 2019, LIFF v1 will be discontinued. Use the latest version of LIFF.

2020/02/05

# Users can no longer add LIFF apps to Messaging API channels

As announced on November 11, 2019, due to a function enhancement with LIFF v2, users can no longer add LIFF apps to Messaging API channels.

To find out about restrictions on LIFF apps already added to the Messaging API channel, and how to transition to the LINE Login channel, see the above news article.

2020/01/21

# LIFF v1 Server API end-of-life on March 31, 2020

March 31, 2020 marks the end-of-life date for LINE Front-end Framework (LIFF) v1 Server API. On that date, these features will be removed:

Use the latest version of LIFF

As announced on October 16, 2019, LIFF v1 will be discontinued.

# Use LIFF v2

All discontinued Server API functions can be used in LINE Developers Console. For more information on how to add a LIFF app to a channel, read this:

You can use other features with the same process.

LINE will continue to improve the quality of its services. Thank you for your understanding.

2020/01/14

# Update your code that uses the suspended LIFF SDK API

As announced on November 29, 2019, on LINE for iOS 9.19.0 or later, these APIs were temporarily suspended due to technical issues.

  • liff.scanCode()
  • liff.bluetooth.*

Starting today, for end users using the LIFF app on LINE 9.19.0 or later for iOS, each API works as follows.

API Function
liff.scanCode() API is undefined
liff.bluetooth.* If the Bluetooth plug-in fails to initialize when calling liff.initPlugins(['bluetooth']), a FORBIDDEN error is returned.

If you use liff.scanCode(), we recommend that you also consider the above case and verify that the function exists.

Before modification:

liff.scanCode().then(result => {
  // result = { value: '' }
});

Modified:

if (liff.scanCode) {
	liff.scanCode().then(result => {
	  // result = { value: '' }
	});
}

For more information, see LIFF v2 API reference.

LINE will continue to improve the quality of its services. Thank you for your understanding.

2019/11/29

# Some LIFF functions suspended

Due to a technical issue, we've temporarily suspended the following LIFF functions. We'll let you know as soon as this situation changes.

  • liff.scanCode()
  • liff.bluetooth.*

# Impacted environments

Environment Version
LINE for iOS On version 9.19.0 and later, the functions listed above are temporarily unavailable.
LINE for Android Not affected for now, but more news will follow soon.

We apologize for the inconvenience and are working hard to solve the problem.

2019/11/11

# Users can no longer add LIFF apps to Messaging API channels

LIFF v2 is scheduled to be updated with LINE Login as the core channel. Additionally, an upcoming change will prevent users from adding LIFF apps to Messaging API channels entirely. We strongly recommend users to add LIFF apps to the LINE Login channel.

# Scheduled change date

Early February 2020

# Influence

Channel type Impact
LINE Login channel Not affected.
Messaging API channel After the specification change, LIFF apps cannot be added to the Messaging API channel. LIFF apps added to Messaging API channels at the time of specification change are still usable.
Do not add LIFF apps to the Messaging API channel

At this time, users can add LIFF apps to the Messaging API channel. However, we strongly advise against it due to the following restrictions:

  • The bot link feature can't be used.
  • LIFF feature expansion may not be supported.
  • The LIFF app may not be usable in the future.

LIFF apps added to the LINE Login channel have no restrictions and can use all LIFF v2 functions.

# Transition to the LINE Login channel

To continue using the LIFF app added to the Messaging API channel, re-add the LIFF app to the LINE Login channel. Once re-added, LINE Developers console will issue a new LIFF app ID. As a result, please take note of the following:

  • If you're using LIFF v2, change the LIFF app ID specified in liff.init().
  • The LIFF URL used to launch LIFF (e.g.: line://app/1234567890-AbcdEfgh) will change.
Remove LIFF apps added to Messaging API channel

To avoid confusion, delete the LIFF app added to the Messaging API channel after adding to the LINE Login channel.

2019/10/16

# LIFF v2 released

LINE Front-end Framework (LIFF) v2 is a platform for web apps provided by LINE.

Use the latest version of LIFF

LIFF v1 will be deprecated.

# LIFF apps now run in external browsers

With LIFF v1, LIFF apps ran only in LINE's in-app browser. With LIFF v2, LIFF apps can also run in external browsers. This means you can develop LIFF apps using the same development environment as general web applications.

# Get user profile and email

Because compatibility with LINE Login v2.1 has improved, you can retrieve a user's ID and email address from the LINE platform. Your LIFF app can use this data to provide features related to user information and sending emails.

Furthermore, you can use LINE Login (web login flow) even when your LIFF app is running in an external browser. This means you can use the same information even when the LIFF app is running in an external browser.

# Read QR codes

You can start LINE's QR code reader and get the strings read by the user.

# Get LIFF app environment information

You can get the following details about the environment in which your LIFF app is running:

  • Operating system in which the LIFF app is running (iOS, Android, external browser)
  • Whether the LIFF app is running in the in-app browser (true, false)
  • Language settings

For more information, see LINE Front-end Framework.

2019/04/23

We have improved the consent screen bundled with the LINE Front-end Framework (LIFF). The improvement is automatically applied to all LIFF apps. There's no need for additional development work.

New consent screen

As before this update, the user can choose to not allow the LIFF app to send messages to chats. But if they do so, unlike before, the consent screen will reappear the next time the user launches the LIFF app.

2019/02/07

# You can get access tokens through LIFF SDK

We added the liff.getAccessToken() method to the LIFF SDK.

Use the access token to interact with the Social API to access user data on the LINE Platform.

For more information, see Getting the user's access token.

2018/11/16

# Renewed LIFF server API

Now you can set the following properties to your LIFF apps.

  • description property
  • features.ble property

The API endpoint for updating a LIFF app is changed. Now you can partially update the properties of your LIFF apps.

For more information, see the following sections:

2018/10/30

# LIFF apps can now be added with the LINE Developers console

Now you can add LIFF apps with the LINE Developers console. As before, you can still add LIFF apps with the LIFF server API.

For more information, see Adding a LIFF app.

2018/07/19

# The maximum number of LIFF apps has been increased

Now you can add up to 30 LIFF apps for one channel. The previous maximum number was 10.

For more information, see Add LIFF app in the LIFF API reference documentation.

2018/06/06

# LINE Front-end Framework released

LINE Front-end Framework (LIFF) is a platform for web apps that run within LINE.

When launching a web app (LIFF app) registered in LIFF in LINE, the LIFF app can get data from the LINE Platform such as the LINE user ID. The LIFF app can use such data to provide features that utilize user information and send messages on behalf of the user.

For more information, see LINE Front-end Framework.