RocketChat/Rocket.Chat · info · Error
No_results_found
Error message
No_results_found
What it means
Client-side synthetic error in the Marketplace app's Releases tab: the useQuery queryFn fetches GET /apps/:id/versions and, when the returned apps array is empty, throws new Error(t('No_results_found')). This converts 'no versions published' into a query error so the UI renders the error state (EmptyState) instead of an empty list; meta.apiErrorToastMessage also toasts it.
Source
Thrown at apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppReleases/AppReleases.tsx:22
import { useQuery } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import AppReleasesItem from './AppReleasesItem';
import AccordionLoading from '../../../components/AccordionLoading';
export type AppReleasesProps = { id: App['id'] };
const AppReleases = ({ id }: AppReleasesProps) => {
const getVersions = useEndpoint('GET', '/apps/:id/versions', { id });
const { t } = useTranslation();
const { data, isLoading, isFetched } = useQuery({
queryKey: ['apps', id, 'versions'],
queryFn: async () => {
const { apps } = await getVersions();
if (apps.length === 0) {
throw new Error(t('No_results_found'));
}
return apps;
},
meta: {
apiErrorToastMessage: true,
},
});
return (
<>
<Accordion width='100%' alignSelf='center'>
{isLoading && <AccordionLoading />}
{isFetched && <>{data?.map((release) => <AppReleasesItem release={release} key={release.version} />)}</>}
</Accordion>
</>
);
};
View on GitHub (pinned to b2c16d5842)
Solutions
- Treat it as an expected empty state: this is informational, not a failure — no fix needed if the app genuinely has no releases.
- Verify via GET /api/apps/:id/versions that the array is really empty.
- Re-sync the marketplace (Admin > Marketplace) if versions are missing unexpectedly.
- For sideloaded apps, ensure the app.json version info is valid so versions are listed.
Example fix
// before
if (apps.length === 0) {
throw new Error(t('No_results_found'));
}
// after (optional UX refactor): render empty state instead of throwing
if (apps.length === 0) {
return [];
}
// then render <EmptyState title={t('No_results_found')} /> when data?.length === 0 Defensive patterns
Strategy: fallback
Validate before calling
const { apps } = await getVersions();
if (apps.length === 0) {
// render the 'no releases' empty state; skip the error path
} Try / catch
try { ... } catch (e) { if ((e as Error).message === t('No_results_found')) { /* expected: app has no published versions */ return; } throw e; } Prevention
- Treat empty version lists as valid empty states, not errors.
- Sync the marketplace when versions seem missing.
- For sideloaded apps, keep valid version metadata in app.json.
When it happens
Trigger: Opening an app's Releases tab in the marketplace for an app whose versions list from the Apps-Engine endpoint is empty (unpublished/exploratory app, engine returned no versions, or filtered results).
Common situations: Private/sideloaded apps without published versions; marketplace sync glitches returning empty arrays; newly listed apps before versions propagate.
Related errors
- No app.json file found in the zip
- Failed to parse app.json: ${e instanceof Error ? e.message :
- Marketplace_Invalid_Apps_Engine_Version
- app-addon-not-valid
- invalid-license
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/b6691e665d175516.
Report an issue: GitHub.