diff --git a/packages/utils/src/schema/retrieveSchema.ts b/packages/utils/src/schema/retrieveSchema.ts
index 62050dca7d..8d00d02f33 100644
--- a/packages/utils/src/schema/retrieveSchema.ts
+++ b/packages/utils/src/schema/retrieveSchema.ts
@@ -323,7 +323,8 @@ export function retrieveSchemaInternal<
     if (ALL_OF_KEY in resolvedSchema) {
       // resolve allOf schemas
       if (expandAllBranches) {
-        return [...(resolvedSchema.allOf as S[])];
+        const { allOf, ...restOfSchema } = resolvedSchema;
+        return [...(allOf as S[]), restOfSchema as S];
       }
       try {
         resolvedSchema = mergeAllOf(resolvedSchema, {
diff --git a/packages/utils/test/schema/retrieveSchemaTest.ts b/packages/utils/test/schema/retrieveSchemaTest.ts
index 5a63222b72..0592413478 100644
--- a/packages/utils/test/schema/retrieveSchemaTest.ts
+++ b/packages/utils/test/schema/retrieveSchemaTest.ts
@@ -688,13 +688,18 @@ export default function retrieveSchemaTest(testValidator: TestValidatorType) {
           expect.any(Error)
         );
       });
-      it('should return allOf as individual schemas when expand all', () => {
+      it('should return allOf and top level schemas when expand all', () => {
         const schema: RJSFSchema = {
+          properties: { test: { type: 'string' } },
           allOf: [{ type: 'string' }, { type: 'boolean' }],
         };
         const rootSchema: RJSFSchema = { definitions: {} };
         const formData = {};
-        expect(retrieveSchemaInternal(testValidator, schema, rootSchema, formData, true)).toEqual(schema.allOf);
+        const { allOf, ...restOfSchema } = schema;
+        expect(retrieveSchemaInternal(testValidator, schema, rootSchema, formData, true)).toEqual([
+          ...allOf!,
+          restOfSchema,
+        ]);
       });
       it('should merge types with $ref in them', () => {
         const schema: RJSFSchema = {