There are 4 ways of creating object outlines in Blender:
- Fresnel effect using a shader
- Procedural geometric outline
- Grease pencil
Currently I don't think it's possible to generate freestyle lines in viewport. The other 3 methods however, can generate outlines in viewport.
Fresnel is a shader effect and is very fast to compute once the shader is compiled. It produces good enough results on curved surfaces, but flat or near-flat surfaces produce horrible results. In addition, it's difficult to customize it beyond it's color.
Procedural geometric outline is a fancy name for solidify method. Add a solidify modifier to the object and invert it's normals. Change the material index to black emission. You can then play with the shape of the outline with a displacement modifier and change the vertex weight if you are experiencing any graphical glitches. Clipping however is still quite common and it effectively doubles your poly-count.
If you are making an outline for a static object, you can try the method used by Janina Gerards. The method involves duplicating the object, deleting it's faces and possibly vertices and converting the remaining edges to grease pencil. You can find it here:
Alternatively, in Blender 2.93 there is a new modifier called Line Art that automatically generates grease pencil strokes in your scene. This Line art modifier feels like a solid replacement for Freestyle, because grease pencil can be customized in a similar fashion to Freestyle linesets (color, thickness, noise, type of edge, selected objects). It also supports face clipping another face, unlike freestyle.
I did not stress test the line art yet, just played with it for a while, so I don't know how it behaves with high polycounts (something that freestyle struggles with). I just know that the strokes are generated only from camera view, so the result will look horrible if you just move in the viewport. The strokes will look fine only if you are looking through the scene camera.
Scene setup: 3 monkeys and each has 1 cube in it's head. All monkeys have a basic toon shader. First image is a final render, second image is viewport snap.
From left to right: Fresnel, Line art modifier, Solidify modifier