Fliplet.App.Submissions
Read App Store and Google Play submission metadata for the current Fliplet app via the fliplet-app-submissions package. The package is a thin wrapper around the v1/apps/{appId}/submissions REST API and exposes the same submission records that Fliplet Studio’s “Launch” section uses to track native build state — platform, status, version number, build artifacts, and result payloads.
Common use cases include showing a “Current version” badge on an About screen, displaying an “Update available” banner when a newer submission has been published, or surfacing submission state in a custom admin dashboard inside an app.
Install
Add the fliplet-app-submissions dependency to your screen or app resources. The package depends on fliplet-core and exposes the Fliplet.App.Submissions global.
Fliplet.App.Submissions.get()
(Returns Promise)
Fetch the list of submissions for the current app, ordered by most recently updated first. Wraps GET v1/apps/{appId}/submissions.
Usage
Fliplet.App.Submissions.get().then(function (submissions) {
// submissions (Array) List of submission records
});
- options (Object, optional) Query filters passed through as query string parameters (for example
{ platform: 'ios' }or{ status: 'completed' }).
Each submission in the resolved array includes:
- id (Number) Submission ID
- platform (String)
ios,android, orwindows - status (String) One of
started,submitted,queued,processing,ready-for-testing,tested,completed,failed,cancelled - data (Object) Submission input fields. Notable keys include
submissionType(appStore,enterprise,unsigned),fl-store-versionNumber,fl-store-bundleId - result (Object) Build artifacts and metadata returned by the build pipeline once the submission completes
- submittedAt (String, ISO date) When the submission was sent to the build pipeline
- createdAt / updatedAt (String, ISO date)
Example: filter by platform
Fliplet.App.Submissions.get({ platform: 'ios' }).then(function (submissions) {
console.log('iOS submissions:', submissions);
});
Example (Vue 3): show the current published version
<template>
<p v-if="latest">Current version: </p>
<p v-else>No completed submissions yet.</p>
</template>
<script setup>
import { ref, onMounted } from 'vue';
const latest = ref(null);
onMounted(async () => {
const submissions = await Fliplet.App.Submissions.get({ platform: 'ios' });
latest.value = submissions.find(s => s.status === 'completed') || null;
});
</script>
Fliplet.App.Submissions.getById()
(Returns Promise)
Fetch a single submission by its ID. Wraps GET v1/apps/{appId}/submissions/{id}.
Usage
Fliplet.App.Submissions.getById(123).then(function (submission) {
// submission (Object) The submission record
});
- id (Number) The submission ID.
Fliplet.App.Submissions.create()
(Returns Promise)
Create a new submission record. Wraps POST v1/apps/{appId}/submissions. The submission is created with status: 'started' and is not yet sent to the build pipeline — call build() to queue it for building.
Usage
Fliplet.App.Submissions.create({
platform: 'ios',
data: {
submissionType: 'appStore',
'fl-store-versionNumber': '1.2.0',
'fl-store-bundleId': 'com.example.myapp'
}
}).then(function (submission) {
// submission (Object) Newly created submission record
});
- data (Object) Submission input.
- platform (String)
ios,android, orwindows. - data (Object) Submission fields. Keys prefixed with
_are encrypted automatically by the API before being stored (for credentials).
- platform (String)
Note: Submissions can only be created from the master app, not from a production app clone.
Fliplet.App.Submissions.update()
(Returns Promise)
Replace the data object of an existing submission. Wraps POST v1/apps/{appId}/submissions/{id}/data. Only submissions in started or failed status can be updated.
Usage
Fliplet.App.Submissions.update(123, {
submissionType: 'appStore',
'fl-store-versionNumber': '1.2.1'
}).then(function (response) {
// response.submission (Object) The updated submission record
});
- id (Number) The submission ID.
- data (Object) The new
datapayload. Replaces the existingdataobject.
Fliplet.App.Submissions.put()
(Returns Promise)
Merge the provided fields into the existing data object of a submission, leaving other keys untouched. Wraps PUT v1/apps/{appId}/submissions/{id}/data. Only submissions in started or failed status can be updated.
Usage
Fliplet.App.Submissions.put(123, {
'fl-store-versionNumber': '1.2.1'
}).then(function (response) {
// response.submission (Object) The updated submission record
});
- id (Number) The submission ID.
- data (Object) Fields to merge into the submission’s
dataobject.
Fliplet.App.Submissions.build()
(Returns Promise)
Queue a submission for building. Wraps POST v1/apps/{appId}/submissions/{id}/build. The submission must be in started status, and the app must already have a published production app. Building requires the calling user to have publishAndUpdateApp permission, and on metered V3 organizations the appropriate platform credit is deducted.
Usage
Fliplet.App.Submissions.build(123).then(function (response) {
// response.submission (Object) The submission record, now status: 'submitted'
}).catch(function (error) {
// Build could not be queued (validation failed, no production app, etc.)
});
- id (Number) The submission ID to build.
Common use cases
Show the current published version on an About screen
<template>
<div v-if="version">Version </div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
const version = ref('');
onMounted(async () => {
const submissions = await Fliplet.App.Submissions.get();
const latestCompleted = submissions.find(s => s.status === 'completed');
version.value = latestCompleted?.data['fl-store-versionNumber'] || '';
});
</script>
Detect that a newer build is available
Compare the latest completed submission’s version against a version constant baked into the running app build:
const APP_VERSION = '1.1.0';
Fliplet.App.Submissions.get({ status: 'completed' }).then(function (submissions) {
const latest = submissions[0]; // Already ordered by updatedAt DESC
const latestVersion = latest && latest.data['fl-store-versionNumber'];
if (latestVersion && latestVersion !== APP_VERSION) {
// Show an "Update available" banner
}
});
List recent submission attempts in a custom admin screen
Fliplet.App.Submissions.get().then(function (submissions) {
submissions.slice(0, 5).forEach(function (s) {
console.log(`${s.platform} · ${s.status} · v${s.data['fl-store-versionNumber'] || '?'} (${s.updatedAt})`);
});
});