LIFF Inspector is the official DevTools for LIFF (LINE Front-end Framework) that is integrated with the latest Chrome DevTools and built on top of the Chrome DevTools Protocol.
| LIFF browser | Chrome DevTools |
|---|---|
![]() |
![]() |
π± Enable debugging LIFF Browser and WebView with debugging options disabled
π Remote debug
π¬ Support Elements, Console and NetWork tabs of Chrome DevTools
LIFF Inspector consists of two components:
- LIFF Inspector Server
- LIFF Inspector Plugin
LIFF Inspector Server is a server program that mediates communication between LIFF app and Chrome DevTools. LIFF Inspector Plugin is a LIFF Plugin. LIFF Plugin is available in LIFF SDK v2.19.0 or later.
$ npx @line/liff-inspector
Debugger listening on ws://{IP Address}:9222$ npm install @line/liff-inspectorimport liff from '@line/liff';
import LIFFInspectorPlugin from '@line/liff-inspector';
liff.use(new LIFFInspectorPlugin());Before the actual liff.init process, LIFF Inspector Plugin will try to connect LIFF Inspector Server.
Debugging with LIFF Inspector is available immediately after liff.init call.
liff.init({ liffId: 'liff-xxxx' }).then(() => {
// LIFF Inspector has been enabled
});After liff.init, LIFF Inspector Server shows the devtools URL for your LIFF App in console.
$ npx @line/liff-inspector
Debugger listening on ws://{IP Address}:9222
+ connection from client, id: xxx
+ DevTools URL: devtools://devtools/bundled/inspector.html?wss=8a6f-113-35-87-12.ngrok.io/?hi_id=xxxOpen the URL starts with devtools://devtools/ and enjoy debugging!
By default, LIFF Inspector Server starts a local server on ws://localhost:9222, and your LIFF App is served over HTTPS (https://liff.line.me/xxx-yyy). LIFF Inspector Plugin will try to connect to ws://localhost:9222 from https://liff.line.me/xxx-yyy but this will fail due to mixed content.
To eliminate mixed content, you need to serve LIFF Inspector Server over HTTPS (wss://). We have two recommended ways:
- Using ngrok to make LIFF Inspector Server public
- Run ngrok
$ ngrok http 9222
- Copy the published URL
$ node -e "const res=$(curl -s -sS http://127.0.0.1:4040/api/tunnels); const url=new URL(res.tunnels[0].public_url); console.log('wss://'+url.host);" wss://xxxx-xxx-xxx.ngrok # Copy this url
- Run ngrok
Or
- Running LIFF Inspector Server with HTTPS using mkcert
- See the detail explanation: How to use HTTPS for local development - web.dev
Once LIFF Inspector Server runs over HTTPS, you need to specify its origin to LIFF Inspector Plugin.
-
Use URL Search Parameter:
?li.origin=Add
?li.origin=query to the Endpoint URL of your LIFF App in LINE Developers Console.
Or
-
Use
originconfig of LIFF Inspector Plugin// Default origin: ws://localhost:9222 liff.use(new LIFFInspectorPlugin({ origin: 'wss://xxx-xx-xx-xx.ngrok.io' }));
LIFF Inspector Plugin attempts to connect to given origin in the order li.origin (1), origin config (2).
(Pseudo code)
const originFromURL = new URLSearchParams(search).get('li.origin');
const originFromConfig = config.origin;
const defaultOrigin = 'ws://localhost:9222';
connect(originFromURL ?? originFromConfig ?? defaultOrigin);See https://github.com/cola119/liff-inspector-example
Contributions Welcome!
- To display Elements
- To display overlays
- To remove/add/edit Elements
- To display styles
- To display console logs
-
console.log -
console.warn -
console.error -
console.info - others
-
- To execute local scripts
- To display simple network logs
- Fetch/XHR
-
fetch() -
XMLHttpRequest -
sendBeacon() - others
-
- Others (JS/CSS/Img/Media/Font...)
- Technically difficult to intercept them...
- Fetch/XHR
- LocalStorage
- SessionStorage
- Cookies
- others
See CONTRIBUTING.md


