diff --git a/static/app/components/idBadge/projectBadge.tsx b/static/app/components/idBadge/projectBadge.tsx
index 61bcc1edf1a911..512bd72ed01bd4 100644
--- a/static/app/components/idBadge/projectBadge.tsx
+++ b/static/app/components/idBadge/projectBadge.tsx
@@ -1,4 +1,4 @@
-import {cloneElement} from 'react';
+import {cloneElement, memo} from 'react';
import styled from '@emotion/styled';
import type {LinkProps} from 'sentry/components/core/link';
@@ -101,4 +101,4 @@ const StyledLink = styled(Link)`
}
`;
-export default ProjectBadge;
+export default memo(ProjectBadge);
diff --git a/static/app/views/explore/logs/fieldRenderers.tsx b/static/app/views/explore/logs/fieldRenderers.tsx
index 1539ff3aeeabf5..466ae43fabf170 100644
--- a/static/app/views/explore/logs/fieldRenderers.tsx
+++ b/static/app/views/explore/logs/fieldRenderers.tsx
@@ -7,11 +7,12 @@ import {Tooltip} from 'sentry/components/core/tooltip';
import {DateTime} from 'sentry/components/dateTime';
import Duration from 'sentry/components/duration/duration';
import useStacktraceLink from 'sentry/components/events/interfaces/frame/useStacktraceLink';
+import ProjectBadge from 'sentry/components/idBadge/projectBadge';
import Version from 'sentry/components/version';
import {IconPlay} from 'sentry/icons';
import {tct} from 'sentry/locale';
import {space} from 'sentry/styles/space';
-import type {Project} from 'sentry/types/project';
+import type {AvatarProject, Project} from 'sentry/types/project';
import {stripAnsi} from 'sentry/utils/ansiEscapeCodes';
import type {EventsMetaType} from 'sentry/utils/discover/eventView';
import {
@@ -23,6 +24,8 @@ import {VersionContainer} from 'sentry/utils/discover/styles';
import ViewReplayLink from 'sentry/utils/discover/viewReplayLink';
import {getShortEventId} from 'sentry/utils/events';
import normalizeUrl from 'sentry/utils/url/normalizeUrl';
+import useProjectFromId from 'sentry/utils/useProjectFromId';
+import useProjects from 'sentry/utils/useProjects';
import {useRelease} from 'sentry/utils/useRelease';
import {QuickContextHoverWrapper} from 'sentry/views/discover/table/quickContext/quickContextWrapper';
import {ContextType} from 'sentry/views/discover/table/quickContext/utils';
diff --git a/static/app/views/explore/logs/tables/logsInfiniteTable.tsx b/static/app/views/explore/logs/tables/logsInfiniteTable.tsx
index cf4bc2cebaad08..f62dada7b1aaef 100644
--- a/static/app/views/explore/logs/tables/logsInfiniteTable.tsx
+++ b/static/app/views/explore/logs/tables/logsInfiniteTable.tsx
@@ -14,6 +14,7 @@ import useJumpButtons from 'sentry/components/replays/useJumpButtons';
import {GridResizer} from 'sentry/components/tables/gridEditable/styles';
import {IconArrow, IconWarning} from 'sentry/icons';
import {t, tct} from 'sentry/locale';
+import {space} from 'sentry/styles/space';
import type {TagCollection} from 'sentry/types/group';
import {defined} from 'sentry/utils';
import {
@@ -331,6 +332,7 @@ export function LogsInfiniteTable({
'.log-table-row-chevron-button': {
width: theme.isChonk ? '24px' : '18px',
height: theme.isChonk ? '24px' : '18px',
+ padding: `${space(0.5)} ${space(0.75)}`,
marginRight: '4px',
display: 'flex',
alignItems: 'center',
diff --git a/static/app/views/explore/logs/tables/logsTableRow.tsx b/static/app/views/explore/logs/tables/logsTableRow.tsx
index cedfadd46a7ff1..2b251129e808fc 100644
--- a/static/app/views/explore/logs/tables/logsTableRow.tsx
+++ b/static/app/views/explore/logs/tables/logsTableRow.tsx
@@ -6,6 +6,7 @@ import omit from 'lodash/omit';
import {Button} from 'sentry/components/core/button';
import {EmptyStreamWrapper} from 'sentry/components/emptyStateWarning';
+import ProjectBadge from 'sentry/components/idBadge/projectBadge';
import LoadingIndicator from 'sentry/components/loadingIndicator';
import {IconAdd, IconJson, IconSubtract, IconWarning} from 'sentry/icons';
import {IconChevron} from 'sentry/icons/iconChevron';
@@ -22,6 +23,7 @@ import useCopyToClipboard from 'sentry/utils/useCopyToClipboard';
import {useLocation} from 'sentry/utils/useLocation';
import useOrganization from 'sentry/utils/useOrganization';
import useProjectFromId from 'sentry/utils/useProjectFromId';
+import useProjects from 'sentry/utils/useProjects';
import CellAction, {
Actions,
ActionTriggerType,
@@ -36,6 +38,7 @@ import {
import type {TraceItemDetailsResponse} from 'sentry/views/explore/hooks/useTraceItemDetails';
import {useFetchTraceItemDetailsOnHover} from 'sentry/views/explore/hooks/useTraceItemDetails';
import {
+ AlwaysPresentLogFields,
DEFAULT_TRACE_ITEM_HOVER_TIMEOUT,
DEFAULT_TRACE_ITEM_HOVER_TIMEOUT_WITH_AUTO_REFRESH,
HiddenLogDetailFields,
@@ -149,6 +152,7 @@ export const LogRowContent = memo(function LogRowContent({
const location = useLocation();
const organization = useOrganization();
const fields = useQueryParamsFields();
+ const projects = useProjects();
const autorefreshEnabled = useLogsAutoRefreshEnabled();
const setAutorefresh = useSetLogsAutoRefresh();
@@ -227,9 +231,9 @@ export const LogRowContent = memo(function LogRowContent({
const severityNumber = dataRow[OurLogKnownFieldKey.SEVERITY_NUMBER];
const severityText = dataRow[OurLogKnownFieldKey.SEVERITY];
- const project = useProjectFromId({
- project_id: '' + dataRow[OurLogKnownFieldKey.PROJECT_ID],
- });
+ const projectId: (typeof AlwaysPresentLogFields)[1] =
+ dataRow[OurLogKnownFieldKey.PROJECT_ID];
+ const project = projects.projects.find(p => p.id === '' + projectId);
const projectSlug = project?.slug ?? '';
const level = getLogSeverityLevel(
@@ -335,6 +339,7 @@ export const LogRowContent = memo(function LogRowContent({
{chevronIcon}
)}
+ {project ? : null}
{fields?.map(field => {