This policy covers the SG-JB Transit app. Website privacy policy
Overview
SG-JB Transit is a free, open public transit tracker. We are committed to protecting your privacy. This policy explains what information is collected when you use the SG-JB Transit app and how it is handled.
No Account or Profile Data
You can use SG-JB Transit without creating an account or submitting your name, email address, phone number, or similar profile information.
Accounts (Optional)
You can use the app without an account. If you sign in with Apple, Google or a passkey, we keep an account with your saved stops and routes, the name and email Apple or Google shares (Apple's can be a private relay address), the public part of your passkeys (the private part never leaves your device, password manager or security key), the model of each device you sign in on, and when you last signed in. If you give the app a name to greet you by, the account keeps that name instead. The account is shared with Malaysia Transit, our app for the rest of Malaysia, and kept in its Firebase project (Cloud Firestore): signing in with Apple or Google reaches the same account in both apps, and each app keeps its own saved list. The app keeps its sign-in in the device's secure storage; it also keeps a copy of the account's details so Settings can show them. You can delete the account in Settings → Account at any time: it is deleted for both apps, with all of this.
Stored on Your Device
The app keeps a few things on your phone or tablet: your language, the region the map shows (Singapore, Johor Bahru or both) and display choices, the name you'd like to be greeted by, your saved stops and routes, route lists, timetables, Singapore departure estimates, the cross-border services and fare tables for using it offline, how long you have used the app and when the "buy me a matcha latte" reminder last appeared (so it shows at most once every two days), and whether a matcha latte payment is still awaiting approval. It also notes whether you've seen the welcome tour, each how-to tip and each notice, so they show only once. Apart from what an account keeps (above), they stay on your device, and deleting the app removes them.
Location
If you allow it, the app uses your location to show where you are on the map, suggest the region you're in, find stops and the border crossing near you, and start a journey from where you are. The region is worked out on your device. For nearby stops, the nearest crossing and the journey planner, your position is sent to our server (and, for journeys, on to Google Maps Platform) to answer that request. You can turn off location access at any time in your device settings.
Arrival Alerts and Live Activities
When you track a bus, the app sends our server the route or routes you're waiting for, your stop, the stop where you get off (if you choose one, or the one your planned journey uses), which alerts you want, your language and this device's notification tokens. The server uses them only to send that trip's alerts and Live Activity updates, through Apple's push service on iPhone and iPad. While the bus is tracked, it also keeps them in Firebase, so that a server restart doesn't end tracking. Tracking ends after 2 hours at most; the server then deletes the tokens at once, and the rest about 15 minutes later. The app keeps the tracked bus on your device until tracking ends. Nothing is sent unless you track a bus.
Technical Request Data
When the app calls our API, we process limited technical metadata for service reliability, security, and usage analytics:
- Request details such as endpoint path, method, query parameters, status code, response time, and region (Singapore, Johor Bahru or cross-border)
- Your IP address, held briefly in memory only, to limit how many requests each address can make
- The user agent your app or browser sends (its name and version)
- Origin and referrer headers when provided
We use this information to monitor API health, understand service usage, and reduce abuse. We do not use it to build personal user profiles. The latest requests are held in memory only; what we save is totals per hour, day, endpoint, region and referring website.
Transit Data
Public transit data in SG-JB Transit comes from official open data and the operators: LTA DataMall, from Singapore's Land Transport Authority, for Singapore; Malaysia's official open data platform, data.gov.my, for Johor's BAS.MY buses and KTM trains; Bas Muafakat Johor's live vehicle tracking; and Causeway Link's cross-border routes. Our server fetches it, so the app never contacts these sources directly. Route and stop parameters sent by the app are used to return the transit information you requested.
Payments
If you buy a matcha latte in the app, Apple (App Store) or Google (Google Play) handles the payment. SG-JB Transit never sees your card or account details. The app only learns which item you chose and whether the payment went through, so it can thank you, and it doesn't send this to our server.
Third-Party Services
SG-JB Transit uses the following third-party services:
- Cloudflare - delivers the map tiles, made from OpenStreetMap data; the map's fonts and symbols come from Protomaps on GitHub Pages
- LTA DataMall - Singapore's official open data for buses, MRT crowding and train alerts, through our server
- data.gov.my - Malaysia's official open data for Johor's buses and KTM trains, through our server
- Google Maps Platform - place search and routes for the journey planner, through our server
- Firebase (Google) - stores optional accounts (in Malaysia Transit's Firebase project, shared by both apps) and buses while they're tracked
- Apple App Store and Google Play - app downloads and in-app payments
- Apple Push Notification service - delivers arrival alerts and Live Activity updates on iPhone and iPad
- Expo (EAS Update) - delivers updates to the app's code, kept on your device. To check for one, the app sends its version, the system it runs on and a random code for this installation, nothing that identifies you
- Sign in with Apple and Sign in with Google - if you choose to sign in with your Apple or Google Account
These services have their own privacy policies. We recommend reviewing their respective policies for more information.
Cookies and Tracking
The app does not use cookies, advertising identifiers or analytics tools, and it does not track you across other apps or websites.
Children's Privacy
SG-JB Transit does not knowingly collect any information from children. Our service is freely accessible to all users without requiring any personal data.
Changes to This Policy
We may update this privacy policy from time to time. Any changes will be reflected on this page with an updated revision date.
Contact
If you have any questions about this privacy policy, please contact us through our website at
Last updated: 3 November 2026