StepKit for Apple platforms
In development · latest 0.19.0 · 4 Aug 2026

STEP files, rendered
natively.

StepKit is a from-scratch, pure-Swift STEP (ISO 10303) loader, B-rep geometry kernel, watertight tessellator, Metal viewer — and now a STEP writer — with no third-party CAD kernels, App-Store-shippable. It reads CAD assemblies with their colours, structure and PMI, turns them into clean watertight meshes, and writes STEP back out.

Pure Swift · no LGPL On-device · App Store-ready Watertight meshes
A STEP assembly loaded by StepKit — coloured parts (plate, brackets, rod, bolts, nut) placed at their assembly transforms and rendered with Metal.

AS1 assembly · colours, structure, per-part placement

Status

In active development.

Measured on a 451-file test corpus spanning 25+ CAD writers (SolidWorks, Onshape, Fusion 360, FreeCAD, NIST suites, …) that deliberately includes torture tests — real-world files score better. These numbers move as the kernel matures: the latest release is 0.19.0 (4 Aug 2026) — see the full changelog.

90%
corpus visually clean · 362/451 watertight
25+
CAD writers covered (AP203 / 214 / 242)
0
third-party CAD kernels
STEP·STL·OBJ·glTF
export formats
What it does

A complete STEP pipeline, written from scratch in Swift.

Parse → resolve B-rep → tessellate to a watertight mesh → render with Metal — and back out to STEP. Colours, assemblies, PMI and interchange formats included.

Pure-Swift STEP loader

ISO 10303-21 parser + resolved B-rep kernel for AP203 / AP214 / AP242. No third-party CAD kernels, no LGPL, App-Store-shippable.

Watertight tessellation

Every edge discretized once and shared, so adjacent faces meet on bit-identical points — closed, manifold solids by construction.

Metal rendering

On-device GPU rendering with runtime-compiled shaders — no offline toolchain. Headless PNG or an interactive viewer.

Colours & materials

STYLED_ITEM → COLOUR_RGB resolved per face (body base colour plus per-face overrides) and rendered — not one grey blob.

Assemblies

Product / assembly tree with names, per-part show/hide, and per-occurrence transforms — repeated parts placed where they belong.

Import & export

Read STEP and glTF; write STL, OBJ, binary glTF (.glb) — and STEP itself. Take a CAD model anywhere on Apple platforms.

STEP writer

Serialize a model back to Part 21 — geometry, topology, colours and assembly structure. Round-trip verified on a 400+ file corpus; output validated against the ISO EXPRESS schemas and read by OCCT bit-identically.

PMI / GD&T

Graphical annotation polylines plus machine-readable semantic PMI — dimensions with tolerance bands, geometric tolerances, datums — validated against the NIST MBE test suite.

Last-resort repair

When a file can't be closed by construction, an opt-in volumetric pass forces it into a guaranteed watertight solid — accepting a change of shape, and flagging honestly when the result strays from the real geometry.

Edge overlays

Real CAD edges, not mesh creases: shared analytic polylines that sit exactly on the shaded surface, each classified sharp, tangent, seam or boundary — so a viewer can draw crisp outlines and hide fillet blends.

iPad, iPhone — and Linux

Pure Swift with cross-platform Metal: the libraries compile for iOS, iPadOS and macOS, and the parser, kernel and writer build on Linux too — for server-side conversion or a Linux CI leg. Every build is CI-verified.

Async, honest, fuzz-tested

Cancellable async load & tessellate. Every degradation is a typed diagnostic, never a silent hole. Malformed input is fuzz-tested — hostile files degrade gracefully.

A coloured push-button part loaded from STEP and rendered by StepKit — red cap, grey body, with crease-aware shading.

Per-face STEP colours and crease-aware normals, rendered on-device

FAQ

Questions about StepKit

What is StepKit?

StepKit is a from-scratch, pure-Swift STEP (ISO 10303) toolkit for Apple platforms — a Part 21 loader, resolved B-rep geometry kernel, watertight tessellator, Metal viewer and STEP writer. It turns CAD STEP files into clean, closed meshes you can render and export on iOS, iPadOS and macOS.

Which STEP versions does it support?

The AP203, AP214 and AP242 application protocols. The loader is schema-agnostic — it resolves entities rather than schema names — so files from many other STEP flavours load too. It reads planes, cylinders, cones, spheres, tori, surfaces of revolution and extrusion, and rational B-spline surfaces, plus lines, circles, ellipses, conics and B-spline curves.

Does StepKit use a third-party CAD kernel like OpenCASCADE?

No. Everything — the parser, the B-rep kernel, the tessellator and the writer — is written from scratch in Swift with no third-party CAD kernel and no LGPL code, which is why it is App-Store-shippable.

Does StepKit run on Linux or on a server?

Yes, for the core. StepParser and StepKernel — parsing, the B-rep model, tessellation, mesh repair and the STEP writer — have no Apple-framework dependency and build on Linux; CI compiles and tests them in a Swift 6.1 container on every change. Only the Metal rendering layer is Apple-only. So batch conversion, validation or export can run server-side, while rendering stays on Apple platforms.

Can it run natively on iPad, iPhone and in an App Store app?

Yes. The libraries declare iOS 17 and are verified by CI to compile for iOS/iPadOS (arm64) on every build — no macOS-only API in any library target, and Metal rendering via cross-platform MTKView with runtime-compiled shaders (no offline toolchain). It is pure Swift with no licensing that would block App Store distribution. An iOS app links the StepKit libraries directly.

Are the meshes watertight?

By construction: each edge is discretized once and shared, so adjacent faces meet on bit-identical points, yielding closed manifold solids. On a 451-file test corpus spanning 25+ CAD writers, about 90% render visually clean and 362 are fully watertight; every degradation is reported as a typed diagnostic rather than a silent hole.

Can StepKit write STEP files, not just read them?

Yes. It serializes a model back to STEP (Part 21) — geometry, topology, per-face colours and assembly structure — and also exports STL, OBJ and binary glTF. The STEP writer is round-trip verified across the corpus, validated against the ISO EXPRESS schemas, and OpenCASCADE reads its output back bit-identically.

Does it read colours, assemblies and PMI?

Yes. It resolves per-face colours, the full product/assembly tree with per-occurrence transforms, graphical PMI annotations, and machine-readable semantic PMI — dimensions with tolerance bands, geometric tolerances and datums — validated against the NIST MBE test suite.

Is StepKit available or open source?

StepKit is in active development and not yet publicly available — neither sold nor released for free at this stage. If you need native STEP on Apple platforms, contact Michal Fanta at michal.fanta@gmail.com.

Availability

Not for sale — yet.

StepKit is in active development and isn't publicly available. It is neither sold nor released for free at this stage.

In development
Interested?

If you're building something that needs native STEP on Apple platforms — or you just want to follow along — get in touch and I'll keep you posted.

  • Native iOS / macOS, on-device
  • No third-party CAD kernel, no LGPL
  • Watertight tessellation + Metal rendering
Email michal.fanta@gmail.com